mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-29 08:36:45 +01:00
BonusDrops (Double/Triple) are now managed by BonusDropManager
This commit is contained in:
parent
ac67e006d8
commit
5c6f0e8cbf
60
src/main/java/com/gmail/nossr50/config/BonusDropManager.java
Normal file
60
src/main/java/com/gmail/nossr50/config/BonusDropManager.java
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
package com.gmail.nossr50.config;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Manages a collection of whitelisted materials for Double Drops
|
||||||
|
*/
|
||||||
|
public class BonusDropManager implements Unload {
|
||||||
|
|
||||||
|
private HashMap<Material, Boolean> bonusDropWhitelist;
|
||||||
|
|
||||||
|
public BonusDropManager()
|
||||||
|
{
|
||||||
|
bonusDropWhitelist = new HashMap<>();
|
||||||
|
|
||||||
|
//Start by setting all Materials to false to avoid null checks
|
||||||
|
for(Material material : Material.values())
|
||||||
|
{
|
||||||
|
registerMaterial(material, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void unload() {
|
||||||
|
bonusDropWhitelist.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds materials to the bonus drop whitelist
|
||||||
|
* @param materials target material list
|
||||||
|
*/
|
||||||
|
public void addToWhitelist(List<Material> materials)
|
||||||
|
{
|
||||||
|
for(Material material : materials)
|
||||||
|
{
|
||||||
|
registerMaterial(material, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a material to the bonus drop whitelist
|
||||||
|
* @param material target material
|
||||||
|
*/
|
||||||
|
private void registerMaterial(Material material, boolean isWhitelisted) {
|
||||||
|
bonusDropWhitelist.put(material, isWhitelisted);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a material can provide bonus drops
|
||||||
|
* @param material target material
|
||||||
|
* @return true if the material can provide bonus drops
|
||||||
|
*/
|
||||||
|
public boolean isBonusDropWhitelisted(Material material)
|
||||||
|
{
|
||||||
|
return bonusDropWhitelist.get(material);
|
||||||
|
}
|
||||||
|
}
|
@ -78,6 +78,7 @@ public final class ConfigManager {
|
|||||||
|
|
||||||
private RepairableManager repairableManager;
|
private RepairableManager repairableManager;
|
||||||
private SalvageableManager salvageableManager;
|
private SalvageableManager salvageableManager;
|
||||||
|
private BonusDropManager bonusDropManager;
|
||||||
|
|
||||||
/* MOD MANAGERS */
|
/* MOD MANAGERS */
|
||||||
|
|
||||||
@ -89,13 +90,6 @@ public final class ConfigManager {
|
|||||||
|
|
||||||
private ExperienceMapManager experienceMapManager;
|
private ExperienceMapManager experienceMapManager;
|
||||||
|
|
||||||
//private ModManager modManager;
|
|
||||||
|
|
||||||
/*private ToolConfigManager toolConfigManager;
|
|
||||||
private ArmorConfigManager armorConfigManager;
|
|
||||||
private BlockConfigManager blockConfigManager;
|
|
||||||
private EntityConfigManager entityConfigManager;*/
|
|
||||||
|
|
||||||
/* CONFIG INSTANCES */
|
/* CONFIG INSTANCES */
|
||||||
|
|
||||||
private SerializedConfigLoader<ConfigDatabase> configDatabase;
|
private SerializedConfigLoader<ConfigDatabase> configDatabase;
|
||||||
@ -147,14 +141,10 @@ public final class ConfigManager {
|
|||||||
private CoreSkillsConfig coreSkillsConfig;
|
private CoreSkillsConfig coreSkillsConfig;
|
||||||
private SoundConfig soundConfig;
|
private SoundConfig soundConfig;
|
||||||
private RankConfig rankConfig;
|
private RankConfig rankConfig;
|
||||||
// private RepairConfig repairConfig;
|
|
||||||
// private SalvageConfig salvageConfig;
|
|
||||||
|
|
||||||
private HashMap<Material, Integer> partyItemWeights;
|
private HashMap<Material, Integer> partyItemWeights;
|
||||||
private HashMap<PartyFeature, Integer> partyFeatureUnlocks;
|
private HashMap<PartyFeature, Integer> partyFeatureUnlocks;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* CONFIG ERRORS */
|
/* CONFIG ERRORS */
|
||||||
|
|
||||||
private ArrayList<String> configErrors; //Collect errors to whine about to server admins
|
private ArrayList<String> configErrors; //Collect errors to whine about to server admins
|
||||||
@ -258,6 +248,9 @@ public final class ConfigManager {
|
|||||||
partyItemWeights = Maps.newHashMap(configParty.getConfig().getPartyItemShare().getItemShareMap()); //Item Share Weights
|
partyItemWeights = Maps.newHashMap(configParty.getConfig().getPartyItemShare().getItemShareMap()); //Item Share Weights
|
||||||
partyFeatureUnlocks = Maps.newHashMap(configParty.getConfig().getPartyXP().getPartyLevel().getPartyFeatureUnlockMap()); //Party Progression
|
partyFeatureUnlocks = Maps.newHashMap(configParty.getConfig().getPartyXP().getPartyLevel().getPartyFeatureUnlockMap()); //Party Progression
|
||||||
|
|
||||||
|
//Register Bonus Drops
|
||||||
|
registerBonusDrops();
|
||||||
|
|
||||||
//YAML Configs
|
//YAML Configs
|
||||||
mainConfig = new MainConfig();
|
mainConfig = new MainConfig();
|
||||||
|
|
||||||
@ -278,10 +271,6 @@ public final class ConfigManager {
|
|||||||
|
|
||||||
rankConfig = new RankConfig();
|
rankConfig = new RankConfig();
|
||||||
|
|
||||||
// repairConfig = new RepairConfig();
|
|
||||||
|
|
||||||
// salvageConfig = new SalvageConfig();
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Managers
|
* Managers
|
||||||
*/
|
*/
|
||||||
@ -325,6 +314,10 @@ public final class ConfigManager {
|
|||||||
// Handles registration of salvageables
|
// Handles registration of salvageables
|
||||||
salvageableManager = new SalvageableManager(getSalvageables());
|
salvageableManager = new SalvageableManager(getSalvageables());
|
||||||
unloadables.add(salvageableManager);
|
unloadables.add(salvageableManager);
|
||||||
|
|
||||||
|
// Handles registration of bonus drops
|
||||||
|
bonusDropManager = new BonusDropManager();
|
||||||
|
unloadables.add(bonusDropManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -381,6 +374,16 @@ public final class ConfigManager {
|
|||||||
userFiles.add(userFile);
|
userFiles.add(userFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers bonus drops from several skill configs
|
||||||
|
*/
|
||||||
|
public void registerBonusDrops()
|
||||||
|
{
|
||||||
|
bonusDropManager.addToWhitelist(configMining.getBonusDrops());
|
||||||
|
bonusDropManager.addToWhitelist(configHerbalism.getBonusDrops());
|
||||||
|
bonusDropManager.addToWhitelist(configWoodcutting.getBonusDrops());
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GETTER BOILER PLATE
|
* GETTER BOILER PLATE
|
||||||
*/
|
*/
|
||||||
@ -586,6 +589,15 @@ public final class ConfigManager {
|
|||||||
return configSalvage.getConfig();
|
return configSalvage.getConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BonusDropManager getBonusDropManager() {
|
||||||
|
return bonusDropManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isBonusDropsEnabled(Material material)
|
||||||
|
{
|
||||||
|
return getBonusDropManager().isBonusDropWhitelisted(material);
|
||||||
|
}
|
||||||
|
|
||||||
public double getSkillMaxBonusLevel(SubSkillType subSkillType)
|
public double getSkillMaxBonusLevel(SubSkillType subSkillType)
|
||||||
{
|
{
|
||||||
return skillPropertiesManager.getMaxBonusLevel(subSkillType);
|
return skillPropertiesManager.getMaxBonusLevel(subSkillType);
|
||||||
|
@ -181,7 +181,7 @@ public class HerbalismManager extends SkillManager {
|
|||||||
*/
|
*/
|
||||||
public boolean checkDoubleDrop(BlockState blockState)
|
public boolean checkDoubleDrop(BlockState blockState)
|
||||||
{
|
{
|
||||||
return BlockUtils.checkDoubleDrops(getPlayer(), blockState, skill, SubSkillType.HERBALISM_DOUBLE_DROPS);
|
return BlockUtils.checkDoubleDrops(getPlayer(), blockState, SubSkillType.HERBALISM_DOUBLE_DROPS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package com.gmail.nossr50.util;
|
package com.gmail.nossr50.util;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
|
||||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.skills.repair.Repair;
|
import com.gmail.nossr50.skills.repair.Repair;
|
||||||
@ -38,9 +36,9 @@ public final class BlockUtils {
|
|||||||
* @param blockState the blockstate
|
* @param blockState the blockstate
|
||||||
* @return true if the player succeeded in the check
|
* @return true if the player succeeded in the check
|
||||||
*/
|
*/
|
||||||
public static boolean checkDoubleDrops(Player player, BlockState blockState, PrimarySkillType skillType, SubSkillType subSkillType)
|
public static boolean checkDoubleDrops(Player player, BlockState blockState, SubSkillType subSkillType)
|
||||||
{
|
{
|
||||||
if(Config.getInstance().getDoubleDropsEnabled(skillType, blockState.getType()) && Permissions.isSubSkillEnabled(player, subSkillType))
|
if(mcMMO.getConfigManager().isBonusDropsEnabled(blockState.getType()) && Permissions.isSubSkillEnabled(player, subSkillType))
|
||||||
{
|
{
|
||||||
return RandomChanceUtil.checkRandomChanceExecutionSuccess(new RandomChanceSkill(player, subSkillType, true));
|
return RandomChanceUtil.checkRandomChanceExecutionSuccess(new RandomChanceSkill(player, subSkillType, true));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user