1
0
mirror of https://github.com/mcMMO-Dev/mcMMO.git synced 2026-02-19 18:33:00 +01:00

Add a new child skill: Ranching

This commit is contained in:
TfT_02
2013-05-18 23:13:42 +02:00
parent f0dcfb0346
commit 1ee82df723
15 changed files with 563 additions and 4 deletions

View File

@@ -0,0 +1,146 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.skills.ranching.Ranching;
import com.gmail.nossr50.util.Permissions;
public class RanchingCommand extends SkillCommand {
private String multipleBirthChance;
private String multipleBirthChanceLucky;
private int masterHerderTime;
private String shearsMasteryChance;
private String shearsMasteryChanceLucky;
private String artisanButcherChance;
private String artisanButcherChanceLucky;
private int carnivoresDietRank;
private boolean canMultipleBirth;
private boolean canMasterHerder;
private boolean canShearsMastery;
private boolean canArtisanButcher;
private boolean canCarnivoresDiet;
public RanchingCommand() {
super(SkillType.RANCHING);
}
@Override
protected void dataCalculations() {
// MULTIPLE BIRTH
if (canMultipleBirth) {
String[] multipleBirthStrings = calculateAbilityDisplayValues(Ranching.multipleBirthIncreaseLevel, Ranching.multipleBirthMaxChance);
multipleBirthChance = multipleBirthStrings[0];
multipleBirthChanceLucky = multipleBirthStrings[1];
}
// MASTER HERDER
if (canMasterHerder) {
int masterHerderTime = (int) (300 - (skillValue / Ranching.masterHerderIncreaseLevel) * 10);
if (masterHerderTime < Ranching.masterHerderMinimumSeconds) {
masterHerderTime = Ranching.masterHerderMinimumSeconds;
}
}
// SHEARS MASTERY
if (canShearsMastery) {
String[] shearsMasteryStrings = calculateAbilityDisplayValues(Ranching.shearsMasteryMaxLevel, Ranching.shearsMasteryMaxChance);
shearsMasteryChance = shearsMasteryStrings[0];
shearsMasteryChanceLucky = shearsMasteryStrings[1];
}
// ARTISAN BUTCHER
if (canArtisanButcher) {
String[] artisanButcherStrings = calculateAbilityDisplayValues(Ranching.artisanButcherMaxLevel, Ranching.artisanButcherMaxChance);
artisanButcherChance = artisanButcherStrings[0];
artisanButcherChanceLucky = artisanButcherStrings[1];
}
// CARNIVORES DIET
if (canCarnivoresDiet) {
carnivoresDietRank = calculateRank(Ranching.carnivoresDietMaxLevel, Ranching.carnivoresDietRankLevel1);
}
}
@Override
protected void permissionsCheck() {
canMultipleBirth = Permissions.multipleBirth(player);
canMasterHerder = Permissions.masterHerder(player);
canShearsMastery = Permissions.shearsMastery(player);
canArtisanButcher = Permissions.artisanButcher(player);
canCarnivoresDiet = Permissions.carnivoresDiet(player);
}
@Override
protected boolean effectsHeaderPermissions() {
return canMultipleBirth || canMasterHerder || canShearsMastery || canArtisanButcher || canCarnivoresDiet;
}
@Override
protected void effectsDisplay() {
luckyEffectsDisplay();
if (canMultipleBirth) {
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Ranching.Effect.0"), LocaleLoader.getString("Ranching.Effect.1")));
}
if (canMasterHerder) {
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Ranching.Effect.2"), LocaleLoader.getString("Ranching.Effect.3")));
}
if (canShearsMastery) {
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Ranching.Effect.4"), LocaleLoader.getString("Ranching.Effect.5")));
}
if (canArtisanButcher) {
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Ranching.Effect.6"), LocaleLoader.getString("Ranching.Effect.7")));
}
if (canCarnivoresDiet) {
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Ranching.Effect.8"), LocaleLoader.getString("Ranching.Effect.9")));
}
}
@Override
protected boolean statsHeaderPermissions() {
return canMultipleBirth || canMasterHerder || canShearsMastery || canArtisanButcher || canCarnivoresDiet;
}
@Override
protected void statsDisplay() {
if (canMultipleBirth) {
int unlockLevel = Ranching.multipleBirthIncreaseLevel;
if (skillValue < unlockLevel) {
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Ranching.Ability.Locked.0", unlockLevel)));
}
else {
player.sendMessage(LocaleLoader.getString("Ranching.Ability.MultipleBirth", multipleBirthChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", multipleBirthChanceLucky) : ""));
}
}
if (canMasterHerder) {
int unlockLevel = Ranching.masterHerderIncreaseLevel;
if (skillValue < unlockLevel) {
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Ranching.Ability.Locked.1", unlockLevel)));
}
else {
player.sendMessage(LocaleLoader.getString("Ranching.Ability.MasterHerder", masterHerderTime));
}
}
if (canShearsMastery) {
player.sendMessage(LocaleLoader.getString("Ranching.Ability.ShearsMastery", shearsMasteryChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", shearsMasteryChanceLucky) : ""));
}
if (canArtisanButcher) {
player.sendMessage(LocaleLoader.getString("Ranching.Ability.ArtisanButcher", artisanButcherChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", artisanButcherChanceLucky) : ""));
}
if (canCarnivoresDiet) {
player.sendMessage(LocaleLoader.getString("Ranching.Ability.CarnivoresDiet", carnivoresDietRank));
}
}
}

View File

@@ -180,6 +180,38 @@ public class AdvancedConfig extends AutoUpdateConfigLoader {
public double getBlastRadiusModifierRank7() { return config.getDouble("Skills.Mining.BlastRadiusModifier_Rank7", 4.0); }
public double getBlastRadiusModifierRank8() { return config.getDouble("Skills.Mining.BlastRadiusModifier_Rank8", 4.0); }
/* RANCHING */
public int getMultipleBirthIncreasekLevel() { return config.getInt("Skills.Ranching.MultipleBirth_IncreaseLevel", 50); }
public int getMultipleBirthMaxChance() { return config.getInt("Skills.Ranching.MultipleBirth_ChanceMax", 30); }
public int getMultipleBirthLitterModifier() { return config.getInt("Skills.Ranching.MultipleBirth_LitterModifier", 30); }
public int getMasterHerderIncreaseLevel() { return config.getInt("Skills.Ranching.MultipleBirth_IncreaseLevel", 50); }
public int getMasterHerderMaxLevel() { return config.getInt("Skills.Ranching.MultipleBirth_MaxBonusLevel", 500); }
public int getMasterHerderMinimumSeconds() { return config.getInt("Skills.Ranching.MultipleBirth_MinimumSeconds", 120); }
public int getShearsMasteryMaxLevel() { return config.getInt("Skills.Ranching.ShearsMastery_MaxBonusLevel", 500); }
public int getShearsMasteryMaxChance() { return config.getInt("Skills.Ranching.ShearsMastery_ChanceMax", 20); }
public int getShearsMasteryMaxBonus() { return config.getInt("Skills.Ranching.ShearsMastery_MaxBonus", 3); }
public int getArtisanButcherMaxLevel() { return config.getInt("Skills.Ranching.ArtisanButcher_MaxBonusLevel", 500); }
public int getArtisanButcherMaxChance() { return config.getInt("Skills.Ranching.ArtisanButcher_ChanceMax", 20); }
public int getArtisanButcherMaxBonus() { return config.getInt("Skills.Ranching.ArtisanButcher_MaxBonus", 3); }
public int getCarnivoresDietRankChange() { return config.getInt("Skills.Ranching.Carnivores_Diet_RankChange", 200); }
public int getRanchingVanillaXPBoostRank1Level() { return config.getInt("Skills.Ranching.VanillaXPBoost_Rank1Level", 100); }
public int getRanchingVanillaXPBoostRank2Level() { return config.getInt("Skills.Ranching.VanillaXPBoost_Rank2Level", 300); }
public int getRanchingVanillaXPBoostRank3Level() { return config.getInt("Skills.Ranching.VanillaXPBoost_Rank3Level", 500); }
public int getRanchingVanillaXPBoostRank4Level() { return config.getInt("Skills.Ranching.VanillaXPBoost_Rank4Level", 700); }
public int getRanchingVanillaXPBoostRank5Level() { return config.getInt("Skills.Ranching.VanillaXPBoost_Rank5Level", 900); }
public int getRanchingVanillaXPBoostRank1Multiplier() { return config.getInt("Skills.Ranching.VanillaXPBoost_Rank1Multiplier", 2); }
public int getRanchingVanillaXPBoostRank2Multiplier() { return config.getInt("Skills.Ranching.VanillaXPBoost_Rank2Multiplier", 3); }
public int getRanchingVanillaXPBoostRank3Multiplier() { return config.getInt("Skills.Ranching.VanillaXPBoost_Rank3Multiplier", 4); }
public int getRanchingVanillaXPBoostRank4Multiplier() { return config.getInt("Skills.Ranching.VanillaXPBoost_Rank4Multiplier", 5); }
public int getRanchingVanillaXPBoostRank5Multiplier() { return config.getInt("Skills.Ranching.VanillaXPBoost_Rank5Multiplier", 6); }
/* REPAIR */
public double getRepairMasteryMaxBonus() { return config.getDouble("Skills.Repair.RepairMastery_MaxBonusPercentage", 200.0D); }
public int getRepairMasteryMaxLevel() { return config.getInt("Skills.Repair.RepairMastery_MaxBonusLevel", 1000); }

View File

@@ -29,6 +29,7 @@ import com.gmail.nossr50.skills.excavation.ExcavationManager;
import com.gmail.nossr50.skills.fishing.FishingManager;
import com.gmail.nossr50.skills.herbalism.HerbalismManager;
import com.gmail.nossr50.skills.mining.MiningManager;
import com.gmail.nossr50.skills.ranching.RanchingManager;
import com.gmail.nossr50.skills.repair.Repair;
import com.gmail.nossr50.skills.repair.RepairManager;
import com.gmail.nossr50.skills.smelting.SmeltingManager;
@@ -149,6 +150,10 @@ public class McMMOPlayer {
return (MiningManager) skillManagers.get(SkillType.MINING);
}
public RanchingManager getRanchingManager() {
return (RanchingManager) skillManagers.get(SkillType.RANCHING);
}
public RepairManager getRepairManager() {
return (RepairManager) skillManagers.get(SkillType.REPAIR);
}

View File

@@ -17,6 +17,7 @@ import com.gmail.nossr50.skills.excavation.ExcavationManager;
import com.gmail.nossr50.skills.fishing.FishingManager;
import com.gmail.nossr50.skills.herbalism.HerbalismManager;
import com.gmail.nossr50.skills.mining.MiningManager;
import com.gmail.nossr50.skills.ranching.RanchingManager;
import com.gmail.nossr50.skills.repair.RepairManager;
import com.gmail.nossr50.skills.smelting.SmeltingManager;
import com.gmail.nossr50.skills.swords.SwordsManager;
@@ -40,7 +41,8 @@ public enum SkillType {
SWORDS(SwordsManager.class, Color.fromRGB(178, 34, 34), AbilityType.SERRATED_STRIKES, ToolType.SWORD),
TAMING(TamingManager.class, Color.PURPLE),
UNARMED(UnarmedManager.class, Color.BLACK, AbilityType.BERSERK, ToolType.FISTS),
WOODCUTTING(WoodcuttingManager.class, Color.OLIVE, AbilityType.TREE_FELLER, ToolType.AXE);
WOODCUTTING(WoodcuttingManager.class, Color.OLIVE, AbilityType.TREE_FELLER, ToolType.AXE),
RANCHING(RanchingManager.class, Color.ORANGE);
private Class<? extends SkillManager> managerClass;
private Color runescapeColor;
@@ -134,6 +136,7 @@ public enum SkillType {
public boolean isChildSkill() {
switch (this) {
case SMELTING:
case RANCHING:
return true;
default:

View File

@@ -44,6 +44,8 @@ import com.gmail.nossr50.skills.archery.Archery;
import com.gmail.nossr50.skills.fishing.Fishing;
import com.gmail.nossr50.skills.herbalism.Herbalism;
import com.gmail.nossr50.skills.mining.MiningManager;
import com.gmail.nossr50.skills.ranching.Ranching;
import com.gmail.nossr50.skills.ranching.RanchingManager;
import com.gmail.nossr50.skills.taming.Taming;
import com.gmail.nossr50.skills.taming.TamingManager;
import com.gmail.nossr50.util.Misc;
@@ -355,13 +357,20 @@ public class EntityListener implements Listener {
@EventHandler(priority = EventPriority.MONITOR)
public void onEntityDeath(EntityDeathEvent event) {
LivingEntity entity = event.getEntity();
Player player = event.getEntity().getKiller();
if (Misc.isNPCEntity(entity)) {
if (Misc.isNPCEntity(entity) || Misc.isNPCEntity(player)) {
return;
}
BleedTimerTask.remove(entity);
Archery.arrowRetrievalCheck(entity);
if (Permissions.carnivoresDiet(player)) {
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
RanchingManager ranchingManager = mcMMOPlayer.getRanchingManager();
ranchingManager.handleArtisanButcher(entity);
}
}
/**
@@ -510,6 +519,22 @@ public class EntityListener implements Listener {
}
return;
case COOKED_CHICKEN: /* RESTORES 3 HUNGER - RESTORES 5 1/2 HUNGER @ 1000 */
case GRILLED_PORK: /* RESTORES 4 HUNGER - RESTORES 6 1/2 HUNGER @ 1000 */
case COOKED_BEEF: /* RESTORES 4 HUNGER - RESTORES 6 1/2 HUNGER @ 1000 */
if (Permissions.carnivoresDiet(player)) {
event.setFoodLevel(UserManager.getPlayer(player).getRanchingManager().handleCarnivoresDiet(Ranching.carnivoresDietRankLevel1, newFoodLevel));
}
return;
case RAW_CHICKEN: /* RESTORES 1 HUNGER - RESTORES 2 1/2 HUNGER @ 1000 */
case PORK: /* RESTORES 2 1/2 HUNGER - RESTORES 4 HUNGER @ 1000 */
case RAW_BEEF: /* RESTORES 2 1/2 HUNGER - RESTORES 4 HUNGER @ 1000 */
if (Permissions.carnivoresDiet(player)) {
event.setFoodLevel(UserManager.getPlayer(player).getRanchingManager().handleCarnivoresDiet(Ranching.carnivoresDietRankLevel2, newFoodLevel));
}
return;
default:
return;
}

View File

@@ -5,7 +5,9 @@ import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.entity.Ageable;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Fish;
import org.bukkit.entity.Item;
import org.bukkit.entity.LivingEntity;
@@ -19,12 +21,15 @@ import org.bukkit.event.player.PlayerChangedWorldEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerFishEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.event.player.PlayerShearEntityEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.chat.ChatManager;
@@ -43,6 +48,8 @@ import com.gmail.nossr50.runnables.skills.BleedTimerTask;
import com.gmail.nossr50.skills.fishing.FishingManager;
import com.gmail.nossr50.skills.herbalism.HerbalismManager;
import com.gmail.nossr50.skills.mining.MiningManager;
import com.gmail.nossr50.skills.ranching.Ranching;
import com.gmail.nossr50.skills.ranching.RanchingManager;
import com.gmail.nossr50.skills.repair.Repair;
import com.gmail.nossr50.skills.repair.RepairManager;
import com.gmail.nossr50.skills.taming.TamingManager;
@@ -519,6 +526,68 @@ public class PlayerListener implements Listener {
}
}
/**
* Monitor PlayerInteractEntityEvent events.
*
* @param event The event to watch
*/
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
Player player = event.getPlayer();
Entity entity = event.getRightClicked();
if (Misc.isNPCEntity(player) || player.getGameMode() == GameMode.CREATIVE) {
return;
}
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
ItemStack inHand = player.getItemInHand();
/* RANCHING */
if (entity instanceof Ageable) {
Ageable ageable = (Ageable) entity;
RanchingManager ranchingManager = mcMMOPlayer.getRanchingManager();
if (Permissions.skillEnabled(player, SkillType.RANCHING) && ageable.canBreed() && ranchingManager.isBreedFood(entity, inHand)) {
entity.setMetadata(mcMMO.animalBreedKey, new FixedMetadataValue(plugin, player.getName()));
}
}
}
/**
* Monitor PlayerShearEntityEvent events.
*
* @param event The event to watch
*/
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerShearEntity(PlayerShearEntityEvent event) {
Player player = event.getPlayer();
Entity entity = event.getEntity();
if (Misc.isNPCEntity(player) || player.getGameMode() == GameMode.CREATIVE) {
return;
}
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
/* RANCHING */
RanchingManager ranchingManager = mcMMOPlayer.getRanchingManager();
/* Shears Mastery */
if (Permissions.shearsMastery(player)) {
if (entity.getType() == EntityType.SHEEP) {
ranchingManager.handleShearsMasterySheep(entity);
}
else if (entity.getType() == EntityType.MUSHROOM_COW) {
ranchingManager.handleShearsMasteryMooshroom(entity);
}
}
if (Permissions.skillEnabled(player, SkillType.RANCHING)) {
ranchingManager.applyXpGain(Ranching.shearExperience);
}
}
/**
* Monitor PlayerChat events.
*

View File

@@ -92,6 +92,7 @@ public class mcMMO extends JavaPlugin {
public final static String infiniteArrowKey = "mcMMO: Infinite Arrow";
public final static String bowForceKey = "mcMMO: Bow Force";
public final static String arrowDistanceKey = "mcMMO: Arrow Distance";
public final static String animalBreedKey = "mcMMO: Tracked Animal";
public static FixedMetadataValue metadataValue;

View File

@@ -0,0 +1,60 @@
package com.gmail.nossr50.skills.ranching;
import com.gmail.nossr50.config.AdvancedConfig;
public class Ranching {
// The order of the values is extremely important, a few methods depend on it to work properly
protected enum Tier {
FIVE(5) {
@Override public int getLevel() { return AdvancedConfig.getInstance().getRanchingVanillaXPBoostRank5Level(); }
@Override public int getVanillaXPBoostModifier() { return AdvancedConfig.getInstance().getRanchingVanillaXPBoostRank5Multiplier(); }},
FOUR(4) {
@Override public int getLevel() { return AdvancedConfig.getInstance().getRanchingVanillaXPBoostRank4Level(); }
@Override public int getVanillaXPBoostModifier() { return AdvancedConfig.getInstance().getRanchingVanillaXPBoostRank4Multiplier(); }},
THREE(3) {
@Override public int getLevel() { return AdvancedConfig.getInstance().getRanchingVanillaXPBoostRank3Level(); }
@Override public int getVanillaXPBoostModifier() { return AdvancedConfig.getInstance().getRanchingVanillaXPBoostRank3Multiplier(); }},
TWO(2) {
@Override public int getLevel() { return AdvancedConfig.getInstance().getRanchingVanillaXPBoostRank2Level(); }
@Override public int getVanillaXPBoostModifier() { return AdvancedConfig.getInstance().getRanchingVanillaXPBoostRank2Multiplier(); }},
ONE(1) {
@Override public int getLevel() { return AdvancedConfig.getInstance().getRanchingVanillaXPBoostRank1Level(); }
@Override public int getVanillaXPBoostModifier() { return AdvancedConfig.getInstance().getRanchingVanillaXPBoostRank1Multiplier(); }};
int numerical;
private Tier(int numerical) {
this.numerical = numerical;
}
public int toNumerical() {
return numerical;
}
abstract protected int getLevel();
abstract protected int getVanillaXPBoostModifier();
}
public static int multipleBirthIncreaseLevel = AdvancedConfig.getInstance().getMultipleBirthIncreasekLevel();
public static int multipleBirthMaxChance = AdvancedConfig.getInstance().getMultipleBirthMaxChance();
public static int multipleBirthLitterModifier = AdvancedConfig.getInstance().getMultipleBirthLitterModifier();
public static int masterHerderIncreaseLevel = AdvancedConfig.getInstance().getMultipleBirthIncreasekLevel();
public static int masterHerderMaxLevel = AdvancedConfig.getInstance().getMasterHerderMaxLevel();
public static int masterHerderMinimumSeconds = AdvancedConfig.getInstance().getMasterHerderMinimumSeconds();
public static int shearsMasteryMaxLevel = AdvancedConfig.getInstance().getShearsMasteryMaxLevel();
public static int shearsMasteryMaxChance = AdvancedConfig.getInstance().getShearsMasteryMaxChance();
public static int shearsMasteryMaxBonus = AdvancedConfig.getInstance().getShearsMasteryMaxBonus();
public static int artisanButcherMaxLevel = AdvancedConfig.getInstance().getArtisanButcherMaxLevel();
public static int artisanButcherMaxChance = AdvancedConfig.getInstance().getArtisanButcherMaxChance();
public static int artisanButcherMaxBonus = AdvancedConfig.getInstance().getArtisanButcherMaxBonus();
public static int carnivoresDietRankLevel1 = AdvancedConfig.getInstance().getCarnivoresDietRankChange();
public static int carnivoresDietRankLevel2 = carnivoresDietRankLevel1 * 2;
public static int carnivoresDietMaxLevel = carnivoresDietRankLevel1 * 5;
public static float shearExperience = 10;
public static float breedExperience = 10;
}

View File

@@ -0,0 +1,126 @@
package com.gmail.nossr50.skills.ranching;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Sheep;
import org.bukkit.inventory.ItemStack;
import org.bukkit.material.MaterialData;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.skills.SkillManager;
import com.gmail.nossr50.skills.ranching.Ranching.Tier;
import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.skills.SkillUtils;
public class RanchingManager extends SkillManager {
public RanchingManager(McMMOPlayer mcMMOPlayer) {
super(mcMMOPlayer, SkillType.RANCHING);
}
public boolean canUseMultipleBirth() {
return getSkillLevel() >= Ranching.multipleBirthIncreaseLevel && Permissions.multipleBirth(getPlayer());
}
public boolean canUseMasterHerder() {
return getSkillLevel() >= Ranching.masterHerderIncreaseLevel && Permissions.masterHerder(getPlayer());
}
public boolean canUseVanillaXpBoost() {
return getSkillLevel() >= Ranching.Tier.ONE.getLevel() && Permissions.vanillaXpBoost(getPlayer(), skill);
}
/**
* Handle the Carnivore's Diet ability
*
* @param rankChange The # of levels to change rank for the food
* @param eventFoodLevel The initial change in hunger from the event
* @return the modified change in hunger for the event
*/
public int handleCarnivoresDiet(int rankChange, int eventFoodLevel) {
return SkillUtils.handleFoodSkills(getPlayer(), skill, eventFoodLevel, Ranching.carnivoresDietRankLevel1, Ranching.carnivoresDietMaxLevel, rankChange);
}
public void handleShearsMasterySheep(Entity entity) {
if (SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Ranching.shearsMasteryMaxChance, Ranching.shearsMasteryMaxLevel)) {
Location location = entity.getLocation();
Sheep sheep = (Sheep) entity;
MaterialData wool = new MaterialData(Material.WOOL, sheep.getColor().getDyeData());
Misc.randomDropItems(location, wool.toItemStack(), Ranching.shearsMasteryMaxBonus);
}
}
public void handleShearsMasteryMooshroom(Entity entity) {
if (SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Ranching.shearsMasteryMaxChance, Ranching.shearsMasteryMaxLevel)) {
Location location = entity.getLocation();
ItemStack itemStack = new ItemStack(Material.RED_MUSHROOM);
Misc.randomDropItems(location, itemStack, Ranching.shearsMasteryMaxBonus);
}
}
public void handleArtisanButcher(Entity entity) {
if (SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Ranching.artisanButcherMaxChance, Ranching.artisanButcherMaxLevel)) {
Material material = null;
switch (entity.getType()) {
case CHICKEN:
material = Material.RAW_CHICKEN;
break;
case COW:
material = Material.RAW_BEEF;
break;
case PIG:
material = Material.PORK;
break;
default:
return;
}
Misc.randomDropItems(entity.getLocation(), new ItemStack(material), Ranching.artisanButcherMaxBonus);
}
}
/**
* Handle the vanilla XP boost for Ranching
*
* @param experience The amount of experience initially awarded by the event
* @return the modified event damage
*/
public int handleVanillaXpBoost(int experience) {
return experience * getVanillaXpMultiplier();
}
/**
* Gets the vanilla XP multiplier
*
* @return the vanilla XP multiplier
*/
private int getVanillaXpMultiplier() {
int skillLevel = getSkillLevel();
for (Tier tier : Tier.values()) {
if (skillLevel >= tier.getLevel()) {
return tier.getVanillaXPBoostModifier();
}
}
return 0;
}
public void handleMasterHerder(Entity entity, ItemStack inHand) {
// TODO Auto-generated method stub
}
public boolean isBreedFood(Entity entity, ItemStack inHand) {
// TODO Auto-generated method stub
// Check if the entity and the item type match
return false;
}
}

View File

@@ -166,6 +166,13 @@ public final class Permissions {
public static boolean remoteDetonation(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.mining.blastmining.detonate"); }
public static boolean superBreaker(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.mining.superbreaker"); }
/* RANCHING */
public static boolean multipleBirth(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.ranching.multiplebirth"); }
public static boolean masterHerder(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.ranching.masterherder"); }
public static boolean shearsMastery(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.ranching.shearsmastery"); }
public static boolean artisanButcher(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.ranching.artisanbutcher"); }
public static boolean carnivoresDiet(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.ranching.carnivoresdiet"); }
/* REPAIR */
public static boolean arcaneForging(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.repair.arcaneforging"); }
public static boolean repairMastery(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.repair.repairmastery"); }

View File

@@ -40,6 +40,7 @@ import com.gmail.nossr50.commands.skills.ExcavationCommand;
import com.gmail.nossr50.commands.skills.FishingCommand;
import com.gmail.nossr50.commands.skills.HerbalismCommand;
import com.gmail.nossr50.commands.skills.MiningCommand;
import com.gmail.nossr50.commands.skills.RanchingCommand;
import com.gmail.nossr50.commands.skills.RepairCommand;
import com.gmail.nossr50.commands.skills.SmeltingCommand;
import com.gmail.nossr50.commands.skills.SwordsCommand;
@@ -102,6 +103,10 @@ public final class CommandRegistrationManager {
command.setExecutor(new MiningCommand());
break;
case RANCHING:
command.setExecutor(new RanchingCommand());
break;
case REPAIR:
command.setExecutor(new RepairCommand());
break;

View File

@@ -244,6 +244,7 @@ public class SkillUtils {
public static boolean hasMiscSkills(Player player) {
return Permissions.skillEnabled(player, SkillType.ACROBATICS)
|| Permissions.skillEnabled(player, SkillType.SMELTING)
|| Permissions.skillEnabled(player, SkillType.RANCHING)
|| Permissions.skillEnabled(player, SkillType.REPAIR);
}