diff --git a/build.gradle b/build.gradle index 232fee9..02788e9 100644 --- a/build.gradle +++ b/build.gradle @@ -47,7 +47,7 @@ allprojects { } dependencies { - compileOnly 'com.willfp:eco:3.8.0' + compileOnly 'com.willfp:eco:4.0.0' compileOnly 'org.jetbrains:annotations:19.0.0' diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/TalismansPlugin.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/TalismansPlugin.java index ea9d66f..9dd4a57 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/TalismansPlugin.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/TalismansPlugin.java @@ -1,10 +1,9 @@ package com.willfp.talismans; +import com.willfp.eco.util.bukkit.scheduling.TimedRunnable; import com.willfp.eco.util.command.AbstractCommand; -import com.willfp.eco.util.display.Display; import com.willfp.eco.util.display.DisplayModule; import com.willfp.eco.util.integrations.IntegrationLoader; -import com.willfp.eco.util.interfaces.EcoRunnable; import com.willfp.eco.util.plugin.AbstractEcoPlugin; import com.willfp.eco.util.protocollib.AbstractPacketAdapter; import com.willfp.talismans.commands.CommandTalgive; @@ -23,6 +22,7 @@ import com.willfp.talismans.talismans.util.equipevent.TalismanEquipEventListener import lombok.Getter; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Arrays; @@ -49,9 +49,6 @@ public class TalismansPlugin extends AbstractEcoPlugin { */ @Override public void enable() { - Display.registerDisplayModule(new DisplayModule(TalismanDisplay::displayTalisman, 1, this.getPluginName())); - Display.registerRevertModule(TalismanDisplay::revertDisplay); - this.getExtensionLoader().loadExtensions(); if (this.getExtensionLoader().getLoadedExtensions().isEmpty()) { @@ -92,8 +89,8 @@ public class TalismansPlugin extends AbstractEcoPlugin { if (talisman.isEnabled()) { this.getEventManager().registerListener(talisman); - if (talisman instanceof EcoRunnable) { - this.getScheduler().syncRepeating((EcoRunnable) talisman, 5, ((EcoRunnable) talisman).getTime()); + if (talisman instanceof TimedRunnable) { + this.getScheduler().syncRepeating((TimedRunnable) talisman, 5, ((TimedRunnable) talisman).getTime()); } } }, 1); @@ -168,4 +165,10 @@ public class TalismansPlugin extends AbstractEcoPlugin { TabcompleterTalgive.class ); } + + @Override + @Nullable + protected DisplayModule createDisplayModule() { + return new TalismanDisplay(this); + } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/display/TalismanDisplay.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/display/TalismanDisplay.java index d204ffd..57b6557 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/display/TalismanDisplay.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/display/TalismanDisplay.java @@ -1,74 +1,40 @@ package com.willfp.talismans.display; import com.willfp.eco.util.SkullUtils; +import com.willfp.eco.util.display.DisplayModule; +import com.willfp.eco.util.display.DisplayPriority; +import com.willfp.eco.util.plugin.AbstractEcoPlugin; import com.willfp.talismans.talismans.Talisman; import com.willfp.talismans.talismans.util.TalismanChecks; import com.willfp.talismans.talismans.util.TalismanUtils; -import lombok.experimental.UtilityClass; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.SkullMeta; -import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; -@UtilityClass -public class TalismanDisplay { +public class TalismanDisplay extends DisplayModule { /** - * The prefix for all talisman lines to have in lore. + * Instantiate talisman display. + * @param plugin Instance of Talismans. */ - public static final String PREFIX = "§z"; - - /** - * Revert display. - * - * @param item The item to revert. - * @return The item, updated. - */ - public static ItemStack revertDisplay(@Nullable final ItemStack item) { - if (item == null || item.getItemMeta() == null) { - return item; - } - - ItemMeta meta = item.getItemMeta(); - List itemLore; - - if (meta.hasLore()) { - itemLore = meta.getLore(); - } else { - itemLore = new ArrayList<>(); - } - - if (itemLore == null) { - itemLore = new ArrayList<>(); - } - - itemLore.removeIf(s -> s.startsWith(PREFIX)); - - meta.setLore(itemLore); - item.setItemMeta(meta); - - return item; + public TalismanDisplay(@NotNull final AbstractEcoPlugin plugin) { + super(plugin, DisplayPriority.LOWEST); } - /** - * Show talisman in item lore, set display name, and set texture. - * - * @param item The item to update. - * @return The item, updated. - */ - public static ItemStack displayTalisman(@Nullable final ItemStack item) { - if (item == null || item.getItemMeta() == null || !TalismanUtils.isTalismanMaterial(item.getType())) { - return item; + @Override + protected void display(@NotNull final ItemStack itemStack) { + if (!TalismanUtils.isTalismanMaterial(itemStack.getType())) { + return; } - revertDisplay(item); + revert(itemStack); - ItemMeta meta = item.getItemMeta(); - if (meta == null) { - return item; - } + ItemMeta meta = itemStack.getItemMeta(); + + assert meta != null; List itemLore = new ArrayList<>(); @@ -80,10 +46,10 @@ public class TalismanDisplay { itemLore = new ArrayList<>(); } - Talisman talisman = TalismanChecks.getTalismanOnItem(item); + Talisman talisman = TalismanChecks.getTalismanOnItem(itemStack); if (talisman == null) { - return item; + return; } if (meta instanceof SkullMeta) { @@ -98,8 +64,31 @@ public class TalismanDisplay { lore.addAll(itemLore); meta.setLore(lore); - item.setItemMeta(meta); + itemStack.setItemMeta(meta); + } - return item; + @Override + protected void revert(@NotNull final ItemStack itemStack) { + if (itemStack.getItemMeta() == null) { + return; + } + + ItemMeta meta = itemStack.getItemMeta(); + List itemLore; + + if (meta.hasLore()) { + itemLore = meta.getLore(); + } else { + itemLore = new ArrayList<>(); + } + + if (itemLore == null) { + itemLore = new ArrayList<>(); + } + + itemLore.removeIf(s -> s.startsWith("§z")); + + meta.setLore(itemLore); + itemStack.setItemMeta(meta); } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/Talisman.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/Talisman.java index 417469a..04190a7 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/Talisman.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/Talisman.java @@ -1,16 +1,15 @@ package com.willfp.talismans.talismans; - import com.willfp.eco.util.StringUtils; +import com.willfp.eco.util.display.Display; import com.willfp.eco.util.optional.Prerequisite; import com.willfp.eco.util.plugin.AbstractEcoPlugin; -import com.willfp.eco.util.recipe.EcoShapedRecipe; -import com.willfp.eco.util.recipe.lookup.RecipePartUtils; +import com.willfp.eco.util.recipe.RecipeParts; import com.willfp.eco.util.recipe.parts.ComplexRecipePart; +import com.willfp.eco.util.recipe.recipes.EcoShapedRecipe; import com.willfp.talismans.TalismansPlugin; import com.willfp.talismans.config.TalismansConfigs; import com.willfp.talismans.config.configs.TalismanConfig; -import com.willfp.talismans.display.TalismanDisplay; import com.willfp.talismans.talismans.meta.TalismanStrength; import com.willfp.talismans.talismans.util.TalismanChecks; import com.willfp.talismans.talismans.util.TalismanUtils; @@ -41,7 +40,7 @@ import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; -@SuppressWarnings({"unchecked", "deprecation", "RedundantSuppression"}) +@SuppressWarnings({"unchecked", "deprecation"}) public abstract class Talisman implements Listener, Watcher { /** * Instance of Talismans for talismans to be able to access. @@ -192,7 +191,7 @@ public abstract class Talisman implements Listener, Watcher { disabledWorlds.clear(); formattedDescription = Arrays.stream(WordUtils.wrap(description, this.getPlugin().getConfigYml().getInt("description.wrap"), "\n", false).split("\\r?\\n")) - .map(s -> TalismanDisplay.PREFIX + StringUtils.translate(this.getPlugin().getLangYml().getString("description-color") + s)).collect(Collectors.toList()); + .map(s -> Display.PREFIX + StringUtils.translate(this.getPlugin().getLangYml().getString("description-color") + s)).collect(Collectors.toList()); List worldNames = Bukkit.getWorlds().stream().map(World::getName).map(String::toLowerCase).collect(Collectors.toList()); List disabledExistingWorldNames = disabledWorldNames.stream().filter(s -> worldNames.contains(s.toLowerCase())).collect(Collectors.toList()); @@ -208,14 +207,11 @@ public abstract class Talisman implements Listener, Watcher { PersistentDataContainer container = outMeta.getPersistentDataContainer(); container.set(this.getKey(), PersistentDataType.INTEGER, 1); out.setItemMeta(outMeta); - TalismanDisplay.displayTalisman(out); + Display.display(out); this.itemStack = out; - RecipePartUtils.registerLookup(this.getKey().toString(), s -> { - Talisman talisman = Talismans.getByKey(this.getPlugin().getNamespacedKeyFactory().create(s.split(":")[1])); - return new ComplexRecipePart(test -> Objects.equals(talisman, TalismanChecks.getTalismanOnItem(test)), out); - }); + RecipeParts.registerRecipePart(this.getKey(), new ComplexRecipePart(test -> Objects.equals(this, TalismanChecks.getTalismanOnItem(test)), out)); if (this.isCraftable() && this.isEnabled()) { EcoShapedRecipe.Builder builder = EcoShapedRecipe.builder(this.getPlugin(), this.getKey().getKey()) @@ -224,7 +220,7 @@ public abstract class Talisman implements Listener, Watcher { List recipeStrings = this.getConfig().getStrings(Talismans.OBTAINING_LOCATION + "recipe"); for (int i = 0; i < 9; i++) { - builder.setRecipePart(i, RecipePartUtils.lookup(recipeStrings.get(i))); + builder.setRecipePart(i, RecipeParts.lookup(recipeStrings.get(i))); } this.recipe = builder.build(); diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/TalismanCraftListener.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/TalismanCraftListener.java index 1d6de70..882a4ef 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/TalismanCraftListener.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/TalismanCraftListener.java @@ -2,9 +2,9 @@ package com.willfp.talismans.talismans.util; import com.willfp.eco.util.internal.PluginDependent; import com.willfp.eco.util.plugin.AbstractEcoPlugin; -import com.willfp.eco.util.recipe.EcoShapedRecipe; import com.willfp.eco.util.recipe.parts.RecipePart; import com.willfp.eco.util.recipe.parts.SimpleRecipePart; +import com.willfp.eco.util.recipe.recipes.EcoShapedRecipe; import com.willfp.talismans.talismans.Talisman; import com.willfp.talismans.talismans.Talismans; import org.bukkit.Material; diff --git a/gradle.properties b/gradle.properties index 0dea0ce..56553ab 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 1.12.2 +version = 1.13.0 plugin-name = Talismans \ No newline at end of file