浏览代码

Added extra settings for Call of the Wild

* Requested in issue #910
* Adds a setting to configure the range check
* Adds a setting to summon multiple pets with one summon
TfT_02 12 年之前
父节点
当前提交
df2defe969

+ 1 - 0
Changelog.txt

@@ -10,6 +10,7 @@ Key:
 Version 1.4.07-dev
  + Added snow to excavation
  + Added new experience curve option. Cumulative curve, calculates experience needed for next level using power level.
+ + Added extra settings to config.yml for Call of the Wild (Taming)
  = Fixed bug with Skull Splitter not finding the locale string
  = Fixed issue where locale strings could cause the scoreboard header to be longer than 16 characters.
  = Fixed a bug with Beast Lore when the entity had no owner but was tamed.

+ 13 - 0
src/main/java/com/gmail/nossr50/config/Config.java

@@ -240,6 +240,19 @@ public class Config extends AutoUpdateConfigLoader {
     public int getTamingXPOcelot() { return config.getInt("Experience.Taming.Animal_Taming.Ocelot", 500); }
     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 double getTamingCOTWRange() { return config.getDouble("Skills.Taming.Call_Of_The_Wild.Range", 40); }
+    public int getTamingCOTWAmount(EntityType type) {
+        switch (type) {
+            case OCELOT:
+                return config.getInt("Skills.Taming.Call_Of_The_Wild.Ocelot_Amount", 1);
+
+            case WOLF:
+                return config.getInt("Skills.Taming.Call_Of_The_Wild.Wolf_Amount", 1);
+
+            default:
+                return 1;
+        }
+    }
 
     /* Woodcutting */
     public int getWoodcuttingXPOak() { return config.getInt("Experience.Woodcutting.Oak", 70); }

+ 27 - 17
src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java

@@ -178,29 +178,39 @@ public class TamingManager extends SkillManager {
             return;
         }
 
-        for (Entity entity : player.getNearbyEntities(40, 40, 40)) {
-            if (entity.getType() == type) {
-                player.sendMessage(Taming.getCallOfTheWildFailureMessage(type));
-                return;
+        double range = Config.getInstance().getTamingCOTWRange();
+        if (range > 0) {
+            for (Entity entity : player.getNearbyEntities(range, range, range)) {
+                if (entity.getType() == type) {
+                    player.sendMessage(Taming.getCallOfTheWildFailureMessage(type));
+                    return;
+                }
             }
         }
 
-        LivingEntity entity = (LivingEntity) player.getWorld().spawnEntity(player.getLocation(), type);
+        int amount = Config.getInstance().getTamingCOTWAmount(type);
+        if (amount <= 0) {
+            amount = 1;
+        }
 
-        entity.setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
-        ((Tameable) entity).setOwner(player);
+        for (int i = 0; i < amount; i++) {
+            LivingEntity entity = (LivingEntity) player.getWorld().spawnEntity(player.getLocation(), type);
 
-        if (type == EntityType.OCELOT) {
-            ((Ocelot) entity).setCatType(Ocelot.Type.getType(1 + Misc.getRandom().nextInt(3)));
-        }
-        else {
-            entity.setMaxHealth(20);
-            entity.setHealth(entity.getMaxHealth());
-        }
+            entity.setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
+            ((Tameable) entity).setOwner(player);
 
-        if (Permissions.renamePets(player)) {
-            entity.setCustomName(LocaleLoader.getString("Taming.Summon.Name.Format", player.getName(), StringUtils.getPrettyEntityTypeString(entity.getType())));
-            entity.setCustomNameVisible(true);
+            if (type == EntityType.OCELOT) {
+                ((Ocelot) entity).setCatType(Ocelot.Type.getType(1 + Misc.getRandom().nextInt(3)));
+            }
+            else {
+                entity.setMaxHealth(20);
+                entity.setHealth(entity.getMaxHealth());
+            }
+
+            if (Permissions.renamePets(player)) {
+                entity.setCustomName(LocaleLoader.getString("Taming.Summon.Name.Format", player.getName(), StringUtils.getPrettyEntityTypeString(entity.getType())));
+                entity.setCustomNameVisible(true);
+            }
         }
 
         player.setItemInHand(new ItemStack(heldItem.getType(), heldItemAmount - summonAmount));

+ 6 - 0
src/main/resources/config.yml

@@ -221,6 +221,12 @@ Skills:
         Call_Of_The_Wild:
             Bones_Required: 10
             Fish_Required: 10
+
+            # Range to check for nearby pets when using Call Of The Wild, 0 will disable the check
+            Range: 40
+            # Amount of pets to summon when using Call Of The Wild
+            Wolf_Amount: 1
+            Ocelot_Amount: 1
     Unarmed:
         Enabled_For_PVP: true
         Enabled_For_PVE: true