mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-24 22:26:46 +01:00
Merge branch 'master' of github.com:mcMMO-Dev/mcMMO into tridentsxbows
This commit is contained in:
commit
9e5c9ec567
@ -60,11 +60,33 @@ Version 2.2.000
|
|||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
These are the first new skills that I've written for mcMMO in about 9 years, I'll be listening closely to feedback and tweaking them often.
|
These are the first new skills that I've written for mcMMO in about 9 years, I'll be listening closely to feedback and tweaking them often.
|
||||||
|
Version 2.1.145
|
||||||
|
Reverted 'Changed one of the PlayerInteractEvent listeners to ignore cancelled events' from 2.1.144
|
||||||
|
|
||||||
|
|
||||||
|
Version 2.1.144
|
||||||
|
Steel Arm Style damage is now customizable in advanced.yml (make sure to set override to true)
|
||||||
|
Fixed a bug where Deflect worked against non-arrow projectiles
|
||||||
|
Fixed a bug where Deflect was checked twice, resulting in two chances to deflect effectively
|
||||||
|
Fixed a bug where Roll wouldn't award XP when fall height was over a certain amount
|
||||||
|
Lowered the XP ceiling of Roll
|
||||||
|
Fixed a NPE that would happen involving taming in combat processing
|
||||||
|
Updated hu_HU locale (thanks andris155)
|
||||||
|
Fixed a bug where mcMMO could erase item data on Wheat Seeds when using Green Thumb on a block
|
||||||
|
Changed one of the PlayerInteractEvent listeners to ignore cancelled events (should improve plugin compatibility)
|
||||||
|
mmodebug mode now prints some information when fuel efficiency is applied to a furnace
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
I seem to consistently find old bugs in mcMMO, this deflect bug where it was checked twice, who knows how many years its been in mcMMO, I didn't check but its probably between 5-7.
|
||||||
|
I was waiting to make Steel Arm Customizable for the config update (due in the future), but enough people ask for it that I decided to do the extra work to put it into 2.1.XX
|
||||||
|
Tridents & Crossbows is likely going to be in development continuing into September, I am taking my time to make it feature packed and I hope you guys will appreciate it.
|
||||||
|
|
||||||
|
>>>>>>> 2810d36e085d6adaa209a6a119f92504234a0560
|
||||||
Version 2.1.143
|
Version 2.1.143
|
||||||
mcMMO now tracks super ability boosted items through persistent metadata
|
mcMMO now tracks super ability boosted items through persistent metadata
|
||||||
mcMMO no longer relies on lore to tell if an item has been modified by a super ability
|
mcMMO no longer relies on lore to tell if an item has been modified by a super ability
|
||||||
Slight buff to Rupture (1 more tick duration across all ranks)
|
Slight buff to Rupture (1 more tick duration across all ranks)
|
||||||
Lore no longer gets added to items being buffed by mcMMO
|
Lore no longer gets added to items being buffed by mcMMO./
|
||||||
|
|
||||||
NOTES:
|
NOTES:
|
||||||
The item tracking is persistent for MC versions 1.13-1.16.2 (and beyond). However the code handling the persistence for 1.13.2 differs from the other versions. It shouldn't result in any problems.
|
The item tracking is persistent for MC versions 1.13-1.16.2 (and beyond). However the code handling the persistence for 1.13.2 differs from the other versions. It shouldn't result in any problems.
|
||||||
|
@ -981,6 +981,11 @@ public class AdvancedConfig extends AutoUpdateConfigLoader {
|
|||||||
|
|
||||||
/* UNARMED */
|
/* UNARMED */
|
||||||
|
|
||||||
|
public boolean isSteelArmDamageCustom() { return config.getBoolean("Skills.Unarmed.SteelArmStyle.Damage_Override", false); }
|
||||||
|
public double getSteelArmOverride(int rank, double def) {
|
||||||
|
String key = "Rank_" + rank;
|
||||||
|
return config.getDouble("Skills.Unarmed.SteelArmStyle.Override." + key, def);
|
||||||
|
}
|
||||||
public boolean getDisarmProtected() { return config.getBoolean("Skills.Unarmed.Disarm.AntiTheft", false); }
|
public boolean getDisarmProtected() { return config.getBoolean("Skills.Unarmed.Disarm.AntiTheft", false); }
|
||||||
|
|
||||||
/* WOODCUTTING */
|
/* WOODCUTTING */
|
||||||
|
@ -75,7 +75,7 @@ public class Roll extends AcrobaticsSubSkill {
|
|||||||
*/
|
*/
|
||||||
Player player = (Player) ((EntityDamageEvent) event).getEntity();
|
Player player = (Player) ((EntityDamageEvent) event).getEntity();
|
||||||
if (canRoll(player)) {
|
if (canRoll(player)) {
|
||||||
entityDamageEvent.setDamage(rollCheck(player, mmoPlayer, entityDamageEvent.getDamage()));
|
entityDamageEvent.setDamage(rollCheck(player, mmoPlayer, entityDamageEvent.getFinalDamage()));
|
||||||
|
|
||||||
if (entityDamageEvent.getFinalDamage() == 0) {
|
if (entityDamageEvent.getFinalDamage() == 0) {
|
||||||
entityDamageEvent.setCancelled(true);
|
entityDamageEvent.setCancelled(true);
|
||||||
@ -119,8 +119,8 @@ public class Roll extends AcrobaticsSubSkill {
|
|||||||
String rollChance, rollChanceLucky, gracefulRollChance, gracefulRollChanceLucky;
|
String rollChance, rollChanceLucky, gracefulRollChance, gracefulRollChanceLucky;
|
||||||
|
|
||||||
/* Values related to the player */
|
/* Values related to the player */
|
||||||
PlayerProfile playerProfile = mcMMO.getUserManager().getPlayer(player);
|
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
||||||
float skillValue = playerProfile.getSkillLevel(getPrimarySkill());
|
float skillValue = mmoPlayer.getExperienceManager().getSkillLevel(getPrimarySkill());
|
||||||
boolean isLucky = Permissions.lucky(player, getPrimarySkill());
|
boolean isLucky = Permissions.lucky(player, getPrimarySkill());
|
||||||
|
|
||||||
String[] rollStrings = RandomChanceUtil.calculateAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.ACROBATICS_ROLL);
|
String[] rollStrings = RandomChanceUtil.calculateAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.ACROBATICS_ROLL);
|
||||||
@ -188,7 +188,7 @@ public class Roll extends AcrobaticsSubSkill {
|
|||||||
*/
|
*/
|
||||||
private double rollCheck(Player player, McMMOPlayer mmoPlayer, double damage) {
|
private double rollCheck(Player player, McMMOPlayer mmoPlayer, double damage) {
|
||||||
|
|
||||||
int skillLevel = mmoPlayer.getSkillLevel(getPrimarySkill());
|
int skillLevel = mmoPlayer.getExperienceManager().getSkillLevel(getPrimarySkill());
|
||||||
|
|
||||||
if (player.isSneaking()) {
|
if (player.isSneaking()) {
|
||||||
return gracefulRollCheck(player, mmoPlayer, damage, skillLevel);
|
return gracefulRollCheck(player, mmoPlayer, damage, skillLevel);
|
||||||
@ -292,7 +292,7 @@ public class Roll extends AcrobaticsSubSkill {
|
|||||||
|
|
||||||
private float calculateRollXP(Player player, double damage, boolean isRoll) {
|
private float calculateRollXP(Player player, double damage, boolean isRoll) {
|
||||||
//Clamp Damage to account for insane DRs
|
//Clamp Damage to account for insane DRs
|
||||||
damage = Math.min(40, damage);
|
damage = Math.min(20, damage);
|
||||||
|
|
||||||
ItemStack boots = player.getInventory().getBoots();
|
ItemStack boots = player.getInventory().getBoots();
|
||||||
float xp = (float) (damage * (isRoll ? ExperienceConfig.getInstance().getRollXPModifier() : ExperienceConfig.getInstance().getFallXPModifier()));
|
float xp = (float) (damage * (isRoll ? ExperienceConfig.getInstance().getRollXPModifier() : ExperienceConfig.getInstance().getFallXPModifier()));
|
||||||
|
@ -412,7 +412,7 @@ public class EntityListener implements Listener {
|
|||||||
Player defendingPlayer = (Player) defender;
|
Player defendingPlayer = (Player) defender;
|
||||||
Player attackingPlayer;
|
Player attackingPlayer;
|
||||||
|
|
||||||
//If the attacker is a Player or a projectile beloning to a player
|
//If the attacker is a Player or a projectile belonging to a player
|
||||||
if(attacker instanceof Projectile || attacker instanceof Player) {
|
if(attacker instanceof Projectile || attacker instanceof Player) {
|
||||||
if(attacker instanceof Projectile) {
|
if(attacker instanceof Projectile) {
|
||||||
Projectile projectile = (Projectile) attacker;
|
Projectile projectile = (Projectile) attacker;
|
||||||
@ -433,7 +433,7 @@ public class EntityListener implements Listener {
|
|||||||
UnarmedManager unarmedManager = mmoPlayer.getUnarmedManager();
|
UnarmedManager unarmedManager = mmoPlayer.getUnarmedManager();
|
||||||
|
|
||||||
if (unarmedManager.canDeflect()) {
|
if (unarmedManager.canDeflect()) {
|
||||||
if (unarmedManager.deflectCheck()) {
|
if (projectile instanceof Arrow && unarmedManager.deflectCheck()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import com.gmail.nossr50.skills.alchemy.Alchemy;
|
|||||||
import com.gmail.nossr50.skills.alchemy.AlchemyPotionBrewer;
|
import com.gmail.nossr50.skills.alchemy.AlchemyPotionBrewer;
|
||||||
import com.gmail.nossr50.util.ItemUtils;
|
import com.gmail.nossr50.util.ItemUtils;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||||
import com.gmail.nossr50.worldguard.WorldGuardManager;
|
import com.gmail.nossr50.worldguard.WorldGuardManager;
|
||||||
import com.gmail.nossr50.worldguard.WorldGuardUtils;
|
import com.gmail.nossr50.worldguard.WorldGuardUtils;
|
||||||
@ -71,7 +72,22 @@ public class InventoryListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
boolean debugMode = player.isOnline() && mcMMO.getUserManager().getPlayer(player).isDebugMode();
|
||||||
|
|
||||||
|
if(debugMode) {
|
||||||
|
player.sendMessage("FURNACE FUEL EFFICIENCY DEBUG REPORT");
|
||||||
|
player.sendMessage("Furnace - "+furnace.hashCode());
|
||||||
|
player.sendMessage("Furnace Type: "+furnaceBlock.getType().toString());
|
||||||
|
player.sendMessage("Burn Length before Fuel Efficiency is applied - "+event.getBurnTime());
|
||||||
|
}
|
||||||
|
|
||||||
event.setBurnTime(mcMMO.getUserManager().getPlayer(player).getSmeltingManager().fuelEfficiency(event.getBurnTime()));
|
event.setBurnTime(mcMMO.getUserManager().getPlayer(player).getSmeltingManager().fuelEfficiency(event.getBurnTime()));
|
||||||
|
|
||||||
|
if(debugMode) {
|
||||||
|
player.sendMessage("New Furnace Burn Length (after applying fuel efficiency) "+event.getBurnTime());
|
||||||
|
player.sendMessage("");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,12 +155,20 @@ public class UnarmedManager extends SkillManager {
|
|||||||
|
|
||||||
public double getSteelArmStyleDamage() {
|
public double getSteelArmStyleDamage() {
|
||||||
double rank = RankUtils.getRank(getPlayer(), SubSkillType.UNARMED_STEEL_ARM_STYLE);
|
double rank = RankUtils.getRank(getPlayer(), SubSkillType.UNARMED_STEEL_ARM_STYLE);
|
||||||
|
|
||||||
double bonus = 0;
|
double bonus = 0;
|
||||||
|
|
||||||
if(rank >= 18)
|
if(rank >= 18)
|
||||||
bonus = 1 + rank - 18;
|
bonus = 1 + rank - 18;
|
||||||
|
|
||||||
return bonus + 0.5 + (rank / 2);
|
double finalBonus = bonus + 0.5 + (rank / 2);
|
||||||
|
|
||||||
|
|
||||||
|
if(AdvancedConfig.getInstance().isSteelArmDamageCustom()) {
|
||||||
|
return AdvancedConfig.getInstance().getSteelArmOverride(RankUtils.getRank(getPlayer(), SubSkillType.UNARMED_STEEL_ARM_STYLE), finalBonus);
|
||||||
|
} else {
|
||||||
|
return finalBonus;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -5,8 +5,8 @@ import com.gmail.nossr50.mcMMO;
|
|||||||
import com.gmail.nossr50.util.StringUtils;
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
import com.gmail.nossr50.util.compat.layers.attackcooldown.PlayerAttackCooldownExploitPreventionLayer;
|
import com.gmail.nossr50.util.compat.layers.attackcooldown.PlayerAttackCooldownExploitPreventionLayer;
|
||||||
import com.gmail.nossr50.util.compat.layers.persistentdata.AbstractPersistentDataLayer;
|
import com.gmail.nossr50.util.compat.layers.persistentdata.AbstractPersistentDataLayer;
|
||||||
import com.gmail.nossr50.util.compat.layers.persistentdata.SpigotPersistentDataLayer;
|
import com.gmail.nossr50.util.compat.layers.persistentdata.SpigotPersistentDataLayer_1_13;
|
||||||
import com.gmail.nossr50.util.compat.layers.persistentdata.SpigotTemporaryDataLayer;
|
import com.gmail.nossr50.util.compat.layers.persistentdata.SpigotPersistentDataLayer_1_14;
|
||||||
import com.gmail.nossr50.util.nms.NMSVersion;
|
import com.gmail.nossr50.util.nms.NMSVersion;
|
||||||
import com.gmail.nossr50.util.platform.MinecraftGameVersion;
|
import com.gmail.nossr50.util.platform.MinecraftGameVersion;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@ -67,10 +67,10 @@ public class CompatibilityManager {
|
|||||||
private void initPersistentDataLayer() {
|
private void initPersistentDataLayer() {
|
||||||
if(minecraftGameVersion.getMinorVersion().asInt() >= 14 || minecraftGameVersion.getMajorVersion().asInt() >= 2) {
|
if(minecraftGameVersion.getMinorVersion().asInt() >= 14 || minecraftGameVersion.getMajorVersion().asInt() >= 2) {
|
||||||
|
|
||||||
persistentDataLayer = new SpigotPersistentDataLayer();
|
persistentDataLayer = new SpigotPersistentDataLayer_1_14();
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
persistentDataLayer = new SpigotTemporaryDataLayer();
|
persistentDataLayer = new SpigotPersistentDataLayer_1_13();
|
||||||
}
|
}
|
||||||
|
|
||||||
supportedLayers.put(CompatibilityType.PERSISTENT_DATA, true);
|
supportedLayers.put(CompatibilityType.PERSISTENT_DATA, true);
|
||||||
|
@ -16,7 +16,7 @@ import java.util.UUID;
|
|||||||
/**
|
/**
|
||||||
* Persistent Data API is unavailable
|
* Persistent Data API is unavailable
|
||||||
*/
|
*/
|
||||||
public class SpigotTemporaryDataLayer extends AbstractPersistentDataLayer {
|
public class SpigotPersistentDataLayer_1_13 extends AbstractPersistentDataLayer {
|
||||||
|
|
||||||
private final String FURNACE_OWNER_METADATA_KEY = "mcMMO_furnace_owner";
|
private final String FURNACE_OWNER_METADATA_KEY = "mcMMO_furnace_owner";
|
||||||
|
|
@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class SpigotPersistentDataLayer extends AbstractPersistentDataLayer {
|
public class SpigotPersistentDataLayer_1_14 extends AbstractPersistentDataLayer {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Don't modify these keys
|
* Don't modify these keys
|
@ -276,18 +276,6 @@ public final class CombatUtils {
|
|||||||
|
|
||||||
double finalDamage = event.getDamage();
|
double finalDamage = event.getDamage();
|
||||||
|
|
||||||
if (target instanceof Player && PrimarySkillType.UNARMED.getPVPEnabled()) {
|
|
||||||
UnarmedManager unarmedManager = mcMMO.getUserManager().getPlayer((Player) target).getUnarmedManager();
|
|
||||||
|
|
||||||
if (unarmedManager.canDeflect()) {
|
|
||||||
event.setCancelled(unarmedManager.deflectCheck());
|
|
||||||
|
|
||||||
if (event.isCancelled()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (archeryManager.canSkillShot()) {
|
if (archeryManager.canSkillShot()) {
|
||||||
//Not Additive
|
//Not Additive
|
||||||
finalDamage = archeryManager.skillShot(initialDamage);
|
finalDamage = archeryManager.skillShot(initialDamage);
|
||||||
@ -496,6 +484,11 @@ public final class CombatUtils {
|
|||||||
|
|
||||||
if (target.getType() != EntityType.CREEPER && !Misc.isNPCEntityExcludingVillagers(player) && PrimarySkillType.TAMING.getPermissions(player)) {
|
if (target.getType() != EntityType.CREEPER && !Misc.isNPCEntityExcludingVillagers(player) && PrimarySkillType.TAMING.getPermissions(player)) {
|
||||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
||||||
|
|
||||||
|
if(mmoPlayer == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
TamingManager tamingManager = mmoPlayer.getTamingManager();
|
TamingManager tamingManager = mmoPlayer.getTamingManager();
|
||||||
tamingManager.attackTarget(target);
|
tamingManager.attackTarget(target);
|
||||||
}
|
}
|
||||||
|
@ -543,11 +543,32 @@ Skills:
|
|||||||
Standard: 100
|
Standard: 100
|
||||||
RetroMode: 1000
|
RetroMode: 1000
|
||||||
|
|
||||||
IronArmStyle:
|
SteelArmStyle:
|
||||||
# BonusMin: Minimum bonus damage for unarmed
|
# BonusMin: Minimum bonus damage for unarmed
|
||||||
# BonusMax: Maximum bonus damage for unarmed
|
# BonusMax: Maximum bonus damage for unarmed
|
||||||
# IncreaseLevel: Bonus damage increases every increase level
|
# IncreaseLevel: Bonus damage increases every increase level
|
||||||
IncreaseLevel: 10
|
Damage_Override: false
|
||||||
|
Override:
|
||||||
|
Rank_1: 1
|
||||||
|
Rank_2: 1.5
|
||||||
|
Rank_3: 2.0
|
||||||
|
Rank_4: 2.5
|
||||||
|
Rank_5: 3.0
|
||||||
|
Rank_6: 3.5
|
||||||
|
Rank_7: 4.0
|
||||||
|
Rank_8: 4.5
|
||||||
|
Rank_9: 5.0
|
||||||
|
Rank_10: 5.5
|
||||||
|
Rank_11: 6.0
|
||||||
|
Rank_12: 6.5
|
||||||
|
Rank_13: 7.0
|
||||||
|
Rank_14: 7.5
|
||||||
|
Rank_15: 8.0
|
||||||
|
Rank_16: 8.5
|
||||||
|
Rank_17: 9.0
|
||||||
|
Rank_18: 10.5
|
||||||
|
Rank_19: 12.0
|
||||||
|
Rank_20: 13.5
|
||||||
#
|
#
|
||||||
# Settings for Woodcutting
|
# Settings for Woodcutting
|
||||||
###
|
###
|
||||||
|
Loading…
Reference in New Issue
Block a user