From 0fe3ad7432bfbc79481c101f2cd03e2c8fa68a4e Mon Sep 17 00:00:00 2001 From: TfT_02 Date: Sun, 23 Mar 2014 14:31:51 +0100 Subject: [PATCH] Reworked COTW config options + made COTW item configurable Adresses #1481 partially --- Changelog.txt | 3 +- .../commands/skills/TamingCommand.java | 6 +-- .../java/com/gmail/nossr50/config/Config.java | 41 ++++++++++++++----- .../nossr50/listeners/PlayerListener.java | 24 ++++------- .../nossr50/skills/taming/TamingManager.java | 6 +-- src/main/resources/config.yml | 22 ++++++---- 6 files changed, 62 insertions(+), 40 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 34b6efbac..d1d9c5f0b 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -21,8 +21,9 @@ Version 1.4.08-dev + Added new experience bonus perk 'mcmmo.perks.xp.customboost.' multiplies incoming XP by the boost amount defined in the experience config + Added Ender Dragon, Wither, and Witch to combat experience multipliers - they do not give XP by default + Added support for multiple mod config files, naming can be done as either armor..yml or .armor.yml + + Added config options to configure the items used in "Call of the Wild" = Fixed bug where healthbars wouldn't display if skills were disabled - = Fixed bug with Call of The Wild entities despawning + = Fixed bug with "Call of the Wild" entities despawning = Fixed bug with updating (very) old user data. = Fixed bug with checking maximum durability of mod items. = Fixed exploit involving Call of The Wild. diff --git a/src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java index e5974a46f..50e7ac7a9 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java @@ -91,9 +91,9 @@ public class TamingCommand extends SkillCommand { if (canCallWild) { messages.add(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Taming.Effect.12"), LocaleLoader.getString("Taming.Effect.13"))); - messages.add(LocaleLoader.getString("Taming.Effect.14", Config.getInstance().getTamingCOTWOcelotCost())); - messages.add(LocaleLoader.getString("Taming.Effect.15", Config.getInstance().getTamingCOTWWolfCost())); - messages.add(LocaleLoader.getString("Taming.Effect.20", Config.getInstance().getTamingCOTWHorseCost())); + messages.add(LocaleLoader.getString("Taming.Effect.14", Config.getInstance().getTamingCOTWCost(EntityType.OCELOT))); + messages.add(LocaleLoader.getString("Taming.Effect.15", Config.getInstance().getTamingCOTWCost(EntityType.WOLF))); + messages.add(LocaleLoader.getString("Taming.Effect.20", Config.getInstance().getTamingCOTWCost(EntityType.HORSE))); } return messages; diff --git a/src/main/java/com/gmail/nossr50/config/Config.java b/src/main/java/com/gmail/nossr50/config/Config.java index 0745a5f73..26f20bc55 100644 --- a/src/main/java/com/gmail/nossr50/config/Config.java +++ b/src/main/java/com/gmail/nossr50/config/Config.java @@ -182,20 +182,40 @@ public class Config extends AutoUpdateConfigLoader { reason.add("Cannot use the same item for Repair and Salvage anvils!"); } - if (getTamingCOTWWolfCost() < 1) { - reason.add("Skills.Taming.Call_Of_The_Wild.Bones_Required should be at least 1!"); + if (getTamingCOTWMaterial(EntityType.WOLF) == null) { + reason.add("Skills.Taming.Call_Of_The_Wild.Wolf.Item_Material is invalid!!"); } - if (getTamingCOTWOcelotCost() < 1) { - reason.add("Skills.Taming.Call_Of_The_Wild.Fish_Required should be at least 1!"); + if (getTamingCOTWMaterial(EntityType.OCELOT) == null) { + reason.add("Skills.Taming.Call_Of_The_Wild.Ocelot.Item_Material is invalid!!"); } - if (getTamingCOTWAmount(EntityType.OCELOT) <= 0) { - reason.add("Skills.Taming.Call_Of_The_Wild.Ocelot_Amount should be greater than 0!"); + if (getTamingCOTWMaterial(EntityType.HORSE) == null) { + reason.add("Skills.Taming.Call_Of_The_Wild.Horse.Item_Material is invalid!!"); + } + + if (getTamingCOTWCost(EntityType.WOLF) <= 0) { + reason.add("Skills.Taming.Call_Of_The_Wild.Wolf.Item_Amount should be greater than 0!"); + } + + if (getTamingCOTWCost(EntityType.OCELOT) <= 0) { + reason.add("Skills.Taming.Call_Of_The_Wild.Ocelot.Item_Amount should be greater than 0!"); + } + + if (getTamingCOTWCost(EntityType.HORSE) <= 0) { + reason.add("Skills.Taming.Call_Of_The_Wild.Horse.Item_Amount should be greater than 0!"); } if (getTamingCOTWAmount(EntityType.WOLF) <= 0) { - reason.add("Skills.Taming.Call_Of_The_Wild.Wolf_Amount should be greater than 0!"); + reason.add("Skills.Taming.Call_Of_The_Wild.Wolf.Summon_Amount should be greater than 0!"); + } + + if (getTamingCOTWAmount(EntityType.OCELOT) <= 0) { + reason.add("Skills.Taming.Call_Of_The_Wild.Ocelot.Summon_Amount should be greater than 0!"); + } + + if (getTamingCOTWAmount(EntityType.HORSE) <= 0) { + reason.add("Skills.Taming.Call_Of_The_Wild.Horse.Summon_Amount should be greater than 0!"); } return noErrorsInConfig(reason); @@ -448,11 +468,10 @@ public class Config extends AutoUpdateConfigLoader { public boolean getUnarmedBlockCrackerSmoothbrickToCracked() { return config.getBoolean("Skills.Unarmed.Block_Cracker.SmoothBrick_To_CrackedBrick", true); } /* Taming */ - public int getTamingCOTWHorseCost() { return config.getInt("Skills.Taming.Call_Of_The_Wild.Apples_Required", 10); } - public int getTamingCOTWWolfCost() { return config.getInt("Skills.Taming.Call_Of_The_Wild.Bones_Required", 10); } - public int getTamingCOTWOcelotCost() { return config.getInt("Skills.Taming.Call_Of_The_Wild.Fish_Required", 10); } + public Material getTamingCOTWMaterial(EntityType type) { return Material.matchMaterial(config.getString("Skills.Taming.Call_Of_The_Wild." + StringUtils.getPrettyEntityTypeString(type) + ".Item_Material")); } + public int getTamingCOTWCost(EntityType type) { return config.getInt("Skills.Taming.Call_Of_The_Wild." + StringUtils.getPrettyEntityTypeString(type) + ".Item_Amount"); } + public int getTamingCOTWAmount(EntityType type) { return config.getInt("Skills.Taming.Call_Of_The_Wild." + StringUtils.getPrettyEntityTypeString(type) + ".Summon_Amount"); } public double getTamingCOTWRange() { return config.getDouble("Skills.Taming.Call_Of_The_Wild.Range", 40.0D); } - public int getTamingCOTWAmount(EntityType type) { return config.getInt("Skills.Taming.Call_Of_The_Wild." + StringUtils.getPrettyEntityTypeString(type)+ "_Amount"); } /* Woodcutting */ public boolean getOakDoubleDropsEnabled() { return config.getBoolean("Double_Drops.Woodcutting.Oak", true); } diff --git a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java index 154354c0d..25a29a222 100644 --- a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java @@ -6,6 +6,7 @@ import org.bukkit.Sound; import org.bukkit.block.Block; import org.bukkit.block.BlockState; import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; import org.bukkit.entity.Item; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; @@ -596,21 +597,14 @@ public class PlayerListener implements Listener { Material type = heldItem.getType(); TamingManager tamingManager = mcMMOPlayer.getTamingManager(); - switch (type) { - case APPLE: - tamingManager.summonHorse(); - break; - - case BONE: - tamingManager.summonWolf(); - break; - - case RAW_FISH: - tamingManager.summonOcelot(); - break; - - default: - break; + if (type == Config.getInstance().getTamingCOTWMaterial(EntityType.WOLF)) { + tamingManager.summonWolf(); + } + else if (type == Config.getInstance().getTamingCOTWMaterial(EntityType.OCELOT)) { + tamingManager.summonOcelot(); + } + else if (type == Config.getInstance().getTamingCOTWMaterial(EntityType.HORSE)) { + tamingManager.summonHorse(); } break; diff --git a/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java b/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java index 803172d78..d91559e17 100644 --- a/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java +++ b/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java @@ -146,7 +146,7 @@ public class TamingManager extends SkillManager { return; } - callOfTheWild(EntityType.OCELOT, Config.getInstance().getTamingCOTWOcelotCost()); + callOfTheWild(EntityType.OCELOT, Config.getInstance().getTamingCOTWCost(EntityType.OCELOT)); } /** @@ -157,7 +157,7 @@ public class TamingManager extends SkillManager { return; } - callOfTheWild(EntityType.WOLF, Config.getInstance().getTamingCOTWWolfCost()); + callOfTheWild(EntityType.WOLF, Config.getInstance().getTamingCOTWCost(EntityType.WOLF)); } /** @@ -168,7 +168,7 @@ public class TamingManager extends SkillManager { return; } - callOfTheWild(EntityType.HORSE, Config.getInstance().getTamingCOTWHorseCost()); + callOfTheWild(EntityType.HORSE, Config.getInstance().getTamingCOTWCost(EntityType.HORSE)); } /** diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 6dab58094..67187bfeb 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -317,16 +317,24 @@ Skills: Enabled_For_PVE: true Level_Cap: 0 Call_Of_The_Wild: - Bones_Required: 10 - Fish_Required: 10 - Apples_Required: 10 + # Item_Material: Material of the item needed to summon the pet + # Item_Amount: Amount of items required to summon the pet + # Summon_Amount: Amount of pets to summon when using Call Of The Wild + Wolf: + Item_Material: BONE + Item_Amount: 10 + Summon_Amount: 1 + Ocelot: + Item_Material: RAW_FISH + Item_Amount: 10 + Summon_Amount: 1 + Horse: + Item_Material: APPLE + Item_Amount: 10 + Summon_Amount: 1 # Range to check for nearby pets when using Call Of The Wild, 0 will disable the check Range: 40.0 - # Amount of pets to summon when using Call Of The Wild - Wolf_Amount: 1 - Ocelot_Amount: 1 - Horse_Amount: 1 Unarmed: Enabled_For_PVP: true Enabled_For_PVE: true