mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-25 14:46:46 +01:00
Never expect bukkit API to be intuitive
This commit is contained in:
parent
e38bc14e86
commit
4bd9ee0aa5
@ -117,7 +117,7 @@ public class InventoryListener implements Listener {
|
|||||||
//Profile doesn't exist
|
//Profile doesn't exist
|
||||||
if(offlineProfile != null) {
|
if(offlineProfile != null) {
|
||||||
//Process smelting
|
//Process smelting
|
||||||
offlineProfile.getSmeltingManager().smeltProcessing(event);
|
offlineProfile.getSmeltingManager().smeltProcessing(event, furnace);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,8 +11,10 @@ import com.gmail.nossr50.util.Permissions;
|
|||||||
import com.gmail.nossr50.util.random.RandomChanceUtil;
|
import com.gmail.nossr50.util.random.RandomChanceUtil;
|
||||||
import com.gmail.nossr50.util.skills.RankUtils;
|
import com.gmail.nossr50.util.skills.RankUtils;
|
||||||
import com.gmail.nossr50.util.skills.SkillActivationType;
|
import com.gmail.nossr50.util.skills.SkillActivationType;
|
||||||
|
import org.bukkit.block.Furnace;
|
||||||
import org.bukkit.event.inventory.FurnaceBurnEvent;
|
import org.bukkit.event.inventory.FurnaceBurnEvent;
|
||||||
import org.bukkit.event.inventory.FurnaceSmeltEvent;
|
import org.bukkit.event.inventory.FurnaceSmeltEvent;
|
||||||
|
import org.bukkit.inventory.FurnaceInventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
@ -110,13 +112,13 @@ public class SmeltingManager extends SkillManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void smeltProcessing(@NotNull FurnaceSmeltEvent furnaceSmeltEvent) {
|
public void smeltProcessing(@NotNull FurnaceSmeltEvent furnaceSmeltEvent, @NotNull Furnace furnace) {
|
||||||
applyXpGain(Smelting.getResourceXp(furnaceSmeltEvent.getSource()), XPGainReason.PVE, XPGainSource.PASSIVE); //Add XP
|
applyXpGain(Smelting.getResourceXp(furnaceSmeltEvent.getSource()), XPGainReason.PVE, XPGainSource.PASSIVE); //Add XP
|
||||||
|
|
||||||
processDoubleSmelt(furnaceSmeltEvent);
|
processDoubleSmelt(furnaceSmeltEvent, furnace);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processDoubleSmelt(@NotNull FurnaceSmeltEvent furnaceSmeltEvent) {
|
private void processDoubleSmelt(@NotNull FurnaceSmeltEvent furnaceSmeltEvent, @NotNull Furnace furnace) {
|
||||||
ItemStack resultItemStack = furnaceSmeltEvent.getResult();
|
ItemStack resultItemStack = furnaceSmeltEvent.getResult();
|
||||||
/*
|
/*
|
||||||
doubleSmeltCondition should be equal to the max
|
doubleSmeltCondition should be equal to the max
|
||||||
@ -124,7 +126,7 @@ public class SmeltingManager extends SkillManager {
|
|||||||
|
|
||||||
//Process double smelt
|
//Process double smelt
|
||||||
if (Config.getInstance().getDoubleDropsEnabled(PrimarySkillType.SMELTING, resultItemStack.getType())
|
if (Config.getInstance().getDoubleDropsEnabled(PrimarySkillType.SMELTING, resultItemStack.getType())
|
||||||
&& canDoubleSmeltItemStack(resultItemStack) //Effectively two less than max stack size
|
&& canDoubleSmeltItemStack(furnace) //Effectively two less than max stack size
|
||||||
&& isSecondSmeltSuccessful()) {
|
&& isSecondSmeltSuccessful()) {
|
||||||
|
|
||||||
ItemStack doubleSmeltStack = resultItemStack.clone(); //TODO: Necessary?
|
ItemStack doubleSmeltStack = resultItemStack.clone(); //TODO: Necessary?
|
||||||
@ -133,9 +135,15 @@ public class SmeltingManager extends SkillManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean canDoubleSmeltItemStack(@NotNull ItemStack itemStack) {
|
private boolean canDoubleSmeltItemStack(@NotNull Furnace furnace) {
|
||||||
int resultAmount = itemStack.getAmount(); //Amount before double smelt
|
FurnaceInventory furnaceInventory = furnace.getInventory();
|
||||||
int itemLimit = itemStack.getMaxStackSize();
|
ItemStack furnaceResult = furnaceInventory.getResult();
|
||||||
|
|
||||||
|
if(furnaceResult == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
int resultAmount = furnaceResult.getAmount(); //Amount before double smelt
|
||||||
|
int itemLimit = furnaceResult.getMaxStackSize();
|
||||||
int doubleSmeltCondition = itemLimit - 2; //Don't double smelt if it would cause an illegal stack size
|
int doubleSmeltCondition = itemLimit - 2; //Don't double smelt if it would cause an illegal stack size
|
||||||
|
|
||||||
return resultAmount <= doubleSmeltCondition;
|
return resultAmount <= doubleSmeltCondition;
|
||||||
|
Loading…
Reference in New Issue
Block a user