Merge branch 'master' of github.com:mcMMO-Dev/mcMMO into tridentsxbows

This commit is contained in:
nossr50
2021-03-03 16:36:24 -08:00
18 changed files with 699 additions and 398 deletions

View File

@@ -180,8 +180,10 @@ public class HerbalismManager extends SkillManager {
//TODO: The design of Green Terra needs to change, this is a mess
if(Permissions.greenThumbPlant(getPlayer(), originalBreak.getType())) {
if(!getPlayer().isSneaking()) {
greenThumbActivated = processGreenThumbPlants(originalBreak, blockBreakEvent, isGreenTerraActive());
if(Config.getInstance().isGreenThumbReplantableCrop(originalBreak.getType())) {
if(!getPlayer().isSneaking()) {
greenThumbActivated = processGreenThumbPlants(originalBreak, blockBreakEvent, isGreenTerraActive());
}
}
}
@@ -686,7 +688,7 @@ public class HerbalismManager extends SkillManager {
*/
private boolean processGreenThumbPlants(BlockState blockState, BlockBreakEvent blockBreakEvent, boolean greenTerra) {
if (!ItemUtils.isHoe(blockBreakEvent.getPlayer().getInventory().getItemInMainHand())
&& !ItemUtils.isAxe(blockBreakEvent.getPlayer().getInventory().getItemInMainHand())) {
&& !ItemUtils.isAxe(blockBreakEvent.getPlayer().getInventory().getItemInMainHand())) {
return false;
}

View File

@@ -9,8 +9,12 @@ import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.random.RandomChanceUtil;
import com.gmail.nossr50.util.skills.RankUtils;
import com.gmail.nossr50.util.skills.SkillActivationType;
import org.bukkit.block.Furnace;
import org.bukkit.event.inventory.FurnaceBurnEvent;
import org.bukkit.event.inventory.FurnaceSmeltEvent;
import org.bukkit.inventory.FurnaceInventory;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
public class SmeltingManager extends SkillManager {
public SmeltingManager(OnlineMMOPlayer mmoPlayer) {
@@ -106,19 +110,41 @@ public class SmeltingManager extends SkillManager {
}
}
public ItemStack smeltProcessing(ItemStack smelting, ItemStack result) {
public void smeltProcessing(@NotNull FurnaceSmeltEvent furnaceSmeltEvent, @NotNull Furnace furnace) {
applyXpGain(Smelting.getResourceXp(furnaceSmeltEvent.getSource()), XPGainReason.PVE, XPGainSource.PASSIVE); //Add XP
applyXpGain(Smelting.getResourceXp(smelting), XPGainReason.PVE, XPGainSource.PASSIVE);
processDoubleSmelt(furnaceSmeltEvent, furnace);
}
if (Config.getInstance().getDoubleDropsEnabled(PrimarySkillType.SMELTING, result.getType())
&& isSecondSmeltSuccessful() && result.getAmount() < 64) {
ItemStack newResult = result.clone();
private void processDoubleSmelt(@NotNull FurnaceSmeltEvent furnaceSmeltEvent, @NotNull Furnace furnace) {
ItemStack resultItemStack = furnaceSmeltEvent.getResult();
/*
doubleSmeltCondition should be equal to the max
*/
newResult.setAmount(result.getAmount() + 1);
return newResult;
//Process double smelt
if (Config.getInstance().getDoubleDropsEnabled(PrimarySkillType.SMELTING, resultItemStack.getType())
&& canDoubleSmeltItemStack(furnace) //Effectively two less than max stack size
&& isSecondSmeltSuccessful()) {
ItemStack doubleSmeltStack = resultItemStack.clone(); //TODO: Necessary?
doubleSmeltStack.setAmount(resultItemStack.getAmount() + 1); //Add one
furnaceSmeltEvent.setResult(doubleSmeltStack); //Set result
}
}
return result;
private boolean canDoubleSmeltItemStack(@NotNull Furnace furnace) {
FurnaceInventory furnaceInventory = furnace.getInventory();
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
return resultAmount <= doubleSmeltCondition;
}
public int vanillaXPBoost(int experience) {