mirror of
				https://github.com/mcMMO-Dev/mcMMO.git
				synced 2025-11-03 10:33:43 +01:00 
			
		
		
		
	Fixed a bug with herbalism double drops
This commit is contained in:
		@@ -1,5 +1,7 @@
 | 
			
		||||
Version 2.1.100
 | 
			
		||||
    Corrected some mistakes made in the updated Russian locale (thanks myfbone!)
 | 
			
		||||
    Updated Russian locale (thanks myfbone!)
 | 
			
		||||
    Fixed a bug where plants could double drop when the skill was not yet unlocked
 | 
			
		||||
    Fixed a bug where plants ALWAYS double dropped
 | 
			
		||||
    mcnotify command now checks that it's being executed by a player
 | 
			
		||||
    Fixed some concurrency concerns around BleedTasks
 | 
			
		||||
    Fixed an NPE that may occur with random chances on a player without loaded data
 | 
			
		||||
 
 | 
			
		||||
@@ -19,6 +19,7 @@ import com.gmail.nossr50.runnables.skills.HerbalismBlockUpdaterTask;
 | 
			
		||||
import com.gmail.nossr50.skills.SkillManager;
 | 
			
		||||
import com.gmail.nossr50.util.*;
 | 
			
		||||
import com.gmail.nossr50.util.player.NotificationManager;
 | 
			
		||||
import com.gmail.nossr50.util.player.UserManager;
 | 
			
		||||
import com.gmail.nossr50.util.random.RandomChanceSkillStatic;
 | 
			
		||||
import com.gmail.nossr50.util.random.RandomChanceUtil;
 | 
			
		||||
import com.gmail.nossr50.util.skills.RankUtils;
 | 
			
		||||
@@ -164,7 +165,7 @@ public class HerbalismManager extends SkillManager {
 | 
			
		||||
         * Mark blocks for double drops
 | 
			
		||||
         * Be aware of the hacky interactions we are doing with Chorus Plants
 | 
			
		||||
         */
 | 
			
		||||
        checkDoubleDropsOnBrokenPlants(brokenPlants);
 | 
			
		||||
        checkDoubleDropsOnBrokenPlants(blockBreakEvent.getPlayer(), brokenPlants);
 | 
			
		||||
 | 
			
		||||
        //It would take an expensive algorithm to predict which parts of a Chorus Tree will break as a result of root break
 | 
			
		||||
        //So this hacky method is used instead
 | 
			
		||||
@@ -212,7 +213,20 @@ public class HerbalismManager extends SkillManager {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void checkDoubleDropsOnBrokenPlants(Collection<Block> brokenPlants) {
 | 
			
		||||
    /**
 | 
			
		||||
     * Check for double drops on a collection of broken blocks
 | 
			
		||||
     * If a double drop has occurred, it will be marked here for bonus drops
 | 
			
		||||
     * @param player player who broke the blocks
 | 
			
		||||
     * @param brokenPlants the collection of broken plants
 | 
			
		||||
     */
 | 
			
		||||
    public void checkDoubleDropsOnBrokenPlants(Player player, Collection<Block> brokenPlants) {
 | 
			
		||||
 | 
			
		||||
        //Only proceed if skill unlocked and permission enabled
 | 
			
		||||
        if (!RankUtils.hasUnlockedSubskill(player, SubSkillType.HERBALISM_DOUBLE_DROPS)
 | 
			
		||||
                || !Permissions.isSubSkillEnabled(player, SubSkillType.HERBALISM_DOUBLE_DROPS)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        for(Block brokenPlant : brokenPlants) {
 | 
			
		||||
            BlockState brokenPlantState = brokenPlant.getState();
 | 
			
		||||
            BlockData plantData = brokenPlantState.getBlockData();
 | 
			
		||||
@@ -233,8 +247,10 @@ public class HerbalismManager extends SkillManager {
 | 
			
		||||
                    Ageable ageable = (Ageable) plantData;
 | 
			
		||||
 | 
			
		||||
                    if(isAgeableMature(ageable) || isBizarreAgeable(plantData)) {
 | 
			
		||||
                        if(checkDoubleDrop(brokenPlantState)) {
 | 
			
		||||
                            markForBonusDrops(brokenPlantState);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                } else if(checkDoubleDrop(brokenPlantState)) {
 | 
			
		||||
                    //Add metadata to mark this block for double or triple drops
 | 
			
		||||
                    markForBonusDrops(brokenPlantState);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user