mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-25 22:56:45 +01:00
SmeltingManager cleaning.
This commit is contained in:
parent
c3eaec513b
commit
499411f6a2
@ -1,5 +1,7 @@
|
|||||||
package com.gmail.nossr50.datatypes;
|
package com.gmail.nossr50.datatypes;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@ -12,6 +14,7 @@ import com.gmail.nossr50.mods.datatypes.CustomTool;
|
|||||||
import com.gmail.nossr50.party.Party;
|
import com.gmail.nossr50.party.Party;
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
import com.gmail.nossr50.party.PartyManager;
|
||||||
import com.gmail.nossr50.party.ShareHandler;
|
import com.gmail.nossr50.party.ShareHandler;
|
||||||
|
import com.gmail.nossr50.skills.child.FamilyTree;
|
||||||
import com.gmail.nossr50.skills.utilities.PerksUtils;
|
import com.gmail.nossr50.skills.utilities.PerksUtils;
|
||||||
import com.gmail.nossr50.skills.utilities.SkillTools;
|
import com.gmail.nossr50.skills.utilities.SkillTools;
|
||||||
import com.gmail.nossr50.skills.utilities.SkillType;
|
import com.gmail.nossr50.skills.utilities.SkillType;
|
||||||
@ -67,10 +70,22 @@ public class McMMOPlayer {
|
|||||||
* @param xp Experience amount to process
|
* @param xp Experience amount to process
|
||||||
*/
|
*/
|
||||||
public void beginXpGain(SkillType skillType, int xp) {
|
public void beginXpGain(SkillType skillType, int xp) {
|
||||||
if (xp == 0) {
|
if (xp == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (skillType.isChildSkill()) {
|
||||||
|
Set<SkillType> parentSkills = FamilyTree.getParents(skillType);
|
||||||
|
|
||||||
|
for (SkillType parentSkill : parentSkills) {
|
||||||
|
if (Permissions.skillEnabled(player, parentSkill)) {
|
||||||
|
beginXpGain(parentSkill, xp / parentSkills.size());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Return if the experience has been shared
|
// Return if the experience has been shared
|
||||||
if (party != null && ShareHandler.handleXpShare(xp, this, skillType)) {
|
if (party != null && ShareHandler.handleXpShare(xp, this, skillType)) {
|
||||||
return;
|
return;
|
||||||
|
@ -7,7 +7,6 @@ import org.bukkit.Sound;
|
|||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@ -35,7 +34,6 @@ import com.gmail.nossr50.skills.herbalism.HerbalismManager;
|
|||||||
import com.gmail.nossr50.skills.mining.MiningManager;
|
import com.gmail.nossr50.skills.mining.MiningManager;
|
||||||
import com.gmail.nossr50.skills.repair.Repair;
|
import com.gmail.nossr50.skills.repair.Repair;
|
||||||
import com.gmail.nossr50.skills.repair.Salvage;
|
import com.gmail.nossr50.skills.repair.Salvage;
|
||||||
import com.gmail.nossr50.skills.smelting.Smelting;
|
|
||||||
import com.gmail.nossr50.skills.unarmed.Unarmed;
|
import com.gmail.nossr50.skills.unarmed.Unarmed;
|
||||||
import com.gmail.nossr50.skills.utilities.AbilityType;
|
import com.gmail.nossr50.skills.utilities.AbilityType;
|
||||||
import com.gmail.nossr50.skills.utilities.SkillTools;
|
import com.gmail.nossr50.skills.utilities.SkillTools;
|
||||||
@ -239,7 +237,6 @@ public class BlockListener implements Listener {
|
|||||||
|
|
||||||
String playerName = player.getName();
|
String playerName = player.getName();
|
||||||
BlockState blockState = event.getBlock().getState();
|
BlockState blockState = event.getBlock().getState();
|
||||||
ItemStack heldItem = player.getItemInHand();
|
|
||||||
|
|
||||||
if (SkillManagerStore.getInstance().getHerbalismManager(playerName).canUseHylianLuck()) {
|
if (SkillManagerStore.getInstance().getHerbalismManager(playerName).canUseHylianLuck()) {
|
||||||
if (SkillManagerStore.getInstance().getHerbalismManager(playerName).processHylianLuck(blockState)) {
|
if (SkillManagerStore.getInstance().getHerbalismManager(playerName).processHylianLuck(blockState)) {
|
||||||
@ -247,8 +244,8 @@ public class BlockListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (BlockChecks.affectedByFluxMining(blockState) && ItemChecks.isPickaxe(heldItem) && !heldItem.containsEnchantment(Enchantment.SILK_TOUCH) && Permissions.fluxMining(player) && !mcMMO.placeStore.isTrue(blockState)) {
|
else if (SkillManagerStore.getInstance().getSmeltingManager(playerName).canUseFluxMining(blockState)) {
|
||||||
if (Smelting.processFluxMining(blockState, player)) {
|
if (SkillManagerStore.getInstance().getSmeltingManager(playerName).processFluxMining(blockState)) {
|
||||||
blockState.update(true);
|
blockState.update(true);
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package com.gmail.nossr50.listeners;
|
package com.gmail.nossr50.listeners;
|
||||||
|
|
||||||
import org.bukkit.block.Block;
|
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
import org.bukkit.block.Furnace;
|
import org.bukkit.block.Furnace;
|
||||||
|
import org.bukkit.entity.HumanEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@ -13,15 +13,18 @@ import org.bukkit.event.inventory.FurnaceSmeltEvent;
|
|||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||||
import org.bukkit.event.inventory.InventoryOpenEvent;
|
import org.bukkit.event.inventory.InventoryOpenEvent;
|
||||||
import org.bukkit.event.inventory.InventoryType;
|
|
||||||
import org.bukkit.inventory.FurnaceInventory;
|
import org.bukkit.inventory.FurnaceInventory;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.datatypes.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.McMMOPlayer;
|
||||||
import com.gmail.nossr50.skills.SkillManagerStore;
|
import com.gmail.nossr50.skills.SkillManagerStore;
|
||||||
import com.gmail.nossr50.skills.utilities.SkillTools;
|
import com.gmail.nossr50.skills.utilities.SkillTools;
|
||||||
|
import com.gmail.nossr50.skills.utilities.SkillType;
|
||||||
import com.gmail.nossr50.util.ItemChecks;
|
import com.gmail.nossr50.util.ItemChecks;
|
||||||
|
import com.gmail.nossr50.util.Misc;
|
||||||
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.Users;
|
import com.gmail.nossr50.util.Users;
|
||||||
|
|
||||||
public class InventoryListener implements Listener{
|
public class InventoryListener implements Listener{
|
||||||
@ -33,37 +36,47 @@ public class InventoryListener implements Listener{
|
|||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onInventoryOpen(InventoryOpenEvent event) {
|
public void onInventoryOpen(InventoryOpenEvent event) {
|
||||||
InventoryType inventoryType = event.getInventory().getType();
|
HumanEntity player = event.getPlayer();
|
||||||
|
|
||||||
if (inventoryType == InventoryType.FURNACE) {
|
if (Misc.isNPCEntity(player)) {
|
||||||
FurnaceInventory inventory = (FurnaceInventory) event.getInventory();
|
return;
|
||||||
Furnace furnace = inventory.getHolder();
|
}
|
||||||
|
|
||||||
|
Inventory inventory = event.getInventory();
|
||||||
|
|
||||||
|
if (inventory instanceof FurnaceInventory) {
|
||||||
|
Furnace furnace = (Furnace) inventory.getHolder();
|
||||||
|
|
||||||
if (furnace == null) {
|
if (furnace == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Block furnaceBlock = furnace.getBlock();
|
BlockState furnaceBlock = furnace.getBlock().getState();
|
||||||
|
|
||||||
if (furnace.getBurnTime() == 0 && !plugin.furnaceIsTracked(furnaceBlock)) {
|
if (furnace.getBurnTime() == 0 && !plugin.furnaceIsTracked(furnaceBlock)) {
|
||||||
plugin.addToOpenFurnaceTracker(furnaceBlock, event.getPlayer().getName());
|
plugin.addToOpenFurnaceTracker(furnaceBlock, player.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onInventoryClose(InventoryCloseEvent event) {
|
public void onInventoryClose(InventoryCloseEvent event) {
|
||||||
InventoryType inventoryType = event.getInventory().getType();
|
HumanEntity player = event.getPlayer();
|
||||||
|
|
||||||
if (inventoryType == InventoryType.FURNACE) {
|
if (Misc.isNPCEntity(player)) {
|
||||||
FurnaceInventory inventory = (FurnaceInventory) event.getInventory();
|
return;
|
||||||
Furnace furnace = inventory.getHolder();
|
}
|
||||||
|
|
||||||
|
Inventory inventory = event.getInventory();
|
||||||
|
|
||||||
|
if (inventory instanceof FurnaceInventory) {
|
||||||
|
Furnace furnace = (Furnace) inventory.getHolder();
|
||||||
|
|
||||||
if (furnace == null) {
|
if (furnace == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Block furnaceBlock = furnace.getBlock();
|
BlockState furnaceBlock = furnace.getBlock().getState();
|
||||||
|
|
||||||
if (furnace.getBurnTime() == 0 && plugin.furnaceIsTracked(furnaceBlock)) {
|
if (furnace.getBurnTime() == 0 && plugin.furnaceIsTracked(furnaceBlock)) {
|
||||||
plugin.removeFromFurnaceTracker(furnaceBlock);
|
plugin.removeFromFurnaceTracker(furnaceBlock);
|
||||||
@ -73,18 +86,20 @@ public class InventoryListener implements Listener{
|
|||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onFurnaceBurnEvent(FurnaceBurnEvent event) {
|
public void onFurnaceBurnEvent(FurnaceBurnEvent event) {
|
||||||
Block furnaceBlock = event.getBlock();
|
BlockState furnaceBlock = event.getBlock().getState();
|
||||||
BlockState blockState = furnaceBlock.getState();
|
|
||||||
|
if (furnaceBlock instanceof Furnace) {
|
||||||
|
ItemStack smelting = ((Furnace) furnaceBlock).getInventory().getSmelting();
|
||||||
|
|
||||||
if (blockState instanceof Furnace) {
|
|
||||||
FurnaceInventory inventory = ((Furnace) blockState).getInventory();
|
|
||||||
ItemStack smelting = inventory.getSmelting();
|
|
||||||
|
|
||||||
if (plugin.furnaceIsTracked(furnaceBlock) && smelting != null && ItemChecks.isSmeltable(smelting)) {
|
if (plugin.furnaceIsTracked(furnaceBlock) && smelting != null && ItemChecks.isSmeltable(smelting)) {
|
||||||
Player player = plugin.getFurnacePlayer(furnaceBlock);
|
Player player = plugin.getFurnacePlayer(furnaceBlock);
|
||||||
|
|
||||||
if (player != null) {
|
if (!Misc.isNPCEntity(player)) {
|
||||||
SkillManagerStore.getInstance().getSmeltingManager(player.getName()).fuelEfficiency(event);
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Permissions.fuelEfficiency(player)) {
|
||||||
|
event.setBurnTime(SkillManagerStore.getInstance().getSmeltingManager(player.getName()).fuelEfficiency(event.getBurnTime()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -92,18 +107,20 @@ public class InventoryListener implements Listener{
|
|||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onFurnaceSmeltEvent(FurnaceSmeltEvent event) {
|
public void onFurnaceSmeltEvent(FurnaceSmeltEvent event) {
|
||||||
Block furnaceBlock = event.getBlock();
|
BlockState furnaceBlock = event.getBlock().getState();
|
||||||
BlockState blockState = furnaceBlock.getState();
|
|
||||||
|
|
||||||
if (blockState instanceof Furnace) {
|
if (furnaceBlock instanceof Furnace) {
|
||||||
FurnaceInventory inventory = ((Furnace) blockState).getInventory();
|
ItemStack smelting = ((Furnace) furnaceBlock).getInventory().getSmelting();
|
||||||
ItemStack smelting = inventory.getSmelting();
|
|
||||||
|
|
||||||
if (plugin.furnaceIsTracked(furnaceBlock) && smelting != null && ItemChecks.isSmeltable(smelting)) {
|
if (plugin.furnaceIsTracked(furnaceBlock) && smelting != null && ItemChecks.isSmeltable(smelting)) {
|
||||||
Player player = plugin.getFurnacePlayer(furnaceBlock);
|
Player player = plugin.getFurnacePlayer(furnaceBlock);
|
||||||
|
|
||||||
if (player != null) {
|
if (!Misc.isNPCEntity(player)) {
|
||||||
SkillManagerStore.getInstance().getSmeltingManager(player.getName()).smeltProcessing(event);
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Permissions.skillEnabled(player, SkillType.SMELTING)) {
|
||||||
|
SkillManagerStore.getInstance().getSmeltingManager(player.getName()).smeltProcessing(event.getSource().getType(), event.getResult());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -111,18 +128,16 @@ public class InventoryListener implements Listener{
|
|||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onFurnaceExtractEvent(FurnaceExtractEvent event) {
|
public void onFurnaceExtractEvent(FurnaceExtractEvent event) {
|
||||||
Block furnaceBlock = event.getBlock();
|
BlockState furnaceBlock = event.getBlock().getState();
|
||||||
BlockState blockState = furnaceBlock.getState();
|
|
||||||
|
|
||||||
if (blockState instanceof Furnace) {
|
if (furnaceBlock instanceof Furnace) {
|
||||||
FurnaceInventory inventory = ((Furnace) blockState).getInventory();
|
ItemStack result = ((Furnace) furnaceBlock).getInventory().getResult();
|
||||||
ItemStack result = inventory.getResult();
|
|
||||||
|
|
||||||
if (plugin.furnaceIsTracked(furnaceBlock) && result != null && ItemChecks.isSmelted(result)) {
|
if (plugin.furnaceIsTracked(furnaceBlock) && result != null && ItemChecks.isSmelted(result)) {
|
||||||
McMMOPlayer mcMMOPlayer = Users.getPlayer(event.getPlayer());
|
McMMOPlayer mcMMOPlayer = Users.getPlayer(event.getPlayer());
|
||||||
|
|
||||||
if (mcMMOPlayer.getPlayer().equals(plugin.getFurnacePlayer(furnaceBlock))) {
|
if (mcMMOPlayer.getPlayer().equals(plugin.getFurnacePlayer(furnaceBlock))) {
|
||||||
SkillManagerStore.getInstance().getSmeltingManager(event.getPlayer().getName()).vanillaXPBoost(event);
|
SkillManagerStore.getInstance().getSmeltingManager(event.getPlayer().getName()).vanillaXPBoost(event.getExpToDrop());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ import net.shatteredlands.shatt.backup.ZipLibrary;
|
|||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.BlockState;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
@ -66,7 +66,7 @@ public class mcMMO extends JavaPlugin {
|
|||||||
private final WorldListener worldListener = new WorldListener();
|
private final WorldListener worldListener = new WorldListener();
|
||||||
|
|
||||||
private HashMap<Integer, String> tntTracker = new HashMap<Integer, String>();
|
private HashMap<Integer, String> tntTracker = new HashMap<Integer, String>();
|
||||||
private HashMap<Block, String> furnaceTracker = new HashMap<Block, String>();
|
private HashMap<BlockState, String> furnaceTracker = new HashMap<BlockState, String>();
|
||||||
|
|
||||||
public static mcMMO p;
|
public static mcMMO p;
|
||||||
|
|
||||||
@ -442,19 +442,19 @@ public class mcMMO extends JavaPlugin {
|
|||||||
tntTracker.remove(tntID);
|
tntTracker.remove(tntID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addToOpenFurnaceTracker(Block furnace, String playerName) {
|
public void addToOpenFurnaceTracker(BlockState furnace, String playerName) {
|
||||||
furnaceTracker.put(furnace, playerName);
|
furnaceTracker.put(furnace, playerName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean furnaceIsTracked(Block furnace) {
|
public boolean furnaceIsTracked(BlockState furnace) {
|
||||||
return furnaceTracker.containsKey(furnace);
|
return furnaceTracker.containsKey(furnace);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeFromFurnaceTracker(Block furnace) {
|
public void removeFromFurnaceTracker(BlockState furnace) {
|
||||||
furnaceTracker.remove(furnace);
|
furnaceTracker.remove(furnace);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Player getFurnacePlayer(Block furnace) {
|
public Player getFurnacePlayer(BlockState furnace) {
|
||||||
return getServer().getPlayer(furnaceTracker.get(furnace));
|
return getServer().getPlayer(furnaceTracker.get(furnace));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
package com.gmail.nossr50.skills.smelting;
|
|
||||||
|
|
||||||
import org.bukkit.event.inventory.FurnaceBurnEvent;
|
|
||||||
|
|
||||||
public class FuelEfficiencyEventHandler {
|
|
||||||
private SmeltingManager manager;
|
|
||||||
private FurnaceBurnEvent event;
|
|
||||||
private double burnModifier;
|
|
||||||
|
|
||||||
protected FuelEfficiencyEventHandler(SmeltingManager manager, FurnaceBurnEvent event) {
|
|
||||||
this.manager = manager;
|
|
||||||
this.event = event;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void calculateBurnModifier() {
|
|
||||||
this.burnModifier = 1 + (((double) manager.getSkillLevel() / Smelting.burnModifierMaxLevel) * Smelting.burnTimeMultiplier);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void modifyBurnTime() {
|
|
||||||
int burnTime = event.getBurnTime();
|
|
||||||
event.setBurnTime((int)(burnTime * burnModifier));
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,57 +0,0 @@
|
|||||||
package com.gmail.nossr50.skills.smelting;
|
|
||||||
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
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.McMMOPlayer;
|
|
||||||
import com.gmail.nossr50.skills.child.FamilyTree;
|
|
||||||
import com.gmail.nossr50.skills.utilities.SkillTools;
|
|
||||||
import com.gmail.nossr50.skills.utilities.SkillType;
|
|
||||||
import com.gmail.nossr50.util.Permissions;
|
|
||||||
|
|
||||||
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 = SkillTools.skillCheck(manager.getSkillLevel(), Smelting.secondSmeltMaxLevel);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void handleXPGain() {
|
|
||||||
Material sourceType = event.getSource().getType();
|
|
||||||
int xp = Config.getInstance().getXp(SkillType.SMELTING, sourceType);
|
|
||||||
|
|
||||||
if (sourceType == Material.GLOWING_REDSTONE_ORE) {
|
|
||||||
xp = Config.getInstance().getXp(SkillType.SMELTING, Material.REDSTONE_ORE);
|
|
||||||
}
|
|
||||||
|
|
||||||
McMMOPlayer mcMMOPlayer = manager.getMcMMOPlayer();
|
|
||||||
Player player = mcMMOPlayer.getPlayer();
|
|
||||||
|
|
||||||
Set<SkillType> parentSkills = FamilyTree.getParents(SkillType.SMELTING);
|
|
||||||
for (SkillType parentSkill : parentSkills) {
|
|
||||||
if (Permissions.skillEnabled(player, parentSkill)) {
|
|
||||||
mcMMOPlayer.beginXpGain(parentSkill, xp / parentSkills.size());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void handleBonusSmelts() {
|
|
||||||
ItemStack result = event.getResult();
|
|
||||||
|
|
||||||
result.setAmount(result.getAmount() + 1);
|
|
||||||
event.setResult(result);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,20 +1,44 @@
|
|||||||
package com.gmail.nossr50.skills.smelting;
|
package com.gmail.nossr50.skills.smelting;
|
||||||
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.BlockState;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.skills.mining.Mining;
|
|
||||||
import com.gmail.nossr50.skills.utilities.SkillTools;
|
|
||||||
import com.gmail.nossr50.skills.utilities.SkillType;
|
import com.gmail.nossr50.skills.utilities.SkillType;
|
||||||
import com.gmail.nossr50.util.Misc;
|
|
||||||
import com.gmail.nossr50.util.Permissions;
|
|
||||||
|
|
||||||
public class Smelting {
|
public class Smelting {
|
||||||
|
// The order of the values is extremely important, a few methods depend on it to work properly
|
||||||
|
protected enum Tier {
|
||||||
|
FIVE(5) {
|
||||||
|
@Override public int getLevel() {return AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank5Level();}
|
||||||
|
@Override public int getVanillaXPBoostModifier() {return AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank5Multiplier();}},
|
||||||
|
FOUR(4) {
|
||||||
|
@Override public int getLevel() {return AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank4Level();}
|
||||||
|
@Override public int getVanillaXPBoostModifier() {return AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank4Multiplier();}},
|
||||||
|
THREE(3) {
|
||||||
|
@Override public int getLevel() {return AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank3Level();}
|
||||||
|
@Override public int getVanillaXPBoostModifier() {return AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank3Multiplier();}},
|
||||||
|
TWO(2) {
|
||||||
|
@Override public int getLevel() {return AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank2Level();}
|
||||||
|
@Override public int getVanillaXPBoostModifier() {return AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank2Multiplier();}},
|
||||||
|
ONE(1) {
|
||||||
|
@Override public int getLevel() {return AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank1Level();}
|
||||||
|
@Override public int getVanillaXPBoostModifier() {return AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank1Multiplier();}};
|
||||||
|
|
||||||
|
int numerical;
|
||||||
|
|
||||||
|
private Tier(int numerical) {
|
||||||
|
this.numerical = numerical;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int toNumerical() {
|
||||||
|
return numerical;
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract protected int getLevel();
|
||||||
|
abstract protected int getVanillaXPBoostModifier();
|
||||||
|
}
|
||||||
|
|
||||||
public static int burnModifierMaxLevel = AdvancedConfig.getInstance().getBurnModifierMaxLevel();
|
public static int burnModifierMaxLevel = AdvancedConfig.getInstance().getBurnModifierMaxLevel();
|
||||||
public static double burnTimeMultiplier = AdvancedConfig.getInstance().getBurnTimeMultiplier();
|
public static double burnTimeMultiplier = AdvancedConfig.getInstance().getBurnTimeMultiplier();
|
||||||
|
|
||||||
@ -24,60 +48,13 @@ public class Smelting {
|
|||||||
public static int fluxMiningUnlockLevel = AdvancedConfig.getInstance().getFluxMiningUnlockLevel();
|
public static int fluxMiningUnlockLevel = AdvancedConfig.getInstance().getFluxMiningUnlockLevel();
|
||||||
public static double fluxMiningChance = AdvancedConfig.getInstance().getFluxMiningChance();
|
public static double fluxMiningChance = AdvancedConfig.getInstance().getFluxMiningChance();
|
||||||
|
|
||||||
public static int vanillaXPBoostRank1Level = AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank1Level();
|
protected static int getResourceXp(Material resourceType) {
|
||||||
public static int vanillaXPBoostRank2Level = AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank2Level();
|
int xp = Config.getInstance().getXp(SkillType.SMELTING, resourceType);
|
||||||
public static int vanillaXPBoostRank3Level = AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank3Level();
|
|
||||||
public static int vanillaXPBoostRank4Level = AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank4Level();
|
|
||||||
public static int vanillaXPBoostRank5Level = AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank5Level();
|
|
||||||
|
|
||||||
public static int vanillaXPBoostRank1Multiplier = AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank1Multiplier();
|
if (resourceType == Material.GLOWING_REDSTONE_ORE) {
|
||||||
public static int vanillaXPBoostRank2Multiplier = AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank2Multiplier();
|
xp = Config.getInstance().getXp(SkillType.SMELTING, Material.REDSTONE_ORE);
|
||||||
public static int vanillaXPBoostRank3Multiplier = AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank3Multiplier();
|
|
||||||
public static int vanillaXPBoostRank4Multiplier = AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank4Multiplier();
|
|
||||||
public static int vanillaXPBoostRank5Multiplier = AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank5Multiplier();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Process the Flux Mining ability.
|
|
||||||
*
|
|
||||||
* @param blockState The {@link BlockState} to check ability activation for
|
|
||||||
* @param player The {@link Player} using this ability
|
|
||||||
* @return true if the ability was successful, false otherwise
|
|
||||||
*/
|
|
||||||
public static boolean processFluxMining(BlockState blockState, Player player) {
|
|
||||||
if (SkillTools.unlockLevelReached(player, SkillType.SMELTING, fluxMiningUnlockLevel) && SkillTools.activationSuccessful(player, SkillType.SMELTING, fluxMiningChance)) {
|
|
||||||
ItemStack item = null;
|
|
||||||
|
|
||||||
switch (blockState.getType()) {
|
|
||||||
case IRON_ORE:
|
|
||||||
item = new ItemStack(Material.IRON_INGOT);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GOLD_ORE:
|
|
||||||
item = new ItemStack(Material.GOLD_INGOT);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Location location = blockState.getLocation();
|
|
||||||
|
|
||||||
Misc.dropItem(location, item);
|
|
||||||
|
|
||||||
if (Permissions.doubleDrops(player, SkillType.SMELTING) && SkillTools.activationSuccessful(player, SkillType.SMELTING, Mining.doubleDropsMaxChance, Mining.doubleDropsMaxLevel)) {
|
|
||||||
Misc.dropItem(location, item);
|
|
||||||
}
|
|
||||||
|
|
||||||
blockState.setRawData((byte) 0x0);
|
|
||||||
blockState.setType(Material.AIR);
|
|
||||||
player.sendMessage(LocaleLoader.getString("Smelting.FluxMining.Success"));
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return xp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package com.gmail.nossr50.skills.smelting;
|
package com.gmail.nossr50.skills.smelting;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.skills.SkillCommand;
|
import com.gmail.nossr50.skills.SkillCommand;
|
||||||
|
import com.gmail.nossr50.skills.SkillManagerStore;
|
||||||
import com.gmail.nossr50.skills.utilities.SkillType;
|
import com.gmail.nossr50.skills.utilities.SkillType;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
|
||||||
@ -11,7 +13,7 @@ public class SmeltingCommand extends SkillCommand {
|
|||||||
private String secondSmeltChanceLucky;
|
private String secondSmeltChanceLucky;
|
||||||
private String fluxMiningChance;
|
private String fluxMiningChance;
|
||||||
private String fluxMiningChanceLucky;
|
private String fluxMiningChanceLucky;
|
||||||
private String vanillaXPModifier;
|
private int vanillaXPModifier;
|
||||||
|
|
||||||
private boolean canFuelEfficiency;
|
private boolean canFuelEfficiency;
|
||||||
private boolean canSecondSmelt;
|
private boolean canSecondSmelt;
|
||||||
@ -38,21 +40,7 @@ public class SmeltingCommand extends SkillCommand {
|
|||||||
fluxMiningChanceLucky = fluxMiningStrings[1];
|
fluxMiningChanceLucky = fluxMiningStrings[1];
|
||||||
|
|
||||||
//VANILLA XP BOOST
|
//VANILLA XP BOOST
|
||||||
if (skillValue >= Smelting.vanillaXPBoostRank5Level) {
|
vanillaXPModifier = SkillManagerStore.getInstance().getSmeltingManager(player.getName()).getVanillaXpMultiplier();
|
||||||
vanillaXPModifier = String.valueOf(Smelting.vanillaXPBoostRank5Multiplier);
|
|
||||||
}
|
|
||||||
else if (skillValue >= Smelting.vanillaXPBoostRank4Level) {
|
|
||||||
vanillaXPModifier = String.valueOf(Smelting.vanillaXPBoostRank4Multiplier);
|
|
||||||
}
|
|
||||||
else if (skillValue >= Smelting.vanillaXPBoostRank3Level) {
|
|
||||||
vanillaXPModifier = String.valueOf(Smelting.vanillaXPBoostRank3Multiplier);
|
|
||||||
}
|
|
||||||
else if (skillValue >= Smelting.vanillaXPBoostRank2Level) {
|
|
||||||
vanillaXPModifier = String.valueOf(Smelting.vanillaXPBoostRank2Multiplier);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
vanillaXPModifier = String.valueOf(Smelting.vanillaXPBoostRank1Multiplier);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -110,8 +98,8 @@ public class SmeltingCommand extends SkillCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (canVanillaXPBoost) {
|
if (canVanillaXPBoost) {
|
||||||
if (skillValue < Smelting.vanillaXPBoostRank1Level) {
|
if (skillValue < AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank1Level()) {
|
||||||
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Smelting.Ability.Locked.0", Smelting.vanillaXPBoostRank1Level)));
|
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Smelting.Ability.Locked.0", AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank1Level())));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
player.sendMessage(LocaleLoader.getString("Smelting.Ability.VanillaXPBoost", vanillaXPModifier));
|
player.sendMessage(LocaleLoader.getString("Smelting.Ability.VanillaXPBoost", vanillaXPModifier));
|
||||||
|
@ -1,71 +1,129 @@
|
|||||||
package com.gmail.nossr50.skills.smelting;
|
package com.gmail.nossr50.skills.smelting;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.BlockState;
|
||||||
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.FurnaceBurnEvent;
|
import org.bukkit.event.inventory.FurnaceBurnEvent;
|
||||||
import org.bukkit.event.inventory.FurnaceExtractEvent;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.event.inventory.FurnaceSmeltEvent;
|
|
||||||
|
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.datatypes.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.McMMOPlayer;
|
||||||
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.skills.SkillManager;
|
import com.gmail.nossr50.skills.SkillManager;
|
||||||
|
import com.gmail.nossr50.skills.mining.Mining;
|
||||||
|
import com.gmail.nossr50.skills.smelting.Smelting.Tier;
|
||||||
|
import com.gmail.nossr50.skills.utilities.SkillTools;
|
||||||
import com.gmail.nossr50.skills.utilities.SkillType;
|
import com.gmail.nossr50.skills.utilities.SkillType;
|
||||||
|
import com.gmail.nossr50.util.BlockChecks;
|
||||||
|
import com.gmail.nossr50.util.ItemChecks;
|
||||||
import com.gmail.nossr50.util.Misc;
|
import com.gmail.nossr50.util.Misc;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
|
||||||
public class SmeltingManager extends SkillManager {
|
public class SmeltingManager extends SkillManager {
|
||||||
|
|
||||||
public SmeltingManager(McMMOPlayer mcMMOPlayer) {
|
public SmeltingManager(McMMOPlayer mcMMOPlayer) {
|
||||||
super(mcMMOPlayer, SkillType.SMELTING);
|
super(mcMMOPlayer, SkillType.SMELTING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean canUseFluxMining(BlockState blockState) {
|
||||||
|
Player player = getPlayer();
|
||||||
|
ItemStack heldItem = player.getItemInHand();
|
||||||
|
|
||||||
|
return BlockChecks.affectedByFluxMining(blockState) && ItemChecks.isPickaxe(heldItem) && !heldItem.containsEnchantment(Enchantment.SILK_TOUCH) && Permissions.fluxMining(player) && !mcMMO.placeStore.isTrue(blockState);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean canUseVanillaXpBoost() {
|
||||||
|
Player player = getPlayer();
|
||||||
|
|
||||||
|
return SkillTools.unlockLevelReached(player, skill, Smelting.Tier.ONE.getLevel()) && Permissions.vanillaXpBoost(player, skill);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Process the Flux Mining ability.
|
||||||
|
*
|
||||||
|
* @param blockState The {@link BlockState} to check ability activation for
|
||||||
|
* @return true if the ability was successful, false otherwise
|
||||||
|
*/
|
||||||
|
public boolean processFluxMining(BlockState blockState) {
|
||||||
|
Player player = getPlayer();
|
||||||
|
|
||||||
|
if (SkillTools.unlockLevelReached(player, skill, Smelting.fluxMiningUnlockLevel) && SkillTools.activationSuccessful(player, skill, Smelting.fluxMiningChance)) {
|
||||||
|
ItemStack item = null;
|
||||||
|
|
||||||
|
switch (blockState.getType()) {
|
||||||
|
case IRON_ORE:
|
||||||
|
item = new ItemStack(Material.IRON_INGOT);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GOLD_ORE:
|
||||||
|
item = new ItemStack(Material.GOLD_INGOT);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Location location = blockState.getLocation();
|
||||||
|
|
||||||
|
Misc.dropItem(location, item);
|
||||||
|
|
||||||
|
if (Permissions.doubleDrops(player, skill) && SkillTools.activationSuccessful(player, skill, Mining.doubleDropsMaxChance, Mining.doubleDropsMaxLevel)) {
|
||||||
|
Misc.dropItem(location, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
blockState.setRawData((byte) 0x0);
|
||||||
|
blockState.setType(Material.AIR);
|
||||||
|
player.sendMessage(LocaleLoader.getString("Smelting.FluxMining.Success"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Increases burn time for furnace fuel.
|
* Increases burn time for furnace fuel.
|
||||||
*
|
*
|
||||||
* @param event The {@link FurnaceBurnEvent} to modify.
|
* @param burnTime The initial burn time from the {@link FurnaceBurnEvent}
|
||||||
*/
|
*/
|
||||||
public void fuelEfficiency(FurnaceBurnEvent event) {
|
public int fuelEfficiency(int burnTime) {
|
||||||
Player player = mcMMOPlayer.getPlayer();
|
double burnModifier = 1 + (((double) getSkillLevel() / Smelting.burnModifierMaxLevel) * Smelting.burnTimeMultiplier);
|
||||||
|
|
||||||
if (Misc.isNPCEntity(player) || !Permissions.fuelEfficiency(player)) {
|
return (int) (burnTime * burnModifier);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
FuelEfficiencyEventHandler eventHandler = new FuelEfficiencyEventHandler(this, event);
|
|
||||||
eventHandler.calculateBurnModifier();
|
|
||||||
eventHandler.modifyBurnTime();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void smeltProcessing(FurnaceSmeltEvent event) {
|
public void smeltProcessing(Material resourceType, ItemStack result) {
|
||||||
Player player = mcMMOPlayer.getPlayer();
|
Player player = getPlayer();
|
||||||
|
|
||||||
if (Misc.isNPCEntity(player)) {
|
applyXpGain(Smelting.getResourceXp(resourceType));
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SmeltResourceEventHandler eventHandler = new SmeltResourceEventHandler(this, event);
|
if (Permissions.doubleDrops(player, skill) && SkillTools.activationSuccessful(player, skill, Smelting.secondSmeltMaxChance, Smelting.secondSmeltMaxLevel)) {
|
||||||
|
result.setAmount(result.getAmount() + 1);
|
||||||
if (Permissions.skillEnabled(player, skill)) {
|
|
||||||
eventHandler.handleXPGain();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Permissions.doubleDrops(player, skill)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
eventHandler.calculateSkillModifier();
|
|
||||||
|
|
||||||
double chance = (Smelting.secondSmeltMaxChance / Smelting.secondSmeltMaxLevel) * eventHandler.skillModifier;
|
|
||||||
if (chance > Misc.getRandom().nextInt(activationChance)) {
|
|
||||||
eventHandler.handleBonusSmelts();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void vanillaXPBoost(FurnaceExtractEvent event) {
|
public int vanillaXPBoost(int experience) {
|
||||||
if (getSkillLevel() < Smelting.vanillaXPBoostRank1Level || !Permissions.vanillaXpBoost(mcMMOPlayer.getPlayer(), skill)) {
|
return experience * getVanillaXpMultiplier();
|
||||||
return;
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the vanilla XP multiplier
|
||||||
|
*
|
||||||
|
* @return the vanilla XP multiplier
|
||||||
|
*/
|
||||||
|
protected int getVanillaXpMultiplier() {
|
||||||
|
int skillLevel = getSkillLevel();
|
||||||
|
|
||||||
|
for (Tier tier : Tier.values()) {
|
||||||
|
if (skillLevel >= tier.getLevel()) {
|
||||||
|
return tier.getVanillaXPBoostModifier();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SmeltingVanillaXPEventHandler eventHandler = new SmeltingVanillaXPEventHandler(this, event);
|
return 0;
|
||||||
eventHandler.calculateModifier();
|
|
||||||
eventHandler.modifyVanillaXP();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
package com.gmail.nossr50.skills.smelting;
|
|
||||||
|
|
||||||
import org.bukkit.event.inventory.FurnaceExtractEvent;
|
|
||||||
|
|
||||||
public class SmeltingVanillaXPEventHandler {
|
|
||||||
private SmeltingManager manager;
|
|
||||||
private FurnaceExtractEvent event;
|
|
||||||
private int xpBoostModifier;
|
|
||||||
|
|
||||||
protected SmeltingVanillaXPEventHandler(SmeltingManager manager, FurnaceExtractEvent event) {
|
|
||||||
this.manager = manager;
|
|
||||||
this.event = event;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void calculateModifier() {
|
|
||||||
int skillLevel = manager.getSkillLevel();
|
|
||||||
|
|
||||||
if (skillLevel >= Smelting.vanillaXPBoostRank5Level) {
|
|
||||||
xpBoostModifier = Smelting.vanillaXPBoostRank5Multiplier;
|
|
||||||
}
|
|
||||||
else if (skillLevel >= Smelting.vanillaXPBoostRank4Level) {
|
|
||||||
xpBoostModifier = Smelting.vanillaXPBoostRank4Multiplier;
|
|
||||||
}
|
|
||||||
else if (skillLevel >= Smelting.vanillaXPBoostRank3Level) {
|
|
||||||
xpBoostModifier = Smelting.vanillaXPBoostRank3Multiplier;
|
|
||||||
}
|
|
||||||
else if (skillLevel >= Smelting.vanillaXPBoostRank2Level) {
|
|
||||||
xpBoostModifier = Smelting.vanillaXPBoostRank2Multiplier;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
xpBoostModifier = Smelting.vanillaXPBoostRank1Multiplier;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void modifyVanillaXP() {
|
|
||||||
int xp = event.getExpToDrop();
|
|
||||||
event.setExpToDrop(xp * xpBoostModifier);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user