Skip to content

Commit

Permalink
Update configurations and skill block checks to be more configurable.
Browse files Browse the repository at this point in the history
  • Loading branch information
t00thpick1 committed Jun 10, 2017
1 parent 5c26766 commit 15436b4
Show file tree
Hide file tree
Showing 11 changed files with 475 additions and 471 deletions.
188 changes: 23 additions & 165 deletions src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
import org.bukkit.entity.EntityType;
import org.bukkit.material.LongGrass;
import org.bukkit.material.MaterialData;
import org.bukkit.material.Tree;

import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.AutoUpdateConfigLoader;
import com.gmail.nossr50.datatypes.experience.FormulaType;
import com.gmail.nossr50.datatypes.skills.MaterialType;
Expand Down Expand Up @@ -136,23 +138,6 @@ protected boolean validateKeys() {
reason.add("Experience.Taming.Animal_Taming.Ocelot should be greater than 0!");
}

/* Woodcutting */
for (TreeSpecies species : TreeSpecies.values()) {
String key = "Experience.Woodcutting." + StringUtils.getPrettyTreeSpeciesString(species).replace(" ", "_");

if (config.getInt(key) <= 0) {
reason.add(key + " should be greater than 0!");
}
}

if (getWoodcuttingXPHugeBrownMushroom() <= 0) {
reason.add("Experience.Woodcutting.Huge_Mushroom_Brown should be greater than 0!");
}

if (getWoodcuttingXPHugeRedMushroom() <= 0) {
reason.add("Experience.Woodcutting.Huge_Mushroom_Red should be greater than 0!");
}

return noErrorsInConfig(reason);
}

Expand Down Expand Up @@ -207,7 +192,27 @@ protected boolean validateKeys() {
public double getAnimalsXP() { return config.getDouble("Experience.Combat.Multiplier.Animals", 1.0); }

/* Materials */
public int getXp(SkillType skill, Material material) { return config.getInt("Experience." + StringUtils.getCapitalized(skill.toString()) + "." + StringUtils.getPrettyItemString(material).replace(" ", "_")); }
public int getXp(SkillType skill, MaterialData data)
{
String baseString = "Experience." + StringUtils.getCapitalized(skill.toString()) + ".";
String explicitString = baseString + StringUtils.getFriendlyConfigMaterialDataString(data);
String noDataString = baseString + StringUtils.getPrettyItemString(data.getItemType());
mcMMO.p.debug(explicitString);
if (config.contains(explicitString))
return config.getInt(explicitString);
return config.getInt(noDataString, 0);
}

public boolean isSkillBlock(SkillType skill, MaterialData data)
{
String baseString = "Experience." + StringUtils.getCapitalized(skill.toString()) + ".";
String explicitString = baseString + StringUtils.getFriendlyConfigMaterialDataString(data);
String noDataString = baseString + StringUtils.getPrettyItemString(data.getItemType());
mcMMO.p.debug(explicitString);
if (config.contains(explicitString))
return true;
return config.contains(noDataString);
}

/* Acrobatics */
public int getDodgeXPModifier() { return config.getInt("Experience.Acrobatics.Dodge", 120); }
Expand All @@ -222,149 +227,8 @@ protected boolean validateKeys() {
/* Archery */
public double getArcheryDistanceMultiplier() { return config.getDouble("Experience.Archery.Distance_Multiplier", 0.025); }

/* Excavation */
public int getDirtAndSandXp(MaterialData data) {
Material type = data.getItemType();

if (type == Material.DIRT) {
switch (data.getData()) {
case 0x0:
return config.getInt("Experience.Excavation.Dirt", 40);

case 0x1:
return config.getInt("Experience.Excavation.Coarse_Dirt", 40);

case 0x2:
return config.getInt("Experience.Excavation.Podzol", 40);

default:
return 0;
}
}
else if (type == Material.SAND) {
switch (data.getData()) {
case 0x0:
return config.getInt("Experience.Excavation.Sand", 40);

case 0x1:
return config.getInt("Experience.Excavation.Red_Sand", 40);

default:
return 0;
}
}

return 0;
}

/* Fishing */
public int getFishXp(MaterialData data) {
switch (data.getData()) {
case 0x0:
return config.getInt("Experience.Fishing.Raw_Fish", 800);

case 0x1:
return config.getInt("Experience.Fishing.Raw_Salmon", 800);

case 0x2:
return config.getInt("Experience.Fishing.Clownfish", 800);

case 0x3:
return config.getInt("Experience.Fishing.Pufferfish", 800);

default:
return 0;
}
}

public int getFishingShakeXP() { return config.getInt("Experience.Fishing.Shake", 50); }

/* Herbalism */
public int getFlowerAndGrassXp(MaterialData data) {
Material type = data.getItemType();

if (type == Material.RED_ROSE) {
switch (data.getData()) {
case 0x0:
return config.getInt("Experience.Herbalism.Poppy", 100);

case 0x1:
return config.getInt("Experience.Herbalism.Blue_Orchid", 150);

case 0x2:
return config.getInt("Experience.Herbalism.Allium", 300);

case 0x3:
return config.getInt("Experience.Herbalism.Azure_Bluet", 150);

case 0x4:
return config.getInt("Experience.Herbalism.Red_Tulip", 150);

case 0x5:
return config.getInt("Experience.Herbalism.Orange_Tulip", 150);

case 0x6:
return config.getInt("Experience.Herbalism.White_Tulip", 150);

case 0x7:
return config.getInt("Experience.Herbalism.Pink_Tulip", 150);

case 0x8:
return config.getInt("Experience.Herbalism.Oxeye_Daisy", 150);

default:
return 0;
}

}
else if (type == Material.LONG_GRASS) {
GrassSpecies species = ((LongGrass) data).getSpecies();
if (species == null) {
return 0;
}

switch (species) {
case DEAD:
return config.getInt("Experience.Herbalism.Dead_Bush", 30);

case FERN_LIKE:
return config.getInt("Experience.Herbalism.Small_Fern", 10);

case NORMAL:
return config.getInt("Experience.Herbalism.Small_Grass", 10);

default:
return 0;
}
}
else if (type == Material.DOUBLE_PLANT) {
switch (data.getData()) {
case 0x0:
return config.getInt("Experience.Herbalism.Sunflower", 50);

case 0x1:
return config.getInt("Experience.Herbalism.Lilac", 50);

case 0x2:
return config.getInt("Experience.Herbalism.Tall_Grass", 50);

case 0x3:
return config.getInt("Experience.Herbalism.Tall_Fern", 50);

case 0x4:
return config.getInt("Experience.Herbalism.Rose_Bush", 50);

case 0x5:
return config.getInt("Experience.Herbalism.Peony", 50);

default:
return 0;
}
}

return 0;
}

/* Repair */
public double getRepairXPBase() { return config.getDouble("Experience.Repair.Base", 1000.0); }
public double getRepairXP(MaterialType repairMaterialType) { return config.getDouble("Experience.Repair." + StringUtils.getCapitalized(repairMaterialType.toString())); }
Expand All @@ -374,10 +238,4 @@ public int getTamingXP(EntityType type)
{
return config.getInt("Experience.Taming.Animal_Taming." + StringUtils.getPrettyEntityTypeString(type));
}

/* Woodcutting */
public int getWoodcuttingTreeXP(TreeSpecies species) { return config.getInt("Experience.Woodcutting." + StringUtils.getPrettyTreeSpeciesString(species).replace(" ", "_")); }
public int getWoodcuttingXPHugeBrownMushroom() { return config.getInt("Experience.Woodcutting.Huge_Mushroom_Brown", 70); }
public int getWoodcuttingXPHugeRedMushroom() { return config.getInt("Experience.Woodcutting.Huge_Mushroom_Red", 70); }

}
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,7 @@ public class TreasureConfig extends ConfigLoader {

private static TreasureConfig instance;

public List<ExcavationTreasure> excavationFromDirt = new ArrayList<ExcavationTreasure>();
public List<ExcavationTreasure> excavationFromGrass = new ArrayList<ExcavationTreasure>();
public List<ExcavationTreasure> excavationFromSand = new ArrayList<ExcavationTreasure>();
public List<ExcavationTreasure> excavationFromGravel = new ArrayList<ExcavationTreasure>();
public List<ExcavationTreasure> excavationFromClay = new ArrayList<ExcavationTreasure>();
public List<ExcavationTreasure> excavationFromMycel = new ArrayList<ExcavationTreasure>();
public List<ExcavationTreasure> excavationFromSoulSand = new ArrayList<ExcavationTreasure>();
public List<ExcavationTreasure> excavationFromSnow = new ArrayList<ExcavationTreasure>();
public List<ExcavationTreasure> excavationFromRedSand = new ArrayList<ExcavationTreasure>();
public List<ExcavationTreasure> excavationFromPodzol = new ArrayList<ExcavationTreasure>();
public HashMap<Material, List<ExcavationTreasure>> excavationMap = new HashMap<Material, List<ExcavationTreasure>>();

public List<HylianTreasure> hylianFromBushes = new ArrayList<HylianTreasure>();
public List<HylianTreasure> hylianFromFlowers = new ArrayList<HylianTreasure>();
Expand Down Expand Up @@ -385,44 +376,12 @@ private void loadTreasures(String type) {
ExcavationTreasure excavationTreasure = new ExcavationTreasure(item, xp, dropChance, dropLevel);
List<String> dropList = config.getStringList(type + "." + treasureName + ".Drops_From");

if (dropList.contains("Dirt")) {
excavationFromDirt.add(excavationTreasure);
}

if (dropList.contains("Grass")) {
excavationFromGrass.add(excavationTreasure);
}

if (dropList.contains("Sand")) {
excavationFromSand.add(excavationTreasure);
}

if (dropList.contains("Gravel")) {
excavationFromGravel.add(excavationTreasure);
}

if (dropList.contains("Clay")) {
excavationFromClay.add(excavationTreasure);
}

if (dropList.contains("Mycelium")) {
excavationFromMycel.add(excavationTreasure);
}

if (dropList.contains("Soul_Sand")) {
excavationFromSoulSand.add(excavationTreasure);
}

if (dropList.contains("Snow")) {
excavationFromSnow.add(excavationTreasure);
}

if (dropList.contains("Red_Sand")) {
excavationFromRedSand.add(excavationTreasure);
}

if (dropList.contains("Podzol")) {
excavationFromPodzol.add(excavationTreasure);
for (String blockType : dropList)
{
Material mat = Material.matchMaterial(blockType);
if (!excavationMap.containsKey(mat))
excavationMap.put(mat, new ArrayList<ExcavationTreasure>());
excavationMap.get(mat).add(excavationTreasure);
}
} else if (isHylian) {
HylianTreasure hylianTreasure = new HylianTreasure(item, xp, dropChance, dropLevel);
Expand Down
45 changes: 6 additions & 39 deletions src/main/java/com/gmail/nossr50/skills/excavation/Excavation.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@
import java.util.ArrayList;
import java.util.List;

import org.bukkit.Material;
import org.bukkit.block.BlockState;

import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.experience.ExperienceConfig;
import com.gmail.nossr50.config.treasure.TreasureConfig;
import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure;
import com.gmail.nossr50.util.StringUtils;

public class Excavation {
/**
Expand All @@ -20,47 +20,14 @@ public class Excavation {
* @return the list of treasures that could be found
*/
protected static List<ExcavationTreasure> getTreasures(BlockState blockState) {
switch (blockState.getType()) {
case DIRT:
return blockState.getRawData() == 0x2 ? TreasureConfig.getInstance().excavationFromPodzol : TreasureConfig.getInstance().excavationFromDirt;

case GRASS:
case GRASS_PATH:
return TreasureConfig.getInstance().excavationFromGrass;

case SAND:
return blockState.getRawData() == 0x1 ? TreasureConfig.getInstance().excavationFromRedSand : TreasureConfig.getInstance().excavationFromSand;

case GRAVEL:
return TreasureConfig.getInstance().excavationFromGravel;

case CLAY:
return TreasureConfig.getInstance().excavationFromClay;

case MYCEL:
return TreasureConfig.getInstance().excavationFromMycel;

case SOUL_SAND:
return TreasureConfig.getInstance().excavationFromSoulSand;

case SNOW:
return TreasureConfig.getInstance().excavationFromSnow;

default:
return new ArrayList<ExcavationTreasure>();
}
String friendly = StringUtils.getFriendlyConfigMaterialDataString(blockState.getData());
if (TreasureConfig.getInstance().excavationMap.containsKey(friendly))
return TreasureConfig.getInstance().excavationMap.get(friendly);
return new ArrayList<ExcavationTreasure>();
}

protected static int getBlockXP(BlockState blockState) {
Material material = blockState.getType();
int xp;

if (material == Material.DIRT || material == Material.SAND) {
xp = ExperienceConfig.getInstance().getDirtAndSandXp(blockState.getData());
}
else {
xp = ExperienceConfig.getInstance().getXp(SkillType.EXCAVATION, material);
}
int xp = ExperienceConfig.getInstance().getXp(SkillType.EXCAVATION, blockState.getData());

if (xp == 0 && mcMMO.getModManager().isCustomExcavationBlock(blockState)) {
xp = mcMMO.getModManager().getBlock(blockState).getXpGain();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ public void masterAngler(Fish hook) {
*/
public void handleFishing(Item fishingCatch) {
this.fishingCatch = fishingCatch;
int fishXp = ExperienceConfig.getInstance().getFishXp(fishingCatch.getItemStack().getData());
int fishXp = ExperienceConfig.getInstance().getXp(SkillType.FISHING, fishingCatch.getItemStack().getData());
int treasureXp = 0;
Player player = getPlayer();
FishingTreasure treasure = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,16 +151,10 @@ public void herbalismBlockCheck(BlockState blockState) {
processGreenThumbPlants(blockState, greenTerra);
}

if (material == Material.DOUBLE_PLANT || material == Material.RED_ROSE || material == Material.LONG_GRASS) {
xp = ExperienceConfig.getInstance().getFlowerAndGrassXp(blockState.getData());
}
else {
if(material == Material.CHORUS_FLOWER && blockState.getRawData() != 5) {
return;
}

xp = ExperienceConfig.getInstance().getXp(skill, material);
if(material == Material.CHORUS_FLOWER && blockState.getRawData() != 5) {
return;
}
xp = ExperienceConfig.getInstance().getXp(skill, blockState.getData());

if (Config.getInstance().getDoubleDropsEnabled(skill, material) && Permissions.secondaryAbilityEnabled(player, SecondaryAbility.HERBALISM_DOUBLE_DROPS)) {
drops = blockState.getBlock().getDrops();
Expand Down
Loading

0 comments on commit 15436b4

Please sign in to comment.