mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-25 22:56:45 +01:00
Add bow force multiplier to Archery XP.
This commit is contained in:
parent
9ec376a228
commit
8d5696507a
@ -24,6 +24,7 @@ Version 1.4.06-dev
|
|||||||
+ Added McMMOAbilityActivateEvent and McMMOAbilityDeactivateEvent
|
+ Added McMMOAbilityActivateEvent and McMMOAbilityDeactivateEvent
|
||||||
+ Added config options to toggle the size of fireworks
|
+ Added config options to toggle the size of fireworks
|
||||||
+ Added config option to multiply xp gains from mob spawner mobs
|
+ Added config option to multiply xp gains from mob spawner mobs
|
||||||
|
+ Added multiplier to Archery XP based on bow force
|
||||||
= Fixed bug where players were able to join the same party multiple times
|
= Fixed bug where players were able to join the same party multiple times
|
||||||
= Fixed displaying partial names when trying to use /ptp
|
= Fixed displaying partial names when trying to use /ptp
|
||||||
= Fixed wolves from Call of the Wild only having 8 health
|
= Fixed wolves from Call of the Wild only having 8 health
|
||||||
|
@ -52,6 +52,8 @@ public class AdvancedConfig extends AutoUpdateConfigLoader {
|
|||||||
public double getRetrieveChanceMax() { return config.getDouble("Skills.Archery.Retrieve_MaxBonus", 100.0D); }
|
public double getRetrieveChanceMax() { return config.getDouble("Skills.Archery.Retrieve_MaxBonus", 100.0D); }
|
||||||
public int getRetrieveMaxBonusLevel() { return config.getInt("Skills.Archery.Retrieve_MaxBonusLevel", 1000); }
|
public int getRetrieveMaxBonusLevel() { return config.getInt("Skills.Archery.Retrieve_MaxBonusLevel", 1000); }
|
||||||
|
|
||||||
|
public double getForceMultiplier() { return config.getDouble("Skills.Archery.Force_Multiplier", 2.0D); }
|
||||||
|
|
||||||
/* AXES */
|
/* AXES */
|
||||||
public int getBonusDamageAxesBonusMax() { return config.getInt("Skills.Axes.DamageIncrease_MaxBonus", 4); }
|
public int getBonusDamageAxesBonusMax() { return config.getInt("Skills.Axes.DamageIncrease_MaxBonus", 4); }
|
||||||
public int getBonusDamageAxesMaxBonusLevel() { return config.getInt("Skills.Axes.DamageIncrease_MaxBonusLevel", 200); }
|
public int getBonusDamageAxesMaxBonusLevel() { return config.getInt("Skills.Axes.DamageIncrease_MaxBonusLevel", 200); }
|
||||||
|
@ -4,6 +4,7 @@ import org.bukkit.OfflinePlayer;
|
|||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.entity.AnimalTamer;
|
import org.bukkit.entity.AnimalTamer;
|
||||||
|
import org.bukkit.entity.Arrow;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.FallingBlock;
|
import org.bukkit.entity.FallingBlock;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
@ -28,8 +29,10 @@ import org.bukkit.event.entity.EntityTargetEvent;
|
|||||||
import org.bukkit.event.entity.ExplosionPrimeEvent;
|
import org.bukkit.event.entity.ExplosionPrimeEvent;
|
||||||
import org.bukkit.event.entity.FoodLevelChangeEvent;
|
import org.bukkit.event.entity.FoodLevelChangeEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent;
|
import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent;
|
||||||
import com.gmail.nossr50.events.fake.FakeEntityDamageEvent;
|
import com.gmail.nossr50.events.fake.FakeEntityDamageEvent;
|
||||||
@ -59,7 +62,12 @@ public class EntityListener implements Listener {
|
|||||||
ItemStack bow = event.getBow();
|
ItemStack bow = event.getBow();
|
||||||
|
|
||||||
if (bow != null && bow.containsEnchantment(Enchantment.ARROW_INFINITE)) {
|
if (bow != null && bow.containsEnchantment(Enchantment.ARROW_INFINITE)) {
|
||||||
event.getProjectile().setMetadata(mcMMO.infiniteArrowKey, mcMMO.metadataValue);
|
Entity projectile = event.getProjectile();
|
||||||
|
|
||||||
|
if (projectile instanceof Arrow) {
|
||||||
|
projectile.setMetadata(mcMMO.infiniteArrowKey, mcMMO.metadataValue);
|
||||||
|
projectile.setMetadata(mcMMO.bowForceKey, new FixedMetadataValue(plugin, Math.min(event.getForce() * AdvancedConfig.getInstance().getForceMultiplier(), 1.0)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,6 +95,7 @@ public class mcMMO extends JavaPlugin {
|
|||||||
public final static String customVisibleKey = "mcMMO: Name Visibility";
|
public final static String customVisibleKey = "mcMMO: Name Visibility";
|
||||||
public final static String droppedItemKey = "mcMMO: Tracked Item";
|
public final static String droppedItemKey = "mcMMO: Tracked Item";
|
||||||
public final static String infiniteArrowKey = "mcMMO: Infinite Arrow";
|
public final static String infiniteArrowKey = "mcMMO: Infinite Arrow";
|
||||||
|
public final static String bowForceKey = "mcMMO: Bow Force";
|
||||||
|
|
||||||
public static FixedMetadataValue metadataValue;
|
public static FixedMetadataValue metadataValue;
|
||||||
|
|
||||||
|
@ -250,7 +250,9 @@ public final class CombatUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
archeryManager.distanceXpBonus(target);
|
archeryManager.distanceXpBonus(target);
|
||||||
startGainXp(mcMMOPlayer, target, SkillType.ARCHERY);
|
|
||||||
|
double forceMultiplier = damager.hasMetadata(mcMMO.bowForceKey) ? damager.getMetadata(mcMMO.bowForceKey).get(0).asDouble() : 1.0;
|
||||||
|
startGainXp(mcMMOPlayer, target, SkillType.ARCHERY, forceMultiplier);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -424,6 +426,10 @@ public final class CombatUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void startGainXp(McMMOPlayer mcMMOPlayer, LivingEntity target, SkillType skillType) {
|
||||||
|
startGainXp(mcMMOPlayer, target, skillType, 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start the task that gives combat XP.
|
* Start the task that gives combat XP.
|
||||||
*
|
*
|
||||||
@ -431,7 +437,7 @@ public final class CombatUtils {
|
|||||||
* @param target The defending entity
|
* @param target The defending entity
|
||||||
* @param skillType The skill being used
|
* @param skillType The skill being used
|
||||||
*/
|
*/
|
||||||
public static void startGainXp(McMMOPlayer mcMMOPlayer, LivingEntity target, SkillType skillType) {
|
public static void startGainXp(McMMOPlayer mcMMOPlayer, LivingEntity target, SkillType skillType, double multiplier) {
|
||||||
double baseXP = 0;
|
double baseXP = 0;
|
||||||
|
|
||||||
if (target instanceof Player) {
|
if (target instanceof Player) {
|
||||||
@ -514,6 +520,8 @@ public final class CombatUtils {
|
|||||||
baseXP *= 10;
|
baseXP *= 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
baseXP *= multiplier;
|
||||||
|
|
||||||
if (baseXP != 0) {
|
if (baseXP != 0) {
|
||||||
new AwardCombatXpTask(mcMMOPlayer, skillType, baseXP, target).runTaskLater(mcMMO.p, 0);
|
new AwardCombatXpTask(mcMMOPlayer, skillType, baseXP, target).runTaskLater(mcMMO.p, 0);
|
||||||
}
|
}
|
||||||
|
@ -71,6 +71,9 @@ Skills:
|
|||||||
# Retrieve_MaxBonusLevel: Maximum bonus level for Arrow retrieval, at this level the chance of retrieving arrows from mobs is Retrieve_MaxBonus
|
# Retrieve_MaxBonusLevel: Maximum bonus level for Arrow retrieval, at this level the chance of retrieving arrows from mobs is Retrieve_MaxBonus
|
||||||
Retrieve_MaxChance: 100.0
|
Retrieve_MaxChance: 100.0
|
||||||
Retrieve_MaxBonusLevel: 1000
|
Retrieve_MaxBonusLevel: 1000
|
||||||
|
|
||||||
|
#Force_Multiplier: Multiply the force of the bow by this for an XP boost.
|
||||||
|
Force_Multiplier: 2.0
|
||||||
#
|
#
|
||||||
# Settings for Axes
|
# Settings for Axes
|
||||||
###
|
###
|
||||||
|
Loading…
Reference in New Issue
Block a user