Mod support - XP gain & double drops should now work for custom blocks

EXCEPT Woodcutting. Custom excavation blocks will also never drop
treasures.
This commit is contained in:
GJ
2012-05-17 00:24:33 -04:00
parent 6cbf87b52c
commit 5645bf7982
15 changed files with 395 additions and 45 deletions

View File

@ -12,12 +12,14 @@ import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.spout.SpoutSounds;
import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.ModChecks;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.Skills;
import com.gmail.nossr50.util.Users;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.LoadTreasures;
import com.gmail.nossr50.config.mods.CustomBlocksConfig;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure;
@ -45,7 +47,14 @@ public class Excavation {
List<ExcavationTreasure> treasures = new ArrayList<ExcavationTreasure>();
int xp = Config.getInstance().getExcavationBaseXP();
int xp;
if (Config.getInstance().getBlockModsEnabled() && CustomBlocksConfig.getInstance().customExcavationBlocks.contains(new ItemStack(block.getTypeId(), 1, (short) 0, block.getData()))) {
xp = ModChecks.getCustomBlock(block).getXpGain();
}
else {
xp = Config.getInstance().getExcavationBaseXP();
}
if (Permissions.getInstance().excavationTreasures(player)) {
switch (type) {

View File

@ -13,12 +13,14 @@ import org.bukkit.inventory.PlayerInventory;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.mods.CustomBlocksConfig;
import com.gmail.nossr50.datatypes.AbilityType;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.runnables.GreenThumbTimer;
import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.ModChecks;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.Skills;
import com.gmail.nossr50.util.Users;
@ -82,10 +84,13 @@ public class Herbalism {
Byte data = block.getData();
Location loc = block.getLocation();
Material mat = null;
int xp = 0;
int catciDrops = 0;
int caneDrops = 0;
boolean customPlant = false;
switch (type) {
case BROWN_MUSHROOM:
case RED_MUSHROOM:
@ -181,15 +186,26 @@ public class Herbalism {
break;
default:
if (Config.getInstance().getBlockModsEnabled() && CustomBlocksConfig.getInstance().customHerbalismBlocks.contains(new ItemStack(block.getTypeId(), 1, (short) 0, block.getData()))) {
customPlant = true;
xp = ModChecks.getCustomBlock(block).getXpGain();
}
break;
}
if (mat == null) {
if (mat == null && !customPlant) {
return;
}
if (Permissions.getInstance().herbalismDoubleDrops(player)) {
ItemStack is = new ItemStack(mat);
ItemStack is = null;
if (customPlant) {
is = new ItemStack(ModChecks.getCustomBlock(block).getItemDrop());
}
else {
is = new ItemStack(mat);
}
if (herbLevel > MAX_BONUS_LEVEL || random.nextInt(1000) <= herbLevel) {
Config configInstance = Config.getInstance();
@ -264,6 +280,9 @@ public class Herbalism {
break;
default:
if (customPlant) {
Misc.mcDropItem(loc, is);
}
break;
}
}

View File

@ -15,10 +15,12 @@ import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.spout.SpoutSounds;
import com.gmail.nossr50.util.BlockChecks;
import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.ModChecks;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.Skills;
import com.gmail.nossr50.util.Users;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.mods.CustomBlocksConfig;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.events.fake.FakePlayerAnimationEvent;
@ -128,6 +130,10 @@ public class Mining {
break;
default:
if (Config.getInstance().getBlockModsEnabled() && CustomBlocksConfig.getInstance().customMiningBlocks.contains(new ItemStack(block.getTypeId(), 1, (short) 0, block.getData()))) {
item = ModChecks.getCustomBlock(block).getItemDrop();
Misc.mcDropItem(loc, item);
}
break;
}
}
@ -198,6 +204,9 @@ public class Mining {
break;
default:
if (Config.getInstance().getBlockModsEnabled() && CustomBlocksConfig.getInstance().customMiningBlocks.contains(new ItemStack(block.getTypeId(), 1, (short) 0, block.getData()))) {
xp += ModChecks.getCustomBlock(block).getXpGain();
}
break;
}