Huge Mushrooms now work for Tree Feller (UNTESTED)

This commit is contained in:
nossr50 2013-02-15 15:32:49 -08:00
parent c1b12c027a
commit 9df149c489
8 changed files with 52 additions and 2 deletions

View File

@ -73,6 +73,7 @@ Version 1.4.00-dev
! Changed how Berserk handles not picking up items to avoid listening to PlayerPickupItemEvent
! Moved Hylian Luck into a separate listener since it actually cancels the event and shouldn't just be on MONITOR.
! Changed how Tree Feller is handled, it should now put less stress on the CPU
! Changed Tree Feller to work on huge mushrooms
! Changed Fisherman's Diet and Farmer's Diet to use two seperate config values
! Major refactoring - please take note, this WILL break any mcMMO-related plugin not properly hooking into the API.
! Changed the way party commands work, use /party ? to check how to use the new commands

View File

@ -276,6 +276,9 @@ public class Config extends ConfigLoader {
public int getWoodcuttingXPBirch() { return config.getInt("Experience.Woodcutting.Birch", 90); }
public int getWoodcuttingXPSpruce() { return config.getInt("Experience.Woodcutting.Spruce", 80); }
public int getWoodcuttingXPJungle() { return config.getInt("Experience.Woodcutting.Jungle", 100); }
public int getWoodcuttingXPHugeBrownMushroom() { return config.getInt("Experience.Woodcutting.Huge_Mushroom_Brown", 70); }
public int getWoodcuttingXPHugeRedMushroom() { return config.getInt("Experience.Woodcutting.Huge_Mushroom_Red", 70); }
public boolean getOakDoubleDropsEnabled() { return config.getBoolean("Double_Drops.Woodcutting.Oak", true); }
public boolean getBirchDoubleDropsEnabled() { return config.getBoolean("Double_Drops.Woodcutting.Birch", true); }

View File

@ -175,6 +175,35 @@ public final class TreeFeller {
}
switch (block.getType()) {
case HUGE_MUSHROOM_1:
case HUGE_MUSHROOM_2:
Woodcutting.checkForDoubleDrop(mcMMOPlayer, block);
try {
xp += Woodcutting.getExperienceFromLog(block, ExperienceGainMethod.TREE_FELLER);
}
catch (IllegalArgumentException exception) {
break;
}
//Stems have a block data value of 15 and should not drop mushrooms
//0-2 mushrooms drop when you break a block
if(block.getData() != (byte) 15) {
switch(block.getType()) {
case HUGE_MUSHROOM_1:
Misc.randomDropItem(block.getLocation(), new ItemStack(Material.BROWN_MUSHROOM, 1), 50);
Misc.randomDropItem(block.getLocation(), new ItemStack(Material.BROWN_MUSHROOM, 1), 50);
break;
case HUGE_MUSHROOM_2:
Misc.randomDropItem(block.getLocation(), new ItemStack(Material.RED_MUSHROOM, 1), 50);
Misc.randomDropItem(block.getLocation(), new ItemStack(Material.RED_MUSHROOM, 1), 50);
break;
default:
break;
}
}
break;
case LOG:
Woodcutting.checkForDoubleDrop(mcMMOPlayer, block);

View File

@ -93,6 +93,19 @@ public final class Woodcutting {
* @throws IllegalArgumentException if 'log' is invalid
*/
protected static int getExperienceFromLog(Block log, ExperienceGainMethod experienceGainMethod) {
//Mushrooms aren't trees so we could never get species data from them
if(log.getType() == Material.HUGE_MUSHROOM_1 || log.getType() == Material.HUGE_MUSHROOM_2) {
switch(log.getType()) {
case HUGE_MUSHROOM_1:
return Config.getInstance().getWoodcuttingXPHugeBrownMushroom();
case HUGE_MUSHROOM_2:
return Config.getInstance().getWoodcuttingXPHugeRedMushroom();
default:
throw new IllegalArgumentException();
}
}
TreeSpecies logType = TreeSpecies.getByData(extractLogItemData(log.getData()));
// Apparently species can be null in certain cases (custom server mods?)

View File

@ -300,6 +300,8 @@ public final class BlockChecks {
switch (block.getType()) {
case LOG:
case LEAVES:
case HUGE_MUSHROOM_1:
case HUGE_MUSHROOM_2:
return true;
default:

View File

@ -271,6 +271,8 @@ Experience:
Spruce: 80
Birch: 90
Jungle: 100
Huge_Mushroom_Red: 70
Huge_Mushroom_Brown: 70
Herbalism:
Sugar_Cane: 30
Cactus: 30