From f05c4121d246d701eacb9d3ed2797e014e5d1aef Mon Sep 17 00:00:00 2001 From: nossr50 Date: Fri, 3 Jul 2020 13:14:33 -0700 Subject: [PATCH] Temporary Spigot bug fix --- Changelog.txt | 4 ++++ src/main/java/com/gmail/nossr50/config/Config.java | 8 +++++++- .../nossr50/config/experience/ExperienceConfig.java | 12 ++++++++---- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 1f547c3f4..d2c0faedf 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,6 +1,10 @@ Version 2.1.132 + A fix is in place to prevent an exploit from working that is due to a yet to be patched Spigot server software bug Fixed a NPE that could happen when players swapped items from their hotbar + NOTE: The exploit was not described on purpose, please update. + I reported the bug to Spigot, so hopefully it will be patched in the near future. + Version 2.1.131 New permission node 'mcmmo.ability.repair.netheriterepair' which is included in the mcmmo.defaults permission package diff --git a/src/main/java/com/gmail/nossr50/config/Config.java b/src/main/java/com/gmail/nossr50/config/Config.java index 69e0dc30a..2be3484c7 100644 --- a/src/main/java/com/gmail/nossr50/config/Config.java +++ b/src/main/java/com/gmail/nossr50/config/Config.java @@ -462,7 +462,13 @@ public class Config extends AutoUpdateConfigLoader { /* * SKILL SETTINGS */ - public boolean getDoubleDropsEnabled(PrimarySkillType skill, Material material) { return config.getBoolean("Bonus_Drops." + StringUtils.getCapitalized(skill.toString()) + "." + StringUtils.getPrettyItemString(material).replace(" ", "_")); } + public boolean getDoubleDropsEnabled(PrimarySkillType skill, Material material) { + //TODO: Temporary measure to fix an exploit caused by a yet to be fixed Spigot bug (as of 7/3/2020) + if(material.toString().contains("LILY_PAD")) + return false; + + return config.getBoolean("Bonus_Drops." + StringUtils.getCapitalized(skill.toString()) + "." + StringUtils.getPrettyItemString(material).replace(" ", "_")); + } public boolean getDoubleDropsDisabled(PrimarySkillType skill) { String skillName = StringUtils.getCapitalized(skill.toString()); diff --git a/src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java b/src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java index 06c4ea9ce..3160283fa 100644 --- a/src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java +++ b/src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java @@ -206,16 +206,20 @@ public class ExperienceConfig extends AutoUpdateConfigLoader { public boolean hasCombatXP(EntityType entity) {return config.contains("Experience_Values.Combat.Multiplier." + StringUtils.getPrettyEntityTypeString(entity).replace(" ", "_")); } /* Materials */ - public int getXp(PrimarySkillType skill, Material data) + public int getXp(PrimarySkillType skill, Material material) { + //TODO: Temporary measure to fix an exploit caused by a yet to be fixed Spigot bug (as of 7/3/2020) + if(material.toString().contains("LILY_PAD")) + return 0; + String baseString = "Experience_Values." + StringUtils.getCapitalized(skill.toString()) + "."; - String explicitString = baseString + StringUtils.getExplicitConfigMaterialString(data); + String explicitString = baseString + StringUtils.getExplicitConfigMaterialString(material); if (config.contains(explicitString)) return config.getInt(explicitString); - String friendlyString = baseString + StringUtils.getFriendlyConfigMaterialString(data); + String friendlyString = baseString + StringUtils.getFriendlyConfigMaterialString(material); if (config.contains(friendlyString)) return config.getInt(friendlyString); - String wildcardString = baseString + StringUtils.getWildcardConfigMaterialString(data); + String wildcardString = baseString + StringUtils.getWildcardConfigMaterialString(material); if (config.contains(wildcardString)) return config.getInt(wildcardString); return 0;