mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-25 22:56:45 +01:00
super boosted items are now tracked differently
This commit is contained in:
parent
59f52f6e7e
commit
a7ded7e982
@ -1,3 +1,11 @@
|
|||||||
|
Version 2.1.143
|
||||||
|
mcMMO now tracks super ability boosted items through item metadata
|
||||||
|
mcMMO no longer relies on lore to tell if an item has been modified by a super ability
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
The item tracking on 1.14+ is persistent (up until now its been temporary)
|
||||||
|
Lore still gets added and removed from the item, this is sort of a failsafe. It can be considered optional.
|
||||||
|
|
||||||
Version 2.1.142
|
Version 2.1.142
|
||||||
Iron Arm Style renamed to Steel Arm Style
|
Iron Arm Style renamed to Steel Arm Style
|
||||||
Steel Arm Style now scales over 20 ranks instead of 5
|
Steel Arm Style now scales over 20 ranks instead of 5
|
||||||
|
2
pom.xml
2
pom.xml
@ -2,7 +2,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.gmail.nossr50.mcMMO</groupId>
|
<groupId>com.gmail.nossr50.mcMMO</groupId>
|
||||||
<artifactId>mcMMO</artifactId>
|
<artifactId>mcMMO</artifactId>
|
||||||
<version>2.1.142</version>
|
<version>2.1.143-SNAPSHOT</version>
|
||||||
<name>mcMMO</name>
|
<name>mcMMO</name>
|
||||||
<url>https://github.com/mcMMO-Dev/mcMMO</url>
|
<url>https://github.com/mcMMO-Dev/mcMMO</url>
|
||||||
<scm>
|
<scm>
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.gmail.nossr50.datatypes.meta;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stores the original dig speed of a tool, also marks the tool as boosted by super abilities
|
||||||
|
*/
|
||||||
|
public class SuperAbilityToolMeta extends FixedMetadataValue {
|
||||||
|
|
||||||
|
public SuperAbilityToolMeta(int value, mcMMO plugin) {
|
||||||
|
super(plugin, value);
|
||||||
|
}
|
||||||
|
}
|
@ -414,6 +414,7 @@ public class InventoryListener implements Listener {
|
|||||||
|
|
||||||
ItemStack result = event.getRecipe().getResult();
|
ItemStack result = event.getRecipe().getResult();
|
||||||
|
|
||||||
|
//TODO: what is the point of this
|
||||||
if (!ItemUtils.isMcMMOItem(result)) {
|
if (!ItemUtils.isMcMMOItem(result)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,22 @@
|
|||||||
package com.gmail.nossr50.util;
|
package com.gmail.nossr50.util;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.config.party.ItemWeightConfig;
|
import com.gmail.nossr50.config.party.ItemWeightConfig;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.FurnaceRecipe;
|
import org.bukkit.inventory.FurnaceRecipe;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.Recipe;
|
import org.bukkit.inventory.Recipe;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public final class ItemUtils {
|
public final class ItemUtils {
|
||||||
private ItemUtils() {}
|
private ItemUtils() {}
|
||||||
|
|
||||||
@ -479,4 +484,45 @@ public final class ItemUtils {
|
|||||||
|
|
||||||
return itemMeta.hasDisplayName() && itemMeta.getDisplayName().equals(ChatColor.GOLD + LocaleLoader.getString("Item.ChimaeraWing.Name"));
|
return itemMeta.hasDisplayName() && itemMeta.getDisplayName().equals(ChatColor.GOLD + LocaleLoader.getString("Item.ChimaeraWing.Name"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void addAbilityLore(ItemStack itemStack) {
|
||||||
|
ItemMeta itemMeta = itemStack.getItemMeta();
|
||||||
|
List<String> itemLore = new ArrayList<>();
|
||||||
|
|
||||||
|
if(itemMeta == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (itemMeta.hasLore()) {
|
||||||
|
itemLore = itemMeta.getLore();
|
||||||
|
}
|
||||||
|
|
||||||
|
itemLore.add("mcMMO Ability Tool");
|
||||||
|
|
||||||
|
itemMeta.setLore(itemLore);
|
||||||
|
itemStack.setItemMeta(itemMeta);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void removeAbilityLore(ItemStack itemStack) {
|
||||||
|
ItemMeta itemMeta = itemStack.getItemMeta();
|
||||||
|
|
||||||
|
if(itemMeta == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (itemMeta.hasLore()) {
|
||||||
|
List<String> itemLore = itemMeta.getLore();
|
||||||
|
|
||||||
|
if(itemLore == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (itemLore.remove("mcMMO Ability Tool")) {
|
||||||
|
itemMeta.setLore(itemLore);
|
||||||
|
itemStack.setItemMeta(itemMeta);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void addDigSpeedToItem(ItemStack itemStack, int existingEnchantLevel) {
|
||||||
|
ItemMeta itemMeta = itemStack.getItemMeta();
|
||||||
|
itemMeta.addEnchant(Enchantment.DIG_SPEED, existingEnchantLevel + AdvancedConfig.getInstance().getEnchantBuff(), true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,8 @@ package com.gmail.nossr50.util.compat.layers.persistentdata;
|
|||||||
|
|
||||||
import com.gmail.nossr50.util.compat.layers.AbstractCompatibilityLayer;
|
import com.gmail.nossr50.util.compat.layers.AbstractCompatibilityLayer;
|
||||||
import org.bukkit.block.Furnace;
|
import org.bukkit.block.Furnace;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -16,4 +18,12 @@ public abstract class AbstractPersistentDataLayer extends AbstractCompatibilityL
|
|||||||
|
|
||||||
public abstract void setFurnaceOwner(Furnace furnace, UUID uuid);
|
public abstract void setFurnaceOwner(Furnace furnace, UUID uuid);
|
||||||
|
|
||||||
|
public abstract void setSuperAbilityBoostedItem(ItemStack itemStack, int originalDigSpeed);
|
||||||
|
|
||||||
|
public abstract boolean isSuperAbilityBoosted(ItemMeta itemMeta);
|
||||||
|
|
||||||
|
public abstract int getSuperAbilityToolOriginalDigSpeed(ItemMeta itemMeta);
|
||||||
|
|
||||||
|
public abstract void removeBonusDigSpeedOnSuperAbilityTool(ItemStack itemStack);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,9 @@ package com.gmail.nossr50.util.compat.layers.persistentdata;
|
|||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import org.bukkit.NamespacedKey;
|
import org.bukkit.NamespacedKey;
|
||||||
import org.bukkit.block.Furnace;
|
import org.bukkit.block.Furnace;
|
||||||
|
import org.bukkit.enchantments.Enchantment;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.bukkit.persistence.PersistentDataContainer;
|
import org.bukkit.persistence.PersistentDataContainer;
|
||||||
import org.bukkit.persistence.PersistentDataHolder;
|
import org.bukkit.persistence.PersistentDataHolder;
|
||||||
import org.bukkit.persistence.PersistentDataType;
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
@ -13,8 +16,17 @@ import java.util.UUID;
|
|||||||
|
|
||||||
public class SpigotPersistentDataLayer extends AbstractPersistentDataLayer {
|
public class SpigotPersistentDataLayer extends AbstractPersistentDataLayer {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Don't modify these keys
|
||||||
|
*/
|
||||||
|
public static final String FURNACE_UUID_MOST_SIG = "furnace_uuid_most_sig";
|
||||||
|
public static final String FURNACE_UUID_LEAST_SIG = "furnace_uuid_least_sig";
|
||||||
|
public static final String SUPER_ABILITY_BOOSTED = "super_ability_boosted";
|
||||||
|
|
||||||
private NamespacedKey furnaceOwner_MostSig_Key;
|
private NamespacedKey furnaceOwner_MostSig_Key;
|
||||||
private NamespacedKey furnaceOwner_LeastSig_Key;
|
private NamespacedKey furnaceOwner_LeastSig_Key;
|
||||||
|
private NamespacedKey superAbilityBoosted;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean initializeLayer() {
|
public boolean initializeLayer() {
|
||||||
@ -23,8 +35,9 @@ public class SpigotPersistentDataLayer extends AbstractPersistentDataLayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initNamespacedKeys() {
|
private void initNamespacedKeys() {
|
||||||
furnaceOwner_MostSig_Key = getNamespacedKey("furnace_uuid_most_sig");
|
furnaceOwner_MostSig_Key = getNamespacedKey(FURNACE_UUID_MOST_SIG);
|
||||||
furnaceOwner_LeastSig_Key = getNamespacedKey("furnace_uuid_least_sig");
|
furnaceOwner_LeastSig_Key = getNamespacedKey(FURNACE_UUID_LEAST_SIG);
|
||||||
|
superAbilityBoosted = getNamespacedKey(SUPER_ABILITY_BOOSTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@ -57,4 +70,62 @@ public class SpigotPersistentDataLayer extends AbstractPersistentDataLayer {
|
|||||||
|
|
||||||
furnace.update();
|
furnace.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSuperAbilityBoostedItem(ItemStack itemStack, int originalDigSpeed) {
|
||||||
|
ItemMeta itemMeta = itemStack.getItemMeta();
|
||||||
|
PersistentDataContainer dataContainer = ((PersistentDataHolder) itemMeta).getPersistentDataContainer();
|
||||||
|
|
||||||
|
dataContainer.set(superAbilityBoosted, PersistentDataType.INTEGER, originalDigSpeed);
|
||||||
|
|
||||||
|
itemStack.setItemMeta(itemMeta);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSuperAbilityBoosted(@NotNull ItemMeta itemMeta) {
|
||||||
|
//Get container from entity
|
||||||
|
PersistentDataContainer dataContainer = ((PersistentDataHolder) itemMeta).getPersistentDataContainer();
|
||||||
|
|
||||||
|
//If this value isn't null, then the tool can be considered dig speed boosted
|
||||||
|
Integer boostValue = dataContainer.get(superAbilityBoosted, PersistentDataType.INTEGER);
|
||||||
|
|
||||||
|
return boostValue != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSuperAbilityToolOriginalDigSpeed(@NotNull ItemMeta itemMeta) {
|
||||||
|
//Get container from entity
|
||||||
|
PersistentDataContainer dataContainer = ((PersistentDataHolder) itemMeta).getPersistentDataContainer();
|
||||||
|
|
||||||
|
if(dataContainer.get(superAbilityBoosted, PersistentDataType.INTEGER) == null) {
|
||||||
|
mcMMO.p.getLogger().severe("Value should never be null for a boosted item");
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
//Too lazy to make a custom data type for this stuff
|
||||||
|
Integer boostValue = dataContainer.get(superAbilityBoosted, PersistentDataType.INTEGER);
|
||||||
|
return Math.max(boostValue, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeBonusDigSpeedOnSuperAbilityTool(@NotNull ItemStack itemStack) {
|
||||||
|
ItemMeta itemMeta = itemStack.getItemMeta();
|
||||||
|
|
||||||
|
//TODO: can be optimized
|
||||||
|
int originalSpeed = getSuperAbilityToolOriginalDigSpeed(itemMeta);
|
||||||
|
|
||||||
|
if(itemMeta.hasEnchant(Enchantment.DIG_SPEED)) {
|
||||||
|
itemMeta.removeEnchant(Enchantment.DIG_SPEED);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(originalSpeed > 0) {
|
||||||
|
itemMeta.addEnchant(Enchantment.DIG_SPEED, originalSpeed, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
PersistentDataContainer dataContainer = ((PersistentDataHolder) itemMeta).getPersistentDataContainer();
|
||||||
|
dataContainer.remove(superAbilityBoosted); //Remove persistent data
|
||||||
|
|
||||||
|
//TODO: needed?
|
||||||
|
itemStack.setItemMeta(itemMeta);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,15 @@
|
|||||||
package com.gmail.nossr50.util.compat.layers.persistentdata;
|
package com.gmail.nossr50.util.compat.layers.persistentdata;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
|
import com.gmail.nossr50.datatypes.meta.SuperAbilityToolMeta;
|
||||||
import com.gmail.nossr50.datatypes.meta.UUIDMeta;
|
import com.gmail.nossr50.datatypes.meta.UUIDMeta;
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import org.bukkit.block.Furnace;
|
import org.bukkit.block.Furnace;
|
||||||
|
import org.bukkit.enchantments.Enchantment;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.bukkit.metadata.Metadatable;
|
import org.bukkit.metadata.Metadatable;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@ -13,6 +19,7 @@ import java.util.UUID;
|
|||||||
public class SpigotTemporaryDataLayer extends AbstractPersistentDataLayer {
|
public class SpigotTemporaryDataLayer extends AbstractPersistentDataLayer {
|
||||||
|
|
||||||
private final String FURNACE_OWNER_METADATA_KEY = "mcMMO_furnace_owner";
|
private final String FURNACE_OWNER_METADATA_KEY = "mcMMO_furnace_owner";
|
||||||
|
private final String ABILITY_TOOL_METADATA_KEY = "mcMMO_super_ability_tool";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean initializeLayer() {
|
public boolean initializeLayer() {
|
||||||
@ -41,4 +48,51 @@ public class SpigotTemporaryDataLayer extends AbstractPersistentDataLayer {
|
|||||||
|
|
||||||
metadatable.setMetadata(FURNACE_OWNER_METADATA_KEY, new UUIDMeta(mcMMO.p, uuid));
|
metadatable.setMetadata(FURNACE_OWNER_METADATA_KEY, new UUIDMeta(mcMMO.p, uuid));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSuperAbilityBoostedItem(ItemStack itemStack, int originalDigSpeed) {
|
||||||
|
ItemMeta itemMeta = itemStack.getItemMeta();
|
||||||
|
Metadatable metadatable = (Metadatable) itemMeta;
|
||||||
|
metadatable.setMetadata(ABILITY_TOOL_METADATA_KEY, new SuperAbilityToolMeta(originalDigSpeed, mcMMO.p));
|
||||||
|
|
||||||
|
//TODO: needed?
|
||||||
|
itemStack.setItemMeta(itemMeta);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSuperAbilityBoosted(@NotNull ItemMeta itemMeta) {
|
||||||
|
Metadatable metadatable = (Metadatable) itemMeta;
|
||||||
|
return metadatable.getMetadata(ABILITY_TOOL_METADATA_KEY).size() > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSuperAbilityToolOriginalDigSpeed(@NotNull ItemMeta itemMeta) {
|
||||||
|
Metadatable metadatable = (Metadatable) itemMeta;
|
||||||
|
|
||||||
|
if(metadatable.getMetadata(ABILITY_TOOL_METADATA_KEY).size() > 0) {
|
||||||
|
SuperAbilityToolMeta toolMeta = (SuperAbilityToolMeta) metadatable.getMetadata(ABILITY_TOOL_METADATA_KEY).get(0);
|
||||||
|
return toolMeta.asInt();
|
||||||
|
} else {
|
||||||
|
// mcMMO.p.getLogger().info("Original dig enchant speed could not be found on item! Most likely it was lost from a server restart.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeBonusDigSpeedOnSuperAbilityTool(@NotNull ItemStack itemStack) {
|
||||||
|
ItemMeta itemMeta = itemStack.getItemMeta();
|
||||||
|
|
||||||
|
if(itemMeta.hasEnchant(Enchantment.DIG_SPEED)) {
|
||||||
|
itemMeta.removeEnchant(Enchantment.DIG_SPEED);
|
||||||
|
}
|
||||||
|
|
||||||
|
int originalSpeed = getSuperAbilityToolOriginalDigSpeed(itemMeta);
|
||||||
|
|
||||||
|
if(originalSpeed > 0) {
|
||||||
|
itemMeta.addEnchant(Enchantment.DIG_SPEED, originalSpeed, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO: needed?
|
||||||
|
itemStack.setItemMeta(itemMeta);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ import com.gmail.nossr50.mcMMO;
|
|||||||
import com.gmail.nossr50.util.ItemUtils;
|
import com.gmail.nossr50.util.ItemUtils;
|
||||||
import com.gmail.nossr50.util.Misc;
|
import com.gmail.nossr50.util.Misc;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
|
import com.gmail.nossr50.util.compat.layers.persistentdata.AbstractPersistentDataLayer;
|
||||||
import com.gmail.nossr50.util.player.NotificationManager;
|
import com.gmail.nossr50.util.player.NotificationManager;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@ -22,10 +23,7 @@ import org.bukkit.Location;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.*;
|
||||||
import org.bukkit.inventory.Recipe;
|
|
||||||
import org.bukkit.inventory.ShapedRecipe;
|
|
||||||
import org.bukkit.inventory.ShapelessRecipe;
|
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
import org.bukkit.potion.PotionEffectType;
|
import org.bukkit.potion.PotionEffectType;
|
||||||
@ -140,19 +138,15 @@ public class SkillUtils {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int efficiencyLevel = heldItem.getEnchantmentLevel(Enchantment.DIG_SPEED);
|
int originalDigSpeed = heldItem.getEnchantmentLevel(Enchantment.DIG_SPEED);
|
||||||
ItemMeta itemMeta = heldItem.getItemMeta();
|
|
||||||
List<String> itemLore = new ArrayList<>();
|
|
||||||
|
|
||||||
if (itemMeta.hasLore()) {
|
//Add lore, add dig speed
|
||||||
itemLore = itemMeta.getLore();
|
ItemUtils.addAbilityLore(heldItem); //lore can be a secondary failsafe for 1.13 and below
|
||||||
}
|
ItemUtils.addDigSpeedToItem(heldItem, heldItem.getEnchantmentLevel(Enchantment.DIG_SPEED));
|
||||||
|
|
||||||
itemLore.add("mcMMO Ability Tool");
|
//1.14+ will have persistent metadata for this item
|
||||||
itemMeta.addEnchant(Enchantment.DIG_SPEED, efficiencyLevel + AdvancedConfig.getInstance().getEnchantBuff(), true);
|
AbstractPersistentDataLayer compatLayer = mcMMO.getCompatibilityManager().getPersistentDataLayer();
|
||||||
|
compatLayer.setSuperAbilityBoostedItem(heldItem, originalDigSpeed);
|
||||||
itemMeta.setLore(itemLore);
|
|
||||||
heldItem.setItemMeta(itemMeta);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
int duration = 0;
|
int duration = 0;
|
||||||
@ -205,30 +199,19 @@ public class SkillUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void removeAbilityBuff(ItemStack item) {
|
public static void removeAbilityBuff(ItemStack itemStack) {
|
||||||
if (item == null || item.getType() == Material.AIR || (!ItemUtils.isPickaxe(item) && !ItemUtils.isShovel(item)) || !item.containsEnchantment(Enchantment.DIG_SPEED)) {
|
if (itemStack == null || itemStack.getType() == Material.AIR) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemMeta itemMeta = item.getItemMeta();
|
//Take the lore off
|
||||||
|
ItemUtils.removeAbilityLore(itemStack);
|
||||||
|
|
||||||
if (itemMeta.hasLore()) {
|
//1.14+ will have persistent metadata for this itemStack
|
||||||
List<String> itemLore = itemMeta.getLore();
|
AbstractPersistentDataLayer compatLayer = mcMMO.getCompatibilityManager().getPersistentDataLayer();
|
||||||
|
|
||||||
if (itemLore.remove("mcMMO Ability Tool")) {
|
if(compatLayer.isSuperAbilityBoosted(itemStack.getItemMeta()))
|
||||||
int efficiencyLevel = item.getEnchantmentLevel(Enchantment.DIG_SPEED);
|
compatLayer.removeBonusDigSpeedOnSuperAbilityTool(itemStack);
|
||||||
|
|
||||||
if (efficiencyLevel <= AdvancedConfig.getInstance().getEnchantBuff()) {
|
|
||||||
itemMeta.removeEnchant(Enchantment.DIG_SPEED);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
itemMeta.addEnchant(Enchantment.DIG_SPEED, efficiencyLevel - AdvancedConfig.getInstance().getEnchantBuff(), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
itemMeta.setLore(itemLore);
|
|
||||||
item.setItemMeta(itemMeta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void handleDurabilityChange(ItemStack itemStack, int durabilityModifier) {
|
public static void handleDurabilityChange(ItemStack itemStack, int durabilityModifier) {
|
||||||
|
Loading…
Reference in New Issue
Block a user