diff --git a/Changelog.txt b/Changelog.txt index d818c14e4..a044db3f7 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,21 +1,20 @@ Version 2.2.046 - TODO: Test FlatFile DB - TODO: Double check locale - TODO: Double check plugin.yml permissions - TODO: Add notes about permission nodes + TODO: Investigate when right click air sends events for offhand + TODO: Unarmed XP gained from spear offhand interactions Added Spears combat skill Added Spears to repair.vanilla.yml and salvage.vanilla.yml (see notes) Added permissions related to Spears Added /spears skill command + Added Nautilus to taming XP in experience.yml Fixed bug where converting from SQL to FlatFile would not copy data for tridents, crossbows, maces, or spears - (Codebase) Added dockerized unit tests for SQL databases (See notes) + (Codebase) Added dockerized unit tests for SQL databases (see notes) (Codebase) Large refactor to both SQLDatabaseManager and FlatFileDatabaseManager (Codebase) Database related errors are now more descriptive and have had their logging improved NOTES: - You will need to manually update repair.vanilla.yml and salvage.vanilla.yml to get support for Spears. - Or you can delete these config files to have mcMMO regenerate them with the new entries. - You can find the default config files in the defaults folder at plugins\mcMMO\defaults after running this mcMMO update at least once. + You will need to manually update repair.vanilla.yml and salvage.vanilla.yml to get support for Spears, or... + If you want to update salvage/repair configs the easy way, you simply can delete these config files to have mcMMO regenerate them with the new entries. + If you don't want to delete them, you can find the default values for these config files in the defaults folder at plugins\mcMMO\defaults after running this mcMMO update at least once. You can use this default file to copy paste if you please. If you compile mcMMO you will likely run into errors during unit tests for SQL databases, this is because they now rely on docker being present on the system to load up test containers. New SQL database unit tests have been added which leverage test containers to test against real installs of MySQL/MariaDB, which require Docker (or an equivalent) to run. diff --git a/pom.xml b/pom.xml index 62b352e4b..518d61318 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ - 1.21.10-R0.1-SNAPSHOT + 1.21.11-R0.1-SNAPSHOT 4.23.0 4.4.1-SNAPSHOT 1.1.0 diff --git a/src/main/java/com/gmail/nossr50/commands/skills/SpearsCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/SpearsCommand.java index dddc8e300..81c340313 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/SpearsCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/SpearsCommand.java @@ -3,6 +3,7 @@ package com.gmail.nossr50.commands.skills; import static com.gmail.nossr50.datatypes.skills.SubSkillType.SPEARS_MOMENTUM; import static com.gmail.nossr50.datatypes.skills.SubSkillType.SPEARS_SPEARS_LIMIT_BREAK; +import static com.gmail.nossr50.datatypes.skills.SubSkillType.SPEARS_SPEAR_MASTERY; import static com.gmail.nossr50.util.skills.SkillUtils.canUseSubskill; import static com.gmail.nossr50.util.text.TextComponentFactory.appendSubSkillTextComponents; @@ -10,6 +11,7 @@ import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.skills.spears.SpearsManager; +import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.skills.CombatUtils; import com.gmail.nossr50.util.skills.RankUtils; import com.gmail.nossr50.util.skills.SkillUtils; @@ -46,6 +48,9 @@ public class SpearsCommand extends SkillCommand { @Override protected List statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) { + final SpearsManager spearsManager = UserManager.getPlayer(player).getSpearsManager(); + final double spearMasteryBonusDmg = spearsManager.getSpearMasteryBonusDamage(); + List messages = new ArrayList<>(); if (canUseSubskill(player, SPEARS_SPEARS_LIMIT_BREAK)) { @@ -54,6 +59,11 @@ public class SpearsCommand extends SkillCommand { SPEARS_SPEARS_LIMIT_BREAK, 1000)))); } + if (canUseSubskill(player, SPEARS_SPEAR_MASTERY)) { + messages.add(getStatMessage(SPEARS_SPEAR_MASTERY, + String.valueOf(spearMasteryBonusDmg))); + } + if (SkillUtils.canUseSubskill(player, SPEARS_MOMENTUM)) { messages.add(getStatMessage(SPEARS_MOMENTUM, momentumChanceToApply) + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", diff --git a/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java b/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java index 648eea7b9..8054bf494 100644 --- a/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java +++ b/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java @@ -894,4 +894,8 @@ public class AdvancedConfig extends BukkitConfig { return config.getDouble("Skills.Spears.Momentum.Chance_To_Apply_On_Hit.Rank_" + rank, defaultMomentumValues[rank - 1]); } + + public double getSpearMasteryRankDamageMultiplier() { + return config.getDouble("Skills.Spears.SpearMastery.Rank_Damage_Multiplier", 0.4D); + } } diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java b/src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java index 5f662c6fb..54e319e15 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java @@ -86,6 +86,7 @@ public enum SubSkillType { /* Spears */ SPEARS_SPEARS_LIMIT_BREAK(10), SPEARS_MOMENTUM(10), + SPEARS_SPEAR_MASTERY(8), /* Swords */ SWORDS_COUNTER_ATTACK(1), diff --git a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java index 85a2eee71..bf24749f4 100644 --- a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java @@ -168,6 +168,7 @@ public class PlayerListener implements Listener { if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) { return; } + // world guard main flag check if (WorldGuardUtils.isWorldGuardLoaded() && !WorldGuardManager.getInstance() .hasMainFlag((Player) event.getEntity())) { @@ -342,8 +343,8 @@ public class PlayerListener implements Listener { FishingManager fishingManager = UserManager.getPlayer(player).getFishingManager(); switch (event.getState()) { + // CAUGHT_FISH happens for any item caught (including junk and treasure) case CAUGHT_FISH: - //TODO Update to new API once available! Waiting for case CAUGHT_TREASURE if (event.getCaught() != null) { Item fishingCatch = (Item) event.getCaught(); @@ -675,6 +676,10 @@ public class PlayerListener implements Listener { */ @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onPlayerInteractLowest(PlayerInteractEvent event) { + if (event.getAction() == Action.PHYSICAL) { + return; + } + /* WORLD BLACKLIST CHECK */ if (WorldBlacklist.isWorldBlacklisted(event.getPlayer().getWorld())) { return; @@ -817,6 +822,10 @@ public class PlayerListener implements Listener { */ @EventHandler(priority = EventPriority.MONITOR) public void onPlayerInteractMonitor(PlayerInteractEvent event) { + if (event.getAction() == Action.PHYSICAL) { + return; + } + /* WORLD BLACKLIST CHECK */ if (WorldBlacklist.isWorldBlacklisted(event.getPlayer().getWorld())) { return; diff --git a/src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.java b/src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.java index 71128f273..ff84603c7 100644 --- a/src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.java +++ b/src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.java @@ -113,4 +113,9 @@ public class SpearsManager extends SkillManager { return false; } + public double getSpearMasteryBonusDamage() { + return mcMMO.p.getAdvancedConfig().getSpearMasteryRankDamageMultiplier() + * getRank(getPlayer(), SubSkillType.SPEARS_SPEAR_MASTERY); + } + } diff --git a/src/main/resources/advanced.yml b/src/main/resources/advanced.yml index 51a9bb487..251f7bebc 100644 --- a/src/main/resources/advanced.yml +++ b/src/main/resources/advanced.yml @@ -649,6 +649,8 @@ Skills: Rank_3: 20 Rank_4: 33 Spears: + SpearMastery: + Rank_Damage_Multiplier: 0.4 Momentum: Chance_To_Apply_On_Hit: Rank_1: 5 diff --git a/src/main/resources/experience.yml b/src/main/resources/experience.yml index ee3a9100a..13fe01247 100644 --- a/src/main/resources/experience.yml +++ b/src/main/resources/experience.yml @@ -606,6 +606,7 @@ Experience_Values: Goat: 250 Axolotl: 600 Frog: 900 + Nautilus: 1700 Combat: Multiplier: Animals: 1.0 diff --git a/src/main/resources/locale/locale_en_US.properties b/src/main/resources/locale/locale_en_US.properties index 588acf01f..b99407877 100644 --- a/src/main/resources/locale/locale_en_US.properties +++ b/src/main/resources/locale/locale_en_US.properties @@ -486,10 +486,13 @@ Spears.SubSkill.SpearsLimitBreak.Description=Breaking your limits. Increased dam Spears.SubSkill.SpearsLimitBreak.Stat=Limit Break Max DMG Spears.SubSkill.SpearAbility.Name=WIP Spears.SubSkill.Momentum.Name=Momentum -Spears.SubSkill.Momentum.Description=Adds a chance to increase movement speed when attacking. +Spears.SubSkill.Momentum.Description=Adds a chance to increase movement speed for a short duration when attacking. Spears.SubSkill.Momentum.Stat=Momentum Chance Spears.SubSkill.Momentum.Stat.Extra=[[DARK_AQUA]]Momentum Duration: &e{0}s Spears.SubSkill.Momentum.Activated=MOMENTUM ACTIVATED! +Spears.SubSkill.SpearMastery.Name=Spear Mastery +Spears.SubSkill.SpearMastery.Description=Adds bonus damage to your attacks. +Spears.SubSkill.SpearMastery.Stat=Spear Mastery Bonus DMG Spears.Listener=Spears: #SWORDS diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 7c0689c49..704677f22 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -660,10 +660,13 @@ permissions: children: mcmmo.ability.spears.spearslimitbreak: true mcmmo.ability.spears.momentum: true + mcmmo.ability.spears.spearmastery: true mcmmo.ability.spears.spearslimitbreak: description: Adds damage to spears mcmmo.ability.spears.momentum: - description: Adds a chance to increase movement speed temporarily after hitting an entity + description: Allows access to the Spear Momentum ability + mcmmo.ability.spears.spearmastery: + description: Allows access to the Spear Mastery ability mcmmo.ability.swords.*: default: false description: Allows access to all Swords abilities diff --git a/src/main/resources/skillranks.yml b/src/main/resources/skillranks.yml index 4e437fe00..6db21161e 100644 --- a/src/main/resources/skillranks.yml +++ b/src/main/resources/skillranks.yml @@ -428,6 +428,25 @@ Spears: Rank_8: 800 Rank_9: 900 Rank_10: 1000 + SpearMastery: + Standard: + Rank_1: 5 + Rank_2: 15 + Rank_3: 30 + Rank_4: 45 + Rank_5: 60 + Rank_6: 75 + Rank_7: 90 + Rank_8: 100 + RetroMode: + Rank_1: 50 + Rank_2: 150 + Rank_3: 300 + Rank_4: 450 + Rank_5: 600 + Rank_6: 750 + Rank_7: 900 + Rank_8: 1000 Momentum: Standard: Rank_1: 1 @@ -439,7 +458,7 @@ Spears: Rank_7: 50 Rank_8: 60 Rank_9: 80 - Rank_10: 100 + Rank_10: 95 RetroMode: Rank_1: 1 Rank_2: 100 @@ -450,7 +469,7 @@ Spears: Rank_7: 500 Rank_8: 600 Rank_9: 800 - Rank_10: 1000 + Rank_10: 950 Salvage: ScrapCollector: Standard: