Began rework

This commit is contained in:
Auxilor
2021-04-30 21:48:45 +01:00
parent 6d038e3282
commit 04b3eb51dc
154 changed files with 1349 additions and 2927 deletions

View File

@@ -1,8 +1,7 @@
package com.willfp.talismans.config.configs;
package com.willfp.talismans.config;
import com.willfp.eco.core.EcoPlugin;
import com.willfp.eco.core.config.ExtendableConfig;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import lombok.Getter;
import org.jetbrains.annotations.NotNull;
@@ -17,15 +16,13 @@ public class TalismanConfig extends ExtendableConfig {
* Instantiate a new config for a talisman.
*
* @param name The name of the config.
* @param strength The strength of the talisman.
* @param source The provider of the talisman.
* @param plugin Instance of talismans.
*/
public TalismanConfig(@NotNull final String name,
@NotNull final TalismanStrength strength,
@NotNull final Class<?> source,
@NotNull final EcoPlugin plugin) {
super(name, true, plugin, source, "talismans/" + strength.name().toLowerCase() + "/");
super(name, true, plugin, source, "talismans/");
this.name = name;
}
}

View File

@@ -4,7 +4,7 @@ import com.willfp.eco.core.EcoPlugin;
import com.willfp.eco.core.display.DisplayModule;
import com.willfp.eco.core.display.DisplayPriority;
import com.willfp.eco.util.SkullUtils;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.util.TalismanChecks;
import com.willfp.talismans.talismans.util.TalismanUtils;
import org.bukkit.inventory.ItemStack;
@@ -47,7 +47,7 @@ public class TalismanDisplay extends DisplayModule {
itemLore = new ArrayList<>();
}
Talisman talisman = TalismanChecks.getTalismanOnItem(itemStack);
TalismanLevel talisman = TalismanChecks.getTalismanOnItem(itemStack);
if (talisman == null) {
return;
@@ -57,7 +57,7 @@ public class TalismanDisplay extends DisplayModule {
SkullUtils.setSkullTexture((SkullMeta) meta, talisman.getSkullBase64());
}
meta.setDisplayName(talisman.getFormattedName());
meta.setDisplayName(talisman.getName());
List<String> lore = new ArrayList<>();

View File

@@ -2,38 +2,27 @@ package com.willfp.talismans.talismans;
import com.willfp.eco.core.EcoPlugin;
import com.willfp.eco.core.Prerequisite;
import com.willfp.eco.core.display.Display;
import com.willfp.eco.core.items.CustomItem;
import com.willfp.eco.core.items.Items;
import com.willfp.eco.core.recipe.recipes.ShapedCraftingRecipe;
import com.willfp.eco.util.StringUtils;
import com.willfp.talismans.TalismansPlugin;
import com.willfp.talismans.config.configs.TalismanConfig;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import com.willfp.talismans.talismans.util.TalismanChecks;
import com.willfp.talismans.config.TalismanConfig;
import com.willfp.talismans.talismans.util.TalismanUtils;
import com.willfp.talismans.talismans.util.Watcher;
import lombok.AccessLevel;
import lombok.Getter;
import org.apache.commons.lang.Validate;
import org.apache.commons.lang.WordUtils;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.World;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataType;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
@@ -58,68 +47,18 @@ public abstract class Talisman implements Listener, Watcher {
@Getter
private final UUID uuid;
/**
* The display name of the talisman.
*/
@Getter
private String name;
/**
* The description of the talisman.
*/
@Getter
private String description;
/**
* Get description of talisman formatted.
*/
@Getter
private List<String> formattedDescription;
/**
* The config name of the talisman.
*/
@Getter
private final String configName;
/**
* The strength of the talisman
* <p>
* Talisman is weakest, then ring, then relic.
*/
@Getter
private final TalismanStrength strength;
/**
* The talisman's config.
*/
@Getter
private final TalismanConfig config;
/**
* The talisman item.
*/
@Getter
private ItemStack itemStack;
/**
* The talisman recipe.
*/
@Getter
private ShapedCraftingRecipe recipe = null;
/**
* If the talisman is craftable.
*/
@Getter
private boolean craftable = true;
/**
* The base64 skull texture.
*/
@Getter
private String skullBase64;
/**
* The names of the worlds that this talisman is disabled in.
*/
@@ -138,21 +77,23 @@ public abstract class Talisman implements Listener, Watcher {
@Getter
private boolean enabled;
/**
* All levels.
*/
private final Map<Integer, TalismanLevel> levels = new HashMap<>();
/**
* Create a new Talisman.
*
* @param key The key name of the talisman.
* @param strength The strength of the talisman.
* @param prerequisites Optional {@link Prerequisite}s that must be met.
*/
protected Talisman(@NotNull final String key,
@NotNull final TalismanStrength strength,
@NotNull final Prerequisite... prerequisites) {
this.strength = strength;
this.key = this.getPlugin().getNamespacedKeyFactory().create(key + "_" + strength.name().toLowerCase());
this.key = this.getPlugin().getNamespacedKeyFactory().create(key);
this.uuid = UUID.nameUUIDFromBytes(this.getKey().getKey().getBytes());
this.configName = this.key.getKey().replace("_", "");
this.config = new TalismanConfig(this.configName, this.strength, this.getClass(), this.plugin);
this.config = new TalismanConfig(this.configName, this.getClass(), this.plugin);
if (Bukkit.getPluginManager().getPermission("talismans.fromtable." + configName) == null) {
Permission permission = new Permission(
@@ -178,52 +119,22 @@ public abstract class Talisman implements Listener, Watcher {
*/
public void update() {
config.update();
name = StringUtils.translate(config.getString("name"));
description = StringUtils.translate(config.getString("description"));
skullBase64 = config.getString(Talismans.GENERAL_LOCATION + "texture");
Material material = Material.getMaterial(config.getString(Talismans.GENERAL_LOCATION + "material").toUpperCase());
Validate.notNull(material, "Material specified for " + name + " is invalid!");
Validate.notNull(material, "Material specified for " + this.getConfigName() + " is invalid!");
TalismanUtils.registerTalismanMaterial(material);
disabledWorldNames.clear();
disabledWorldNames.addAll(config.getStrings(Talismans.GENERAL_LOCATION + "disabled-in-worlds"));
disabledWorlds.clear();
formattedDescription = Arrays.stream(WordUtils.wrap(description, this.getPlugin().getConfigYml().getInt("description.wrap"), "\n", false).split("\\r?\\n"))
.map(s -> Display.PREFIX + StringUtils.translate(this.getPlugin().getLangYml().getString("description-color") + s)).collect(Collectors.toList());
this.levels.clear();
for (String key : config.getSubsection("levels").getKeys(false)) {
this.levels.put(Integer.parseInt(key), new TalismanLevel(this, Integer.parseInt(key), config.getSubsection("levels." + key)));
}
List<String> worldNames = Bukkit.getWorlds().stream().map(World::getName).map(String::toLowerCase).collect(Collectors.toList());
List<String> disabledExistingWorldNames = disabledWorldNames.stream().filter(s -> worldNames.contains(s.toLowerCase())).collect(Collectors.toList());
disabledWorlds.addAll(Bukkit.getWorlds().stream().filter(world -> disabledExistingWorldNames.contains(world.getName().toLowerCase())).collect(Collectors.toList()));
enabled = config.getBool("enabled");
craftable = config.getBool(Talismans.OBTAINING_LOCATION + "craftable");
TalismanUtils.registerPlaceholders(this);
ItemStack out = new ItemStack(material, 1);
ItemMeta outMeta = out.getItemMeta();
assert outMeta != null;
PersistentDataContainer container = outMeta.getPersistentDataContainer();
container.set(this.getKey(), PersistentDataType.INTEGER, 1);
out.setItemMeta(outMeta);
Display.display(out);
this.itemStack = out;
new CustomItem(this.getKey(), test -> Objects.equals(this, TalismanChecks.getTalismanOnItem(test)), out).register();
if (this.isCraftable() && this.isEnabled()) {
ShapedCraftingRecipe.Builder builder = ShapedCraftingRecipe.builder(this.getPlugin(), this.getKey().getKey())
.setOutput(out);
List<String> recipeStrings = this.getConfig().getStrings(Talismans.OBTAINING_LOCATION + "recipe");
for (int i = 0; i < 9; i++) {
builder.setRecipePart(i, Items.lookup(recipeStrings.get(i)));
}
this.recipe = builder.build();
this.recipe.register();
}
postUpdate();
}
@@ -233,12 +144,13 @@ public abstract class Talisman implements Listener, Watcher {
}
/**
* Get the name of the talisman, formatted with color.
* Get level.
*
* @return The name.
* @param level The level.
* @return The level or null if not found.
*/
public String getFormattedName() {
return this.getStrength().getColor() + this.getName();
public final TalismanLevel getLevel(final int level) {
return levels.get(level);
}
@Override

View File

@@ -0,0 +1,201 @@
package com.willfp.talismans.talismans;
import com.willfp.eco.core.EcoPlugin;
import com.willfp.eco.core.config.Config;
import com.willfp.eco.core.display.Display;
import com.willfp.eco.core.items.CustomItem;
import com.willfp.eco.core.items.Items;
import com.willfp.eco.core.recipe.recipes.ShapedCraftingRecipe;
import com.willfp.eco.util.StringUtils;
import com.willfp.talismans.TalismansPlugin;
import com.willfp.talismans.talismans.util.TalismanChecks;
import com.willfp.talismans.talismans.util.TalismanUtils;
import lombok.AccessLevel;
import lombok.Getter;
import org.apache.commons.lang.Validate;
import org.apache.commons.lang.WordUtils;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
public class TalismanLevel {
/**
* Instance of Talismans for talismans to be able to access.
*/
@Getter(AccessLevel.PROTECTED)
private final EcoPlugin plugin = TalismansPlugin.getInstance();
/**
* The key to store talismans in meta.
*/
@Getter
private final NamespacedKey key;
/**
* The display name of the talisman.
*/
@Getter
private String name;
/**
* The description of the talisman.
*/
@Getter
private String description;
/**
* Get description of talisman formatted.
*/
@Getter
private List<String> formattedDescription;
/**
* The talisman level.
*/
@Getter
private final int level;
/**
* The talisman.
*/
@Getter
private final Talisman talisman;
/**
* The talisman's config.
*/
@Getter
private final Config config;
/**
* The talisman item.
*/
@Getter
private ItemStack itemStack;
/**
* The talisman recipe.
*/
@Getter
private ShapedCraftingRecipe recipe = null;
/**
* If the talisman is craftable.
*/
@Getter
private boolean craftable = true;
/**
* The base64 skull texture.
*/
@Getter
private String skullBase64;
/**
* Create a new Talisman Level.
*
* @param talisman The talisman.
* @param level The level.
* @param config The config.
*/
protected TalismanLevel(@NotNull final Talisman talisman,
final int level,
@NotNull final Config config) {
this.config = config;
this.level = level;
this.talisman = talisman;
this.key = this.getPlugin().getNamespacedKeyFactory().create(talisman.getKey().getKey() + "_" + level);
if (Bukkit.getPluginManager().getPermission("talismans.fromtable." + talisman.getConfigName() + "." + level) == null) {
Permission permission = new Permission(
"talismans.fromtable." + talisman.getConfigName() + "." + level,
"Allows getting " + talisman.getConfigName() + " " + level + " from a Crafting Table",
PermissionDefault.TRUE
);
permission.addParent(Objects.requireNonNull(Bukkit.getPluginManager().getPermission("talismans.fromtable.*")), true);
Bukkit.getPluginManager().addPermission(permission);
}
this.update();
}
/**
* Update the talisman based off config values.
* This can be overridden but may lead to unexpected behavior.
*/
public void update() {
name = config.getString("name");
description = config.getString("description");
skullBase64 = config.getString(Talismans.GENERAL_LOCATION + "texture");
Material material = Material.getMaterial(config.getString(Talismans.GENERAL_LOCATION + "material").toUpperCase());
Validate.notNull(material, "Material specified for " + name + " is invalid!");
TalismanUtils.registerTalismanMaterial(material);
formattedDescription = Arrays.stream(WordUtils.wrap(description, this.getPlugin().getConfigYml().getInt("description.wrap"), "\n", false).split("\\r?\\n"))
.map(s -> Display.PREFIX + StringUtils.translate(this.getPlugin().getLangYml().getString("description-color") + s)).collect(Collectors.toList());
craftable = config.getBool(Talismans.OBTAINING_LOCATION + "craftable");
ItemStack out = new ItemStack(material, 1);
ItemMeta outMeta = out.getItemMeta();
assert outMeta != null;
PersistentDataContainer container = outMeta.getPersistentDataContainer();
container.set(this.getKey(), PersistentDataType.INTEGER, 1);
out.setItemMeta(outMeta);
Display.display(out);
this.itemStack = out;
new CustomItem(this.getKey(), test -> Objects.equals(this, TalismanChecks.getTalismanOnItem(test)), out).register();
if (this.isCraftable()) {
ShapedCraftingRecipe.Builder builder = ShapedCraftingRecipe.builder(this.getPlugin(), this.getKey().getKey())
.setOutput(out);
List<String> recipeStrings = this.getConfig().getStrings(Talismans.OBTAINING_LOCATION + "recipe");
for (int i = 0; i < 9; i++) {
builder.setRecipePart(i, Items.lookup(recipeStrings.get(i)));
}
this.recipe = builder.build();
this.recipe.register();
}
postUpdate();
}
protected void postUpdate() {
// Unused as some talismans may have postUpdate tasks, however most won't.
}
@Override
public boolean equals(@Nullable final Object o) {
if (this == o) {
return true;
}
if (!(o instanceof TalismanLevel)) {
return false;
}
TalismanLevel that = (TalismanLevel) o;
return getLevel() == that.getLevel() && Objects.equals(getTalisman(), that.getTalisman());
}
@Override
public int hashCode() {
return Objects.hash(getLevel(), getTalisman());
}
}

View File

@@ -4,7 +4,6 @@ import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.google.common.collect.ImmutableList;
import com.willfp.eco.core.config.ConfigUpdater;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import com.willfp.talismans.talismans.talismans.AlchemyTalisman;
import com.willfp.talismans.talismans.talismans.ArcheryTalisman;
import com.willfp.talismans.talismans.talismans.AttackSpeedTalisman;
@@ -50,70 +49,32 @@ public class Talismans {
private static final BiMap<NamespacedKey, Talisman> BY_KEY = HashBiMap.create();
public static final Talisman ZOMBIE_TALISMAN = new ZombieTalisman(TalismanStrength.TALISMAN);
public static final Talisman SKELETON_TALISMAN = new SkeletonTalisman(TalismanStrength.TALISMAN);
public static final Talisman CREEPER_TALISMAN = new CreeperTalisman(TalismanStrength.TALISMAN);
public static final Talisman SPIDER_TALISMAN = new SpiderTalisman(TalismanStrength.TALISMAN);
public static final Talisman RAID_TALISMAN = new RaidTalisman(TalismanStrength.TALISMAN);
public static final Talisman NETHER_TALISMAN = new NetherTalisman(TalismanStrength.TALISMAN);
public static final Talisman END_TALISMAN = new EndTalisman(TalismanStrength.TALISMAN);
public static final Talisman FEATHER_TALISMAN = new FeatherTalisman(TalismanStrength.TALISMAN);
public static final Talisman FLAME_TALISMAN = new FlameTalisman(TalismanStrength.TALISMAN);
public static final Talisman ARCHERY_TALISMAN = new ArcheryTalisman(TalismanStrength.TALISMAN);
public static final Talisman POSEIDON_TALISMAN = new PoseidonTalisman(TalismanStrength.TALISMAN);
public static final Talisman EXPERIENCE_TALISMAN = new ExperienceTalisman(TalismanStrength.TALISMAN);
public static final Talisman EXTRACTION_TALISMAN = new ExtractionTalisman(TalismanStrength.TALISMAN);
public static final Talisman SHARPNESS_TALISMAN = new SharpnessTalisman(TalismanStrength.TALISMAN);
public static final Talisman ZOMBIE_RESISTANCE_TALISMAN = new ZombieResistanceTalisman(TalismanStrength.TALISMAN);
public static final Talisman SPIDER_RESISTANCE_TALISMAN = new SpiderResistanceTalisman(TalismanStrength.TALISMAN);
public static final Talisman RESISTANCE_TALISMAN = new ResistanceTalisman(TalismanStrength.TALISMAN);
public static final Talisman STRENGTH_TALISMAN = new StrengthTalisman(TalismanStrength.TALISMAN);
public static final Talisman ARCHERY_RING = new ArcheryTalisman(TalismanStrength.RING);
public static final Talisman END_RING = new EndTalisman(TalismanStrength.RING);
public static final Talisman EXPERIENCE_RING = new ExperienceTalisman(TalismanStrength.RING);
public static final Talisman EXTRACTION_RING = new ExtractionTalisman(TalismanStrength.RING);
public static final Talisman FEATHER_RING = new FeatherTalisman(TalismanStrength.RING);
public static final Talisman FLAME_RING = new FlameTalisman(TalismanStrength.RING);
public static final Talisman NETHER_RING = new NetherTalisman(TalismanStrength.RING);
public static final Talisman POSEIDON_RING = new PoseidonTalisman(TalismanStrength.RING);
public static final Talisman RESISTANCE_RING = new ResistanceTalisman(TalismanStrength.RING);
public static final Talisman SHARPNESS_RING = new SharpnessTalisman(TalismanStrength.RING);
public static final Talisman STRENGTH_RING = new StrengthTalisman(TalismanStrength.RING);
public static final Talisman ARCHERY_RELIC = new ArcheryTalisman(TalismanStrength.RELIC);
public static final Talisman END_RELIC = new EndTalisman(TalismanStrength.RELIC);
public static final Talisman EXPERIENCE_RELIC = new ExperienceTalisman(TalismanStrength.RELIC);
public static final Talisman EXTRACTION_RELIC = new ExtractionTalisman(TalismanStrength.RELIC);
public static final Talisman FEATHER_RELIC = new FeatherTalisman(TalismanStrength.RELIC);
public static final Talisman FLAME_RELIC = new FlameTalisman(TalismanStrength.RELIC);
public static final Talisman NETHER_RELIC = new NetherTalisman(TalismanStrength.RELIC);
public static final Talisman POSEIDON_RELIC = new PoseidonTalisman(TalismanStrength.RELIC);
public static final Talisman RESISTANCE_RELIC = new ResistanceTalisman(TalismanStrength.RELIC);
public static final Talisman SHARPNESS_RELIC = new SharpnessTalisman(TalismanStrength.RELIC);
public static final Talisman STRENGTH_RELIC = new StrengthTalisman(TalismanStrength.RELIC);
public static final Talisman RAID_RING = new RaidTalisman(TalismanStrength.RING);
public static final Talisman RAID_RELIC = new RaidTalisman(TalismanStrength.RELIC);
public static final Talisman ALCHEMY_TALISMAN = new AlchemyTalisman(TalismanStrength.TALISMAN);
public static final Talisman ALCHEMY_RING = new AlchemyTalisman(TalismanStrength.RING);
public static final Talisman ALCHEMY_RELIC = new AlchemyTalisman(TalismanStrength.RELIC);
public static final Talisman IMMUNITY_TALISMAN = new ImmunityTalisman(TalismanStrength.TALISMAN);
public static final Talisman FLUX_TALISMAN = new FluxTalisman(TalismanStrength.TALISMAN);
public static final Talisman FLUX_RING = new FluxTalisman(TalismanStrength.RING);
public static final Talisman FLUX_RELIC = new FluxTalisman(TalismanStrength.RELIC);
public static final Talisman HEALING_TALISMAN = new HealingTalisman(TalismanStrength.TALISMAN);
public static final Talisman HEALING_RING = new HealingTalisman(TalismanStrength.RING);
public static final Talisman HEALING_RELIC = new HealingTalisman(TalismanStrength.RELIC);
public static final Talisman SPEED_TALISMAN = new SpeedTalisman(TalismanStrength.TALISMAN);
public static final Talisman SPEED_RING = new SpeedTalisman(TalismanStrength.RING);
public static final Talisman SPEED_RELIC = new SpeedTalisman(TalismanStrength.RELIC);
public static final Talisman BOSS_TALISMAN = new BossTalisman(TalismanStrength.TALISMAN);
public static final Talisman BOSS_RING = new BossTalisman(TalismanStrength.RING);
public static final Talisman BOSS_RELIC = new BossTalisman(TalismanStrength.RELIC);
public static final Talisman GRAVITY_TALISMAN = new GravityTalisman(TalismanStrength.TALISMAN);
public static final Talisman GRAVITY_RING = new GravityTalisman(TalismanStrength.RING);
public static final Talisman GRAVITY_RELIC = new GravityTalisman(TalismanStrength.RELIC);
public static final Talisman ATTACK_SPEED_TALISMAN = new AttackSpeedTalisman(TalismanStrength.TALISMAN);
public static final Talisman ATTACK_SPEED_RING = new AttackSpeedTalisman(TalismanStrength.RING);
public static final Talisman ATTACK_SPEEED_TALISMAN = new AttackSpeedTalisman(TalismanStrength.RELIC);
public static final Talisman ZOMBIE_TALISMAN = new ZombieTalisman();
public static final Talisman SKELETON_TALISMAN = new SkeletonTalisman();
public static final Talisman CREEPER_TALISMAN = new CreeperTalisman();
public static final Talisman SPIDER_TALISMAN = new SpiderTalisman();
public static final Talisman RAID_TALISMAN = new RaidTalisman();
public static final Talisman NETHER_TALISMAN = new NetherTalisman();
public static final Talisman END_TALISMAN = new EndTalisman();
public static final Talisman FEATHER_TALISMAN = new FeatherTalisman();
public static final Talisman FLAME_TALISMAN = new FlameTalisman();
public static final Talisman ARCHERY_TALISMAN = new ArcheryTalisman();
public static final Talisman POSEIDON_TALISMAN = new PoseidonTalisman();
public static final Talisman EXPERIENCE_TALISMAN = new ExperienceTalisman();
public static final Talisman EXTRACTION_TALISMAN = new ExtractionTalisman();
public static final Talisman SHARPNESS_TALISMAN = new SharpnessTalisman();
public static final Talisman ZOMBIE_RESISTANCE_TALISMAN = new ZombieResistanceTalisman();
public static final Talisman SPIDER_RESISTANCE_TALISMAN = new SpiderResistanceTalisman();
public static final Talisman RESISTANCE_TALISMAN = new ResistanceTalisman();
public static final Talisman STRENGTH_TALISMAN = new StrengthTalisman();
public static final Talisman ALCHEMY_TALISMAN = new AlchemyTalisman();
public static final Talisman IMMUNITY_TALISMAN = new ImmunityTalisman();
public static final Talisman FLUX_TALISMAN = new FluxTalisman();
public static final Talisman HEALING_TALISMAN = new HealingTalisman();
public static final Talisman SPEED_TALISMAN = new SpeedTalisman();
public static final Talisman BOSS_TALISMAN = new BossTalisman();
public static final Talisman GRAVITY_TALISMAN = new GravityTalisman();
public static final Talisman ATTACK_SPEED_TALISMAN = new AttackSpeedTalisman();
/**
* Get all registered {@link Talisman}s.
@@ -133,17 +94,6 @@ public class Talismans {
return ImmutableList.copyOf(BY_KEY.keySet());
}
/**
* Get {@link Talisman} matching display name.
*
* @param name The display name to search for.
* @return The matching {@link Talisman}, or null if not found.
*/
public static Talisman getByName(@NotNull final String name) {
Optional<Talisman> matching = values().stream().filter(talisman -> talisman.getName().equalsIgnoreCase(name)).findFirst();
return matching.orElse(null);
}
/**
* Get {@link Talisman} matching config name.
*

View File

@@ -1,104 +0,0 @@
package com.willfp.talismans.talismans.meta;
import com.google.common.collect.ImmutableSet;
import com.willfp.eco.core.config.ConfigUpdater;
import com.willfp.talismans.TalismansPlugin;
import lombok.Getter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.Supplier;
public class TalismanStrength {
/**
* All registered strengths.
*/
private static final Map<String, TalismanStrength> REGISTERED = new HashMap<>();
/**
* Weakest.
*/
public static final TalismanStrength TALISMAN = new TalismanStrength("talisman", () -> TalismansPlugin.getInstance().getConfigYml().getString("strengths.talisman.color"));
/**
* Middle.
*/
public static final TalismanStrength RING = new TalismanStrength("ring", () -> TalismansPlugin.getInstance().getConfigYml().getString("strengths.ring.color"));
/**
* Strongest.
*/
public static final TalismanStrength RELIC = new TalismanStrength("relic", () -> TalismansPlugin.getInstance().getConfigYml().getString("strengths.relic.color"));
/**
* The color.
*/
@Getter
private String color;
/**
* The name.
*/
private final String name;
/**
* Supplier to get the color.
*/
private final Supplier<String> colorSupplier;
/**
* Create a new strength.
*
* @param name The name.
* @param colorSupplier The color supplier.
*/
protected TalismanStrength(@NotNull final String name,
@NotNull final Supplier<String> colorSupplier) {
this.colorSupplier = colorSupplier;
this.name = name;
this.color = colorSupplier.get();
}
/**
* Get the name of the strength.
*
* @return The name.
*/
public String name() {
return name;
}
/**
* Update values.
*/
@ConfigUpdater
public static void update() {
for (TalismanStrength strength : TalismanStrength.values()) {
strength.color = strength.colorSupplier.get();
}
}
/**
* Get talisman strength by name.
*
* @param name The name.
* @return The strength, or null if not found.
*/
@Nullable
public static TalismanStrength valueOf(@NotNull final String name) {
return REGISTERED.get(name);
}
/**
* Get all registered talisman strengths.
*
* @return A collection of strengths.
*/
public static Set<TalismanStrength> values() {
return ImmutableSet.copyOf(REGISTERED.values());
}
}

View File

@@ -1,7 +1,6 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import com.willfp.talismans.talismans.util.TalismanChecks;
import com.willfp.talismans.talismans.util.TalismanUtils;
import org.bukkit.entity.Player;
@@ -11,8 +10,8 @@ import org.bukkit.potion.PotionEffect;
import org.jetbrains.annotations.NotNull;
public class AlchemyTalisman extends Talisman {
public AlchemyTalisman(@NotNull final TalismanStrength strength) {
super("alchemy", strength);
public AlchemyTalisman() {
super("alchemy");
}
@EventHandler
@@ -30,11 +29,13 @@ public class AlchemyTalisman extends Talisman {
return;
}
if (!TalismanChecks.hasTalisman(player, this)) {
int level = TalismanChecks.getTalismanLevel(player, this);
if (level == 0) {
return;
}
if (!TalismanUtils.passedChance(this)) {
if (!TalismanUtils.passedChance(this.getLevel(level))) {
return;
}

View File

@@ -1,8 +1,8 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
@@ -10,14 +10,16 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.jetbrains.annotations.NotNull;
public class ArcheryTalisman extends Talisman {
public ArcheryTalisman(@NotNull final TalismanStrength strength) {
super("archery", strength);
public ArcheryTalisman() {
super("archery");
}
@Override
public void onArrowDamage(@NotNull final Player attacker,
public void onArrowDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Arrow arrow,
@NotNull final EntityDamageByEntityEvent event) {
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
}

View File

@@ -2,7 +2,6 @@ package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import com.willfp.talismans.talismans.util.equipevent.EquipType;
import com.willfp.talismans.talismans.util.equipevent.TalismanEquipEvent;
import org.bukkit.attribute.Attribute;
@@ -15,8 +14,8 @@ import org.jetbrains.annotations.NotNull;
public class AttackSpeedTalisman extends Talisman {
private AttributeModifier modifier = null;
public AttackSpeedTalisman(@NotNull final TalismanStrength strength) {
super("attack_speed", strength);
public AttackSpeedTalisman() {
super("attack_speed");
}
@Override

View File

@@ -1,8 +1,8 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.NamespacedKey;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Boss;
@@ -16,23 +16,25 @@ import org.jetbrains.annotations.NotNull;
@SuppressWarnings("deprecation")
public class BossTalisman extends Talisman {
public BossTalisman(@NotNull final TalismanStrength strength) {
super("boss", strength);
public BossTalisman() {
super("boss");
}
@Override
public void onMeleeAttack(@NotNull final Player attacker,
public void onMeleeAttack(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final EntityDamageByEntityEvent event) {
if (!(victim instanceof Boss || victim instanceof ElderGuardian) && !victim.getPersistentDataContainer().has(new NamespacedKey("ecobosses", "boss"), PersistentDataType.STRING)) {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onArrowDamage(@NotNull final Player attacker,
public void onArrowDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Arrow arrow,
@NotNull final EntityDamageByEntityEvent event) {
@@ -40,11 +42,12 @@ public class BossTalisman extends Talisman {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onTridentDamage(@NotNull final Player attacker,
public void onTridentDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Trident trident,
@NotNull final EntityDamageByEntityEvent event) {
@@ -52,6 +55,6 @@ public class BossTalisman extends Talisman {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
}

View File

@@ -1,8 +1,8 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.LivingEntity;
@@ -12,23 +12,25 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.jetbrains.annotations.NotNull;
public class CreeperTalisman extends Talisman {
public CreeperTalisman(@NotNull final TalismanStrength strength) {
super("creeper", strength);
public CreeperTalisman() {
super("creeper");
}
@Override
public void onMeleeAttack(@NotNull final Player attacker,
public void onMeleeAttack(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final EntityDamageByEntityEvent event) {
if (!(victim instanceof Creeper)) {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onArrowDamage(@NotNull final Player attacker,
public void onArrowDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Arrow arrow,
@NotNull final EntityDamageByEntityEvent event) {
@@ -36,11 +38,12 @@ public class CreeperTalisman extends Talisman {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onTridentDamage(@NotNull final Player attacker,
public void onTridentDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Trident trident,
@NotNull final EntityDamageByEntityEvent event) {
@@ -48,6 +51,6 @@ public class CreeperTalisman extends Talisman {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
}

View File

@@ -1,8 +1,8 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.World;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
@@ -12,23 +12,25 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.jetbrains.annotations.NotNull;
public class EndTalisman extends Talisman {
public EndTalisman(@NotNull final TalismanStrength strength) {
super("end", strength);
public EndTalisman() {
super("end");
}
@Override
public void onMeleeAttack(@NotNull final Player attacker,
public void onMeleeAttack(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final EntityDamageByEntityEvent event) {
if (attacker.getWorld().getEnvironment() != World.Environment.THE_END) {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onArrowDamage(@NotNull final Player attacker,
public void onArrowDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Arrow arrow,
@NotNull final EntityDamageByEntityEvent event) {
@@ -36,11 +38,12 @@ public class EndTalisman extends Talisman {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onTridentDamage(@NotNull final Player attacker,
public void onTridentDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Trident trident,
@NotNull final EntityDamageByEntityEvent event) {
@@ -48,6 +51,6 @@ public class EndTalisman extends Talisman {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
}

View File

@@ -3,15 +3,14 @@ package com.willfp.talismans.talismans.talismans;
import com.willfp.eco.core.events.NaturalExpGainEvent;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import com.willfp.talismans.talismans.util.TalismanChecks;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.jetbrains.annotations.NotNull;
public class ExperienceTalisman extends Talisman {
public ExperienceTalisman(@NotNull final TalismanStrength strength) {
super("experience", strength);
public ExperienceTalisman() {
super("experience");
}
@EventHandler

View File

@@ -2,8 +2,8 @@ package com.willfp.talismans.talismans.talismans;
import com.willfp.eco.core.drops.DropQueue;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import com.willfp.talismans.talismans.util.TalismanUtils;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
@@ -11,20 +11,21 @@ import org.bukkit.event.block.BlockBreakEvent;
import org.jetbrains.annotations.NotNull;
public class ExtractionTalisman extends Talisman {
public ExtractionTalisman(@NotNull final TalismanStrength strength) {
super("extraction", strength);
public ExtractionTalisman() {
super("extraction");
}
@Override
public void onBlockBreak(@NotNull final Player player,
public void onBlockBreak(@NotNull final TalismanLevel level,
@NotNull final Player player,
@NotNull final Block block,
@NotNull final BlockBreakEvent event) {
if (!TalismanUtils.passedChance(this)) {
if (!TalismanUtils.passedChance(level)) {
return;
}
new DropQueue(player)
.addXP(this.getConfig().getInt(Talismans.CONFIG_LOCATION + "xp-amount"))
.addXP(level.getConfig().getInt(Talismans.CONFIG_LOCATION + "xp-amount"))
.setLocation(block.getLocation())
.push();
}

View File

@@ -1,19 +1,20 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageEvent;
import org.jetbrains.annotations.NotNull;
public class FeatherTalisman extends Talisman {
public FeatherTalisman(@NotNull final TalismanStrength strength) {
super("feather", strength);
public FeatherTalisman() {
super("feather");
}
@Override
public void onDamage(@NotNull final Player victim,
public void onDamage(@NotNull final TalismanLevel level,
@NotNull final Player victim,
@NotNull final EntityDamageEvent event) {
if (event.getCause() != EntityDamageEvent.DamageCause.FALL) {
return;

View File

@@ -1,24 +1,25 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageEvent;
import org.jetbrains.annotations.NotNull;
public class FlameTalisman extends Talisman {
public FlameTalisman(@NotNull final TalismanStrength strength) {
super("flame", strength);
public FlameTalisman() {
super("flame");
}
@Override
public void onDamage(@NotNull final Player victim,
public void onDamage(@NotNull final TalismanLevel level,
@NotNull final Player victim,
@NotNull final EntityDamageEvent event) {
if (event.getCause() != EntityDamageEvent.DamageCause.FIRE && event.getCause() != EntityDamageEvent.DamageCause.FIRE_TICK) {
return;
}
event.setDamage(event.getDamage() * this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "multiplier"));
event.setDamage(event.getDamage() * level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "multiplier"));
}
}

View File

@@ -3,7 +3,6 @@ package com.willfp.talismans.talismans.talismans;
import com.willfp.eco.core.integrations.mcmmo.McmmoManager;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import com.willfp.talismans.talismans.util.TalismanChecks;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
@@ -12,8 +11,8 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.jetbrains.annotations.NotNull;
public class FluxTalisman extends Talisman {
public FluxTalisman(@NotNull final TalismanStrength strength) {
super("flux", strength);
public FluxTalisman() {
super("flux");
}
@EventHandler

View File

@@ -1,19 +1,20 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageEvent;
import org.jetbrains.annotations.NotNull;
public class GravityTalisman extends Talisman {
public GravityTalisman(@NotNull final TalismanStrength strength) {
super("gravity", strength);
public GravityTalisman() {
super("gravity");
}
@Override
public void onDamage(@NotNull final Player victim,
public void onDamage(@NotNull final TalismanLevel level,
@NotNull final Player victim,
@NotNull final EntityDamageEvent event) {
if (victim.getLocation().getY() > 64 || victim.getLocation().getY() < 0) {
return;
@@ -21,7 +22,7 @@ public class GravityTalisman extends Talisman {
double below64 = 64 - victim.getLocation().getY();
double multiplier = below64 / 64;
double multiplierMultiplier = this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "height-multiplier");
double multiplierMultiplier = level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "height-multiplier");
multiplier *= multiplierMultiplier;
multiplier += 1;

View File

@@ -2,7 +2,6 @@ package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import com.willfp.talismans.talismans.util.TalismanChecks;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -10,8 +9,8 @@ import org.bukkit.event.entity.EntityRegainHealthEvent;
import org.jetbrains.annotations.NotNull;
public class HealingTalisman extends Talisman {
public HealingTalisman(@NotNull final TalismanStrength strength) {
super("healing", strength);
public HealingTalisman() {
super("healing");
}
@EventHandler

View File

@@ -1,18 +1,19 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import com.willfp.talismans.talismans.TalismanLevel;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageEvent;
import org.jetbrains.annotations.NotNull;
public class ImmunityTalisman extends Talisman {
public ImmunityTalisman(@NotNull final TalismanStrength strength) {
super("immunity", strength);
public ImmunityTalisman() {
super("immunity");
}
@Override
public void onDamage(@NotNull final Player victim,
public void onDamage(@NotNull final TalismanLevel level,
@NotNull final Player victim,
@NotNull final EntityDamageEvent event) {
if (event.getCause() != EntityDamageEvent.DamageCause.POISON) {
return;

View File

@@ -1,8 +1,8 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.World;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
@@ -12,23 +12,25 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.jetbrains.annotations.NotNull;
public class NetherTalisman extends Talisman {
public NetherTalisman(@NotNull final TalismanStrength strength) {
super("nether", strength);
public NetherTalisman() {
super("nether");
}
@Override
public void onMeleeAttack(@NotNull final Player attacker,
public void onMeleeAttack(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final EntityDamageByEntityEvent event) {
if (attacker.getWorld().getEnvironment() != World.Environment.NETHER) {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onArrowDamage(@NotNull final Player attacker,
public void onArrowDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Arrow arrow,
@NotNull final EntityDamageByEntityEvent event) {
@@ -36,11 +38,12 @@ public class NetherTalisman extends Talisman {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onTridentDamage(@NotNull final Player attacker,
public void onTridentDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Trident trident,
@NotNull final EntityDamageByEntityEvent event) {
@@ -48,6 +51,6 @@ public class NetherTalisman extends Talisman {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
}

View File

@@ -1,8 +1,8 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Trident;
@@ -10,15 +10,16 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.jetbrains.annotations.NotNull;
public class PoseidonTalisman extends Talisman {
public PoseidonTalisman(@NotNull final TalismanStrength strength) {
super("poseidon", strength);
public PoseidonTalisman() {
super("poseidon");
}
@Override
public void onTridentDamage(@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Trident trident,
@NotNull final EntityDamageByEntityEvent event) {
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
public void onTridentDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Trident trident,
@NotNull final EntityDamageByEntityEvent event) {
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
}

View File

@@ -1,8 +1,8 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Illager;
import org.bukkit.entity.LivingEntity;
@@ -12,23 +12,25 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.jetbrains.annotations.NotNull;
public class RaidTalisman extends Talisman {
public RaidTalisman(@NotNull final TalismanStrength strength) {
super("raid", strength);
public RaidTalisman() {
super("raid");
}
@Override
public void onMeleeAttack(@NotNull final Player attacker,
public void onMeleeAttack(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final EntityDamageByEntityEvent event) {
if (!(victim instanceof Illager)) {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onArrowDamage(@NotNull final Player attacker,
public void onArrowDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Arrow arrow,
@NotNull final EntityDamageByEntityEvent event) {
@@ -36,11 +38,12 @@ public class RaidTalisman extends Talisman {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onTridentDamage(@NotNull final Player attacker,
public void onTridentDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Trident trident,
@NotNull final EntityDamageByEntityEvent event) {
@@ -48,6 +51,6 @@ public class RaidTalisman extends Talisman {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
}

View File

@@ -1,20 +1,21 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageEvent;
import org.jetbrains.annotations.NotNull;
public class ResistanceTalisman extends Talisman {
public ResistanceTalisman(@NotNull final TalismanStrength strength) {
super("resistance", strength);
public ResistanceTalisman() {
super("resistance");
}
@Override
public void onDamage(@NotNull final Player victim,
public void onDamage(@NotNull final TalismanLevel level,
@NotNull final Player victim,
@NotNull final EntityDamageEvent event) {
event.setDamage(event.getDamage() * (1 - (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-less-damage")) / 100));
event.setDamage(event.getDamage() * (1 - (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-less-damage")) / 100));
}
}

View File

@@ -1,22 +1,23 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.jetbrains.annotations.NotNull;
public class SharpnessTalisman extends Talisman {
public SharpnessTalisman(@NotNull final TalismanStrength strength) {
super("sharpness", strength);
public SharpnessTalisman() {
super("sharpness");
}
@Override
public void onMeleeAttack(@NotNull final Player attacker,
public void onMeleeAttack(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final EntityDamageByEntityEvent event) {
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
}

View File

@@ -1,8 +1,8 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
@@ -12,23 +12,25 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.jetbrains.annotations.NotNull;
public class SkeletonTalisman extends Talisman {
public SkeletonTalisman(@NotNull final TalismanStrength strength) {
super("skeleton", strength);
public SkeletonTalisman() {
super("skeleton");
}
@Override
public void onMeleeAttack(@NotNull final Player attacker,
public void onMeleeAttack(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final EntityDamageByEntityEvent event) {
if (!(victim instanceof Skeleton)) {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onArrowDamage(@NotNull final Player attacker,
public void onArrowDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Arrow arrow,
@NotNull final EntityDamageByEntityEvent event) {
@@ -36,11 +38,12 @@ public class SkeletonTalisman extends Talisman {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onTridentDamage(@NotNull final Player attacker,
public void onTridentDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Trident trident,
@NotNull final EntityDamageByEntityEvent event) {
@@ -48,6 +51,6 @@ public class SkeletonTalisman extends Talisman {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
}

View File

@@ -2,7 +2,6 @@ package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import com.willfp.talismans.talismans.util.equipevent.EquipType;
import com.willfp.talismans.talismans.util.equipevent.TalismanEquipEvent;
import org.bukkit.attribute.Attribute;
@@ -15,8 +14,8 @@ import org.jetbrains.annotations.NotNull;
public class SpeedTalisman extends Talisman {
private AttributeModifier modifier = null;
public SpeedTalisman(@NotNull final TalismanStrength strength) {
super("speed", strength);
public SpeedTalisman() {
super("speed");
}
@Override

View File

@@ -1,8 +1,8 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Spider;
@@ -10,18 +10,19 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.jetbrains.annotations.NotNull;
public class SpiderResistanceTalisman extends Talisman {
public SpiderResistanceTalisman(@NotNull final TalismanStrength strength) {
super("spider_resistance", strength);
public SpiderResistanceTalisman() {
super("spider_resistance");
}
@Override
public void onDamageByEntity(@NotNull final Player victim,
public void onDamageByEntity(@NotNull final TalismanLevel level,
@NotNull final Player victim,
@NotNull final Entity attacker,
@NotNull final EntityDamageByEntityEvent event) {
if (!(attacker instanceof Spider)) {
return;
}
event.setDamage(event.getDamage() * (1 - (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-less-damage")) / 100));
event.setDamage(event.getDamage() * (1 - (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-less-damage")) / 100));
}
}

View File

@@ -1,8 +1,8 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
@@ -12,23 +12,25 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.jetbrains.annotations.NotNull;
public class SpiderTalisman extends Talisman {
public SpiderTalisman(@NotNull final TalismanStrength strength) {
super("spider", strength);
public SpiderTalisman() {
super("spider");
}
@Override
public void onMeleeAttack(@NotNull final Player attacker,
public void onMeleeAttack(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final EntityDamageByEntityEvent event) {
if (!(victim instanceof Spider)) {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onArrowDamage(@NotNull final Player attacker,
public void onArrowDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Arrow arrow,
@NotNull final EntityDamageByEntityEvent event) {
@@ -36,11 +38,12 @@ public class SpiderTalisman extends Talisman {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onTridentDamage(@NotNull final Player attacker,
public void onTridentDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Trident trident,
@NotNull final EntityDamageByEntityEvent event) {
@@ -48,6 +51,6 @@ public class SpiderTalisman extends Talisman {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
}

View File

@@ -1,8 +1,8 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
@@ -11,30 +11,33 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.jetbrains.annotations.NotNull;
public class StrengthTalisman extends Talisman {
public StrengthTalisman(@NotNull final TalismanStrength strength) {
super("strength", strength);
public StrengthTalisman() {
super("strength");
}
@Override
public void onMeleeAttack(@NotNull final Player attacker,
public void onMeleeAttack(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final EntityDamageByEntityEvent event) {
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onArrowDamage(@NotNull final Player attacker,
public void onArrowDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Arrow arrow,
@NotNull final EntityDamageByEntityEvent event) {
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onTridentDamage(@NotNull final Player attacker,
public void onTridentDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Trident trident,
@NotNull final EntityDamageByEntityEvent event) {
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
}

View File

@@ -1,8 +1,8 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Zombie;
@@ -10,18 +10,19 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.jetbrains.annotations.NotNull;
public class ZombieResistanceTalisman extends Talisman {
public ZombieResistanceTalisman(@NotNull final TalismanStrength strength) {
super("zombie_resistance", strength);
public ZombieResistanceTalisman() {
super("zombie_resistance");
}
@Override
public void onDamageByEntity(@NotNull final Player victim,
public void onDamageByEntity(@NotNull final TalismanLevel level,
@NotNull final Player victim,
@NotNull final Entity attacker,
@NotNull final EntityDamageByEntityEvent event) {
if (!(attacker instanceof Zombie)) {
return;
}
event.setDamage(event.getDamage() * (1 - (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-less-damage")) / 100));
event.setDamage(event.getDamage() * (1 - (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-less-damage")) / 100));
}
}

View File

@@ -1,8 +1,8 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import com.willfp.talismans.talismans.meta.TalismanStrength;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
@@ -12,23 +12,25 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.jetbrains.annotations.NotNull;
public class ZombieTalisman extends Talisman {
public ZombieTalisman(@NotNull final TalismanStrength strength) {
super("zombie", strength);
public ZombieTalisman() {
super("zombie");
}
@Override
public void onMeleeAttack(@NotNull final Player attacker,
public void onMeleeAttack(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final EntityDamageByEntityEvent event) {
if (!(victim instanceof Zombie)) {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onArrowDamage(@NotNull final Player attacker,
public void onArrowDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Arrow arrow,
@NotNull final EntityDamageByEntityEvent event) {
@@ -36,11 +38,12 @@ public class ZombieTalisman extends Talisman {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
@Override
public void onTridentDamage(@NotNull final Player attacker,
public void onTridentDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Trident trident,
@NotNull final EntityDamageByEntityEvent event) {
@@ -48,6 +51,6 @@ public class ZombieTalisman extends Talisman {
return;
}
event.setDamage(event.getDamage() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
event.setDamage(event.getDamage() * (1 + (level.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percent-more-damage")) / 100));
}
}

View File

@@ -4,6 +4,7 @@ import com.willfp.eco.core.EcoPlugin;
import com.willfp.eco.core.config.ConfigUpdater;
import com.willfp.talismans.TalismansPlugin;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import lombok.experimental.UtilityClass;
import org.bukkit.NamespacedKey;
@@ -33,7 +34,7 @@ public class TalismanChecks {
/**
* Cached talismans.
*/
public static final Map<UUID, Set<Talisman>> CACHED_TALISMANS = Collections.synchronizedMap(new HashMap<>());
public static final Map<UUID, Set<TalismanLevel>> CACHED_TALISMANS = Collections.synchronizedMap(new HashMap<>());
/**
* If ender chests should be checked.
@@ -85,7 +86,7 @@ public class TalismanChecks {
* @param item The item to query.
* @return The talisman, or null if no talisman is present.
*/
public static Talisman getTalismanOnItem(@Nullable final ItemStack item) {
public static TalismanLevel getTalismanOnItem(@Nullable final ItemStack item) {
if (item == null) {
return null;
}
@@ -103,7 +104,19 @@ public class TalismanChecks {
PersistentDataContainer container = meta.getPersistentDataContainer();
NamespacedKey talismanKey = container.getKeys().stream().filter(namespacedKey -> namespacedKey.getNamespace().equals("talismans")).findFirst().orElse(null);
return Talismans.getByKey(talismanKey);
if (talismanKey == null) {
return null;
}
Integer level = container.get(talismanKey, PersistentDataType.INTEGER);
assert level != null;
Talisman talisman = Talismans.getByKey(talismanKey);
if (talisman == null) {
return null;
}
return talisman.getLevel(level);
}
/**
@@ -112,7 +125,7 @@ public class TalismanChecks {
* @param player The player to query.
* @return A set of all found talismans.
*/
public static Set<Talisman> getTalismansOnPlayer(@NotNull final Player player) {
public static Set<TalismanLevel> getTalismansOnPlayer(@NotNull final Player player) {
return getTalismansOnPlayer(player, true);
}
@@ -124,18 +137,18 @@ public class TalismanChecks {
* @param extra Bonus items.
* @return A set of all found talismans.
*/
public static Set<Talisman> getTalismansOnPlayer(@NotNull final Player player,
final boolean useCache,
@NotNull final ItemStack... extra) {
public static Set<TalismanLevel> getTalismansOnPlayer(@NotNull final Player player,
final boolean useCache,
@NotNull final ItemStack... extra) {
if (useCache) {
Set<Talisman> cached = CACHED_TALISMANS.get(player.getUniqueId());
Set<TalismanLevel> cached = CACHED_TALISMANS.get(player.getUniqueId());
if (cached != null) {
return cached;
}
}
List<ItemStack> contents = new ArrayList<>();
Set<Talisman> found = new HashSet<>();
Set<TalismanLevel> found = new HashSet<>();
List<ItemStack> rawContents = new ArrayList<>(Arrays.asList(player.getInventory().getContents()));
@@ -170,7 +183,7 @@ public class TalismanChecks {
}
for (ItemStack itemStack : contents) {
Talisman talisman = getTalismanOnItem(itemStack);
TalismanLevel talisman = getTalismanOnItem(itemStack);
if (talisman == null) {
continue;
}
@@ -199,7 +212,25 @@ public class TalismanChecks {
*/
public static boolean hasTalisman(@NotNull final Player player,
@NotNull final Talisman talisman) {
return getTalismansOnPlayer(player).contains(talisman);
return getTalismanLevel(player, talisman) > 0;
}
/**
* Get if a player has a specific talisman active.
*
* @param player The player to query.
* @param talisman The talisman to search for.
* @return A set of all found talismans.
*/
public static int getTalismanLevel(@NotNull final Player player,
@NotNull final Talisman talisman) {
for (TalismanLevel talismanLevel : getTalismansOnPlayer(player)) {
if (talismanLevel.getTalisman().equals(talisman)) {
return talismanLevel.getLevel();
}
}
return 0;
}
@ConfigUpdater

View File

@@ -1,11 +1,8 @@
package com.willfp.talismans.talismans.util;
import com.willfp.eco.core.integrations.placeholder.PlaceholderEntry;
import com.willfp.eco.core.integrations.placeholder.PlaceholderManager;
import com.willfp.eco.util.NumberUtils;
import com.willfp.eco.util.StringUtils;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.TalismanLevel;
import com.willfp.talismans.talismans.Talismans;
import lombok.experimental.UtilityClass;
import org.bukkit.Material;
@@ -29,36 +26,10 @@ public class TalismanUtils {
* @param talisman The talisman to query.
* @return If the talisman should then be executed.
*/
public static boolean passedChance(@NotNull final Talisman talisman) {
public static boolean passedChance(@NotNull final TalismanLevel talisman) {
return NumberUtils.randFloat(0, 1) < (talisman.getConfig().getDouble(Talismans.CONFIG_LOCATION + "chance") / 100);
}
/**
* Register the placeholders for a talisman.
*
* @param talisman The talisman to register placeholders for.
*/
public static void registerPlaceholders(@NotNull final Talisman talisman) {
PlaceholderManager.registerPlaceholder(
new PlaceholderEntry(
talisman.getConfigName() + "_" + "enabled",
player -> String.valueOf(talisman.isEnabled())
)
);
talisman.getConfig().getKeys(true).forEach(string -> {
String key = string.replace("\\.", "_").replace("-", "_");
Object object = talisman.getConfig().get(string);
PlaceholderManager.registerPlaceholder(
new PlaceholderEntry(
talisman.getConfigName() + "_" + key,
player -> StringUtils.internalToString(object)
)
);
});
}
/**
* Get limit for talisman reading.
*

View File

@@ -1,5 +1,6 @@
package com.willfp.talismans.talismans.util;
import com.willfp.talismans.talismans.TalismanLevel;
import org.bukkit.block.Block;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Entity;
@@ -20,12 +21,14 @@ public interface Watcher {
/**
* Called when a player shoots another entity with an arrow.
*
* @param level The level.
* @param attacker The shooter.
* @param victim The victim.
* @param arrow The arrow entity.
* @param event The event that called this watcher.
*/
default void onArrowDamage(@NotNull final Player attacker,
default void onArrowDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Arrow arrow,
@NotNull final EntityDamageByEntityEvent event) {
@@ -35,12 +38,14 @@ public interface Watcher {
/**
* Called when a player damages another entity with a trident throw.
*
* @param level The level.
* @param attacker The shooter.
* @param victim The victim.
* @param trident The trident entity.
* @param event The event that called this watcher.
*/
default void onTridentDamage(@NotNull final Player attacker,
default void onTridentDamage(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final Trident trident,
@NotNull final EntityDamageByEntityEvent event) {
@@ -50,10 +55,12 @@ public interface Watcher {
/**
* Called when a player jumps.
*
* @param level The level.
* @param player The player.
* @param event The event that called this watcher.
*/
default void onJump(@NotNull final Player player,
default void onJump(@NotNull final TalismanLevel level,
@NotNull final Player player,
@NotNull final PlayerMoveEvent event) {
// Empty default as talismans only override required watchers.
}
@@ -61,11 +68,13 @@ public interface Watcher {
/**
* Called when a player another entity with a melee attack.
*
* @param level The level.
* @param attacker The attacker.
* @param victim The victim.
* @param event The event that called this watcher.
*/
default void onMeleeAttack(@NotNull final Player attacker,
default void onMeleeAttack(@NotNull final TalismanLevel level,
@NotNull final Player attacker,
@NotNull final LivingEntity victim,
@NotNull final EntityDamageByEntityEvent event) {
// Empty default as talismans only override required watchers.
@@ -74,11 +83,13 @@ public interface Watcher {
/**
* Called when a player shoots a bow.
*
* @param level The level.
* @param shooter The player that shot the bow.
* @param arrow The arrow that was shot.
* @param event The event that called this watcher.
*/
default void onBowShoot(@NotNull final Player shooter,
default void onBowShoot(@NotNull final TalismanLevel level,
@NotNull final Player shooter,
@NotNull final Arrow arrow,
@NotNull final EntityShootBowEvent event) {
// Empty default as talismans only override required watchers.
@@ -87,10 +98,12 @@ public interface Watcher {
/**
* Called when a player takes fall damage.
*
* @param level The level.
* @param faller The player that took the fall damage.
* @param event The event that called this watcher.
*/
default void onFallDamage(@NotNull final Player faller,
default void onFallDamage(@NotNull final TalismanLevel level,
@NotNull final Player faller,
@NotNull final EntityDamageEvent event) {
// Empty default as talismans only override required watchers.
}
@@ -98,10 +111,12 @@ public interface Watcher {
/**
* Called when an arrow hits a block or entity.
*
* @param level The level.
* @param shooter The player that shot the arrow.
* @param event The event that called this watcher.
*/
default void onArrowHit(@NotNull final Player shooter,
default void onArrowHit(@NotNull final TalismanLevel level,
@NotNull final Player shooter,
@NotNull final ProjectileHitEvent event) {
// Empty default as talismans only override required watchers.
}
@@ -109,10 +124,12 @@ public interface Watcher {
/**
* Called when a trident hits a block or entity.
*
* @param level The level.
* @param shooter The player that threw the trident.
* @param event The event that called this watcher.
*/
default void onTridentHit(@NotNull final Player shooter,
default void onTridentHit(@NotNull final TalismanLevel level,
@NotNull final Player shooter,
@NotNull final ProjectileHitEvent event) {
// Empty default as talismans only override required watchers.
}
@@ -120,11 +137,13 @@ public interface Watcher {
/**
* Called when a player breaks a block.
*
* @param level The level.
* @param player The player.
* @param block The block that was broken.
* @param event The event that called this watcher.
*/
default void onBlockBreak(@NotNull final Player player,
default void onBlockBreak(@NotNull final TalismanLevel level,
@NotNull final Player player,
@NotNull final Block block,
@NotNull final BlockBreakEvent event) {
// Empty default as talismans only override required watchers.
@@ -133,10 +152,12 @@ public interface Watcher {
/**
* Called when a player takes damage.
*
* @param level The level.
* @param victim The player that took damage.
* @param event The event that called this watcher.
*/
default void onDamage(@NotNull final Player victim,
default void onDamage(@NotNull final TalismanLevel level,
@NotNull final Player victim,
@NotNull final EntityDamageEvent event) {
// Empty default as talismans only override required watchers.
}
@@ -144,11 +165,13 @@ public interface Watcher {
/**
* Called when a player takes damage from another entity.
*
* @param level The level.
* @param victim The player that took damage.
* @param attacker The entity that damaged the player.
* @param event The event that called this watcher.
*/
default void onDamageByEntity(@NotNull final Player victim,
default void onDamageByEntity(@NotNull final TalismanLevel level,
@NotNull final Player victim,
@NotNull final Entity attacker,
@NotNull final EntityDamageByEntityEvent event) {
// Empty default as talismans only override required watchers.
@@ -157,11 +180,13 @@ public interface Watcher {
/**
* Called when a player damages a block.
*
* @param level The level.
* @param player The player that damaged the block.
* @param block The damaged block.
* @param event The event that called this watcher.
*/
default void onDamageBlock(@NotNull final Player player,
default void onDamageBlock(@NotNull final TalismanLevel level,
@NotNull final Player player,
@NotNull final Block block,
@NotNull final BlockDamageEvent event) {
// Empty default as talismans only override required watchers.
@@ -170,11 +195,13 @@ public interface Watcher {
/**
* Called when a player throws a trident.
*
* @param level The level.
* @param shooter The player that threw the trident.
* @param trident The trident that was thrown.
* @param event The event that called this watcher.
*/
default void onTridentLaunch(@NotNull final Player shooter,
default void onTridentLaunch(@NotNull final TalismanLevel level,
@NotNull final Player shooter,
@NotNull final Trident trident,
@NotNull final ProjectileLaunchEvent event) {
// Empty default as talismans only override required watchers.
@@ -183,11 +210,13 @@ public interface Watcher {
/**
* Called when a player blocks an attack with a shield.
*
* @param level The level.
* @param blocker The player that blocked the attack.
* @param attacker The attacker.
* @param event The event that called this watcher.
*/
default void onDeflect(@NotNull final Player blocker,
default void onDeflect(@NotNull final TalismanLevel level,
@NotNull final Player blocker,
@NotNull final LivingEntity attacker,
@NotNull final EntityDamageByEntityEvent event) {
// Empty default as talismans only override required watchers.

View File

@@ -93,20 +93,20 @@ public class WatcherTriggers extends PluginDependent implements Listener {
return;
}
TalismanChecks.getTalismansOnPlayer(attacker).forEach(talisman -> {
TalismanChecks.getTalismansOnPlayer(attacker).forEach(talismanLevel -> {
if (event.isCancelled()) {
return;
}
if (!talisman.isEnabled()) {
if (!talismanLevel.getTalisman().isEnabled()) {
return;
}
if (talisman.getDisabledWorlds().contains(attacker.getWorld())) {
if (talismanLevel.getTalisman().getDisabledWorlds().contains(attacker.getWorld())) {
return;
}
talisman.onArrowDamage(attacker, victim, arrow, event);
talismanLevel.getTalisman().onArrowDamage(talismanLevel, attacker, victim, arrow, event);
});
}
@@ -154,20 +154,20 @@ public class WatcherTriggers extends PluginDependent implements Listener {
return;
}
TalismanChecks.getTalismansOnPlayer(attacker).forEach(talisman -> {
TalismanChecks.getTalismansOnPlayer(attacker).forEach(talismanLevel -> {
if (event.isCancelled()) {
return;
}
if (!talisman.isEnabled()) {
if (!talismanLevel.getTalisman().isEnabled()) {
return;
}
if (talisman.getDisabledWorlds().contains(attacker.getWorld())) {
if (talismanLevel.getTalisman().getDisabledWorlds().contains(attacker.getWorld())) {
return;
}
talisman.onTridentDamage(attacker, victim, trident, event);
talismanLevel.getTalisman().onTridentDamage(talismanLevel, attacker, victim, trident, event);
});
}
@@ -193,20 +193,20 @@ public class WatcherTriggers extends PluginDependent implements Listener {
&& PREVIOUS_PLAYERS_ON_GROUND.contains(player.getUniqueId())
&& !player.isOnGround()
&& Float.compare((float) player.getVelocity().getY(), jumpVelocity) == 0) {
TalismanChecks.getTalismansOnPlayer(player).forEach(talisman -> {
TalismanChecks.getTalismansOnPlayer(player).forEach(talismanLevel -> {
if (event.isCancelled()) {
return;
}
if (!talisman.isEnabled()) {
if (!talismanLevel.getTalisman().isEnabled()) {
return;
}
if (talisman.getDisabledWorlds().contains(player.getWorld())) {
if (talismanLevel.getTalisman().getDisabledWorlds().contains(player.getWorld())) {
return;
}
talisman.onJump(player, event);
talismanLevel.getTalisman().onJump(talismanLevel, player, event);
});
}
}
@@ -251,20 +251,20 @@ public class WatcherTriggers extends PluginDependent implements Listener {
return;
}
TalismanChecks.getTalismansOnPlayer(attacker).forEach(talisman -> {
TalismanChecks.getTalismansOnPlayer(attacker).forEach(talismanLevel -> {
if (event.isCancelled()) {
return;
}
if (!talisman.isEnabled()) {
if (!talismanLevel.getTalisman().isEnabled()) {
return;
}
if (talisman.getDisabledWorlds().contains(attacker.getWorld())) {
if (talismanLevel.getTalisman().getDisabledWorlds().contains(attacker.getWorld())) {
return;
}
talisman.onMeleeAttack(attacker, victim, event);
talismanLevel.getTalisman().onMeleeAttack(talismanLevel, attacker, victim, event);
});
}
@@ -290,20 +290,20 @@ public class WatcherTriggers extends PluginDependent implements Listener {
Player shooter = (Player) event.getEntity();
Arrow arrow = (Arrow) event.getProjectile();
TalismanChecks.getTalismansOnPlayer(shooter).forEach(talisman -> {
TalismanChecks.getTalismansOnPlayer(shooter).forEach(talismanLevel -> {
if (event.isCancelled()) {
return;
}
if (!talisman.isEnabled()) {
if (!talismanLevel.getTalisman().isEnabled()) {
return;
}
if (talisman.getDisabledWorlds().contains(shooter.getWorld())) {
if (talismanLevel.getTalisman().getDisabledWorlds().contains(shooter.getWorld())) {
return;
}
talisman.onBowShoot(shooter, arrow, event);
talismanLevel.getTalisman().onBowShoot(talismanLevel, shooter, arrow, event);
});
}
@@ -328,20 +328,20 @@ public class WatcherTriggers extends PluginDependent implements Listener {
Player victim = (Player) event.getEntity();
TalismanChecks.getTalismansOnPlayer(victim).forEach(talisman -> {
TalismanChecks.getTalismansOnPlayer(victim).forEach(talismanLevel -> {
if (event.isCancelled()) {
return;
}
if (!talisman.isEnabled()) {
if (!talismanLevel.getTalisman().isEnabled()) {
return;
}
if (talisman.getDisabledWorlds().contains(victim.getWorld())) {
if (talismanLevel.getTalisman().getDisabledWorlds().contains(victim.getWorld())) {
return;
}
talisman.onFallDamage(victim, event);
talismanLevel.getTalisman().onFallDamage(talismanLevel, victim, event);
});
}
@@ -370,16 +370,16 @@ public class WatcherTriggers extends PluginDependent implements Listener {
Player shooter = (Player) event.getEntity().getShooter();
TalismanChecks.getTalismansOnPlayer(shooter).forEach(talisman -> {
if (!talisman.isEnabled()) {
TalismanChecks.getTalismansOnPlayer(shooter).forEach(talismanLevel -> {
if (!talismanLevel.getTalisman().isEnabled()) {
return;
}
if (talisman.getDisabledWorlds().contains(shooter.getWorld())) {
if (talismanLevel.getTalisman().getDisabledWorlds().contains(shooter.getWorld())) {
return;
}
talisman.onArrowHit(shooter, event);
talismanLevel.getTalisman().onArrowHit(talismanLevel, shooter, event);
});
}
@@ -409,16 +409,16 @@ public class WatcherTriggers extends PluginDependent implements Listener {
Trident trident = (Trident) event.getEntity();
Player shooter = (Player) event.getEntity().getShooter();
TalismanChecks.getTalismansOnPlayer(shooter).forEach(talisman -> {
if (!talisman.isEnabled()) {
TalismanChecks.getTalismansOnPlayer(shooter).forEach(talismanLevel -> {
if (!talismanLevel.getTalisman().isEnabled()) {
return;
}
if (talisman.getDisabledWorlds().contains(shooter.getWorld())) {
if (talismanLevel.getTalisman().getDisabledWorlds().contains(shooter.getWorld())) {
return;
}
talisman.onTridentHit(shooter, event);
talismanLevel.getTalisman().onTridentHit(talismanLevel, shooter, event);
});
}
@@ -444,20 +444,20 @@ public class WatcherTriggers extends PluginDependent implements Listener {
return;
}
TalismanChecks.getTalismansOnPlayer(player).forEach(talisman -> {
TalismanChecks.getTalismansOnPlayer(player).forEach(talismanLevel -> {
if (event.isCancelled()) {
return;
}
if (!talisman.isEnabled()) {
if (!talismanLevel.getTalisman().isEnabled()) {
return;
}
if (talisman.getDisabledWorlds().contains(player.getWorld())) {
if (talismanLevel.getTalisman().getDisabledWorlds().contains(player.getWorld())) {
return;
}
talisman.onBlockBreak(player, block, event);
talismanLevel.getTalisman().onBlockBreak(talismanLevel, player, block, event);
});
}
@@ -478,20 +478,20 @@ public class WatcherTriggers extends PluginDependent implements Listener {
Player victim = (Player) event.getEntity();
TalismanChecks.getTalismansOnPlayer(victim).forEach(talisman -> {
TalismanChecks.getTalismansOnPlayer(victim).forEach(talismanLevel -> {
if (event.isCancelled()) {
return;
}
if (!talisman.isEnabled()) {
if (!talismanLevel.getTalisman().isEnabled()) {
return;
}
if (talisman.getDisabledWorlds().contains(victim.getWorld())) {
if (talismanLevel.getTalisman().getDisabledWorlds().contains(victim.getWorld())) {
return;
}
talisman.onDamage(victim, event);
talismanLevel.getTalisman().onDamage(talismanLevel, victim, event);
});
}
@@ -512,20 +512,20 @@ public class WatcherTriggers extends PluginDependent implements Listener {
Player victim = (Player) event.getEntity();
TalismanChecks.getTalismansOnPlayer(victim).forEach(talisman -> {
TalismanChecks.getTalismansOnPlayer(victim).forEach(talismanLevel -> {
if (event.isCancelled()) {
return;
}
if (!talisman.isEnabled()) {
if (!talismanLevel.getTalisman().isEnabled()) {
return;
}
if (talisman.getDisabledWorlds().contains(victim.getWorld())) {
if (talismanLevel.getTalisman().getDisabledWorlds().contains(victim.getWorld())) {
return;
}
talisman.onDamageByEntity(victim, event.getDamager(), event);
talismanLevel.getTalisman().onDamageByEntity(talismanLevel, victim, event.getDamager(), event);
});
}
@@ -547,20 +547,20 @@ public class WatcherTriggers extends PluginDependent implements Listener {
return;
}
TalismanChecks.getTalismansOnPlayer(player).forEach(talisman -> {
TalismanChecks.getTalismansOnPlayer(player).forEach(talismanLevel -> {
if (event.isCancelled()) {
return;
}
if (!talisman.isEnabled()) {
if (!talismanLevel.getTalisman().isEnabled()) {
return;
}
if (talisman.getDisabledWorlds().contains(player.getWorld())) {
if (talismanLevel.getTalisman().getDisabledWorlds().contains(player.getWorld())) {
return;
}
talisman.onDamageBlock(player, block, event);
talismanLevel.getTalisman().onDamageBlock(talismanLevel, player, block, event);
});
}
@@ -586,20 +586,20 @@ public class WatcherTriggers extends PluginDependent implements Listener {
Trident trident = (Trident) event.getEntity();
Player shooter = (Player) trident.getShooter();
TalismanChecks.getTalismansOnPlayer(shooter).forEach(talisman -> {
TalismanChecks.getTalismansOnPlayer(shooter).forEach(talismanLevel -> {
if (event.isCancelled()) {
return;
}
if (!talisman.isEnabled()) {
if (!talismanLevel.getTalisman().isEnabled()) {
return;
}
if (talisman.getDisabledWorlds().contains(shooter.getWorld())) {
if (talismanLevel.getTalisman().getDisabledWorlds().contains(shooter.getWorld())) {
return;
}
talisman.onTridentLaunch(shooter, trident, event);
talismanLevel.getTalisman().onTridentLaunch(talismanLevel, shooter, trident, event);
});
}
@@ -634,20 +634,20 @@ public class WatcherTriggers extends PluginDependent implements Listener {
return;
}
TalismanChecks.getTalismansOnPlayer(blocker).forEach(talisman -> {
TalismanChecks.getTalismansOnPlayer(blocker).forEach(talismanLevel -> {
if (event.isCancelled()) {
return;
}
if (!talisman.isEnabled()) {
if (!talismanLevel.getTalisman().isEnabled()) {
return;
}
if (talisman.getDisabledWorlds().contains(blocker.getWorld())) {
if (talismanLevel.getTalisman().getDisabledWorlds().contains(blocker.getWorld())) {
return;
}
talisman.onDeflect(blocker, attacker, event);
talismanLevel.getTalisman().onDeflect(talismanLevel, blocker, attacker, event);
});
}
}

View File

@@ -7,14 +7,6 @@ description:
# How many characters to have on each line of description.
wrap: 20
strengths:
talisman:
color: "&e"
ring:
color: "&c"
relic:
color: "&d"
crafting:
discover: true # If players should automatically have recipes added to their crafting table.

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: []
levels:
1:
name: "Alchemy Talisman I"
description: 5% chance double the strength of applied potion effects.
obtaining:
craftable: true
recipe:
- nether_wart
- nether_wart
- nether_wart
- nether_wart
- ender_eye
- nether_wart
- nether_wart
- nether_wart
- nether_wart
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTExYTNjZWM3YWFmOTA0MjEyY2NmOTNiYjY3YTNjYWYzZDY0OTc4M2JhOTBiOGI2MGJiNjNjNzY4N2ViMzlmIn19fQ==
config:
chance: 5

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Archery Talisman I"
description: Deal 10% more damage with bows.
obtaining:
craftable: true
recipe:
- bow
- crossbow
- bow
- crossbow
- ender_eye
- crossbow
- bow
- crossbow
- bow
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDBmOGRmYTVlZmM3NTYzMGNlMGRmNDBhNDliOGY1OWJjMjIyMTRkZTk3ZTNmYjQ0YjNjNTZlOGE5YzhhNTZiNiJ9fX0=
config:
percent-more-damage: 10

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Attack Speed Talisman I"
description: Attack 5% faster.
obtaining:
craftable: true
recipe:
- sugar
- diamond_sword
- sugar
- diamond_sword
- ender_eye
- diamond_sword
- sugar
- diamond_sword
- sugar
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTVmZGRlYzM2NjU1ZDNiMzcxYzc5ZDYxMTMzNTQ4Nzc1NzcwODljMWZjYjFiM2Q4ZTAwYWYzMjYxMmYyNmYyOCJ9fX0=
config:
percentage-bonus: 5

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Boss Talisman I"
description: Deal 10% more damage to bosses.
obtaining:
craftable: true
recipe:
- bell
- wither_skeleton_skull
- bell
- wither_skeleton_skull
- ender_eye
- wither_skeleton_skull
- bell
- wither_skeleton_skull
- bell
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTFjZDZkMmQwM2YxMzVlN2M2YjVkNmNkYWUxYjNhNjg3NDNkYjRlYjc0OWZhZjczNDFlOWZiMzQ3YWEyODNiIn19fQ==
config:
percent-more-damage: 10

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Creeper Talisman I"
description: Deal 10% more damage to creepers.
obtaining:
craftable: true
recipe:
- gunpowder
- gunpowder
- gunpowder
- gunpowder
- ender_eye
- gunpowder
- gunpowder
- gunpowder
- gunpowder
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjQyNTQ4MzhjMzNlYTIyN2ZmY2EyMjNkZGRhYWJmZTBiMDIxNWY3MGRhNjQ5ZTk0NDQ3N2Y0NDM3MGNhNjk1MiJ9fX0=
config:
percent-more-damage: 10

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "End Talisman I"
description: Deal 10% more damage in the end.
obtaining:
craftable: true
recipe:
- shulker_shell
- shulker_shell
- shulker_shell
- shulker_shell
- ender_eye
- shulker_shell
- shulker_shell
- shulker_shell
- shulker_shell
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzZjYWM1OWIyYWFlNDg5YWEwNjg3YjVkODAyYjI1NTVlYjE0YTQwYmQ2MmIyMWViMTE2ZmE1NjljZGI3NTYifX19
config:
percent-more-damage: 10

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Experience Talisman I"
description: Gain 10% more experience.
obtaining:
craftable: true
recipe:
- diamond_block
- diamond_block
- diamond_block
- diamond_block
- ender_eye
- diamond_block
- diamond_block
- diamond_block
- diamond_block
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzA1NGMyOWM3ODA5MDQ3MWMxZWEwNThiZDY0MTg5NzM5MWM5ZTQ2OTRhYTlkMTQwYWZiYmE4ZDBjYzQzNjM3In19fQ==
config:
percentage-bonus: 10

View File

@@ -0,0 +1,30 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Extraction Talisman I"
description: 2% chance to get xp randomly while mining.
obtaining:
craftable: true
recipe:
- emerald_block
- emerald_block
- emerald_block
- emerald_block
- ender_eye
- emerald_block
- emerald_block
- emerald_block
- emerald_block
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjU2NjM0YjU1NmNhZjUzODJkZTY1MDM4YTEwZTRkNzljN2MxODY5NTA0ODU5OWRmNzRmOWM2N2MxZTFlODczNiJ9fX0=
config:
chance: 2
xp-amount: 2

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Feather Talisman I"
description: Take 10% less fall damage.
obtaining:
craftable: true
recipe:
- feather
- feather
- feather
- feather
- ender_eye
- feather
- feather
- feather
- feather
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODY4NmQ5NmFkOGU1OGE4NmE1YTI4MzI2Yzk5ZmRlOWQ0OTgxZTQ2YzA5ZWFlNTFlN2E5ODYxOTBjZDM2YjBmIn19fQ==
config:
multiplier: 0.9

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Flame Talisman I"
description: Take 10% less fire damage.
obtaining:
craftable: true
recipe:
- blaze_rod
- blaze_rod
- blaze_rod
- blaze_rod
- ender_eye
- blaze_rod
- blaze_rod
- blaze_rod
- blaze_rod
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzBhNDRkNTFlY2M3OWY2OTRjZmQ2MDIyOGM4ODQyODg0OGNhNjE4ZTM2YTY1OWE0MTZlOTI0NmQ4NDFhZWM4In19fQ==
config:
multiplier: 0.9

View File

@@ -0,0 +1,30 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Flux Talisman I"
description: Nearby players deal 5% more melee damage.
obtaining:
craftable: true
recipe:
- redstone_block
- redstone_block
- redstone_block
- redstone_block
- ender_eye
- redstone_block
- redstone_block
- redstone_block
- redstone_block
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2FiNGM0ZDZlZTY5YmMyNGJiYTJiOGZhZjY3YjlmNzA0YTA2YjAxYWE5M2YzZWZhNmFlZjdhOTY5NmM0ZmVlZiJ9fX0=
config:
distance: 5 # How close other players have to be
percent-more-damage: 5

View File

@@ -0,0 +1,33 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Gravity Talisman I"
description: Take less damage the lower down you are, up to 20% less.
obtaining:
craftable: true
recipe:
- stone
- obsidian
- stone
- obsidian
- ender_eye
- obsidian
- stone
- obsidian
- stone
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWIzYTk0ZGZmYTU5MDk5MGRiMDAzZmUyNjg0NDJmNzkyYmVjNjE0ZWNlNWZiMThkOTkwNmU3NmU1NDE4N2ZiMSJ9fX0=
config:
# Formula is ((distance below y = 64)/64) * multiplier + 1 times less
# So if multiplier is 0.2, and you're at y = 1:
# distance below y = 63
# 63/64 * multiplier is roughly 0.2, +1 = 1.2x less
height-multiplier: 0.2

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Healing Talisman I"
description: Heal 10% faster.
obtaining:
craftable: true
recipe:
- glistering_melon_slice
- glistering_melon_slice
- glistering_melon_slice
- glistering_melon_slice
- ender_eye
- glistering_melon_slice
- glistering_melon_slice
- glistering_melon_slice
- glistering_melon_slice
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjUyOGNmNmZhYjhhZTdlZmZiNTFjZDNhYzQyZDJlZTI3NTA0ZTQ0MDAyZmE0ZjYyOWE0NTA5MGZhMTY3YTQ3OCJ9fX0=
config:
multiplier: 0.1

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Immunity Talisman I"
description: Become immune to poison damage.
obtaining:
craftable: true
recipe:
- poisonous_potato
- poisonous_potato
- poisonous_potato
- poisonous_potato
- ender_eye
- poisonous_potato
- poisonous_potato
- poisonous_potato
- poisonous_potato
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGQ5ZThkZTFmZTE3NjA4Mzg2OWUzMDI1MjRjNjUwMTBkN2NmMmUzMWIwNjNlYmI4YmM3NmI3OWQxNDEzMCJ9fX0=
config:
# No config is available for this talisman

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Nether Talisman I"
description: Deal 10% more damage in the nether.
obtaining:
craftable: true
recipe:
- netherrack
- netherrack
- netherrack
- netherrack
- ender_eye
- netherrack
- netherrack
- netherrack
- netherrack
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDUwMDI5MmY0YWZlNTJkMTBmMjk5ZGZiMjYwMzYzMjI4MzA0NTAzMzFlMDAzMDg0YmIyMjAzMzM1MzA2NjRlMSJ9fX0=
config:
percent-more-damage: 10

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Poseidon Talisman I"
description: Deal 10% more damage with tridents.
obtaining:
craftable: true
recipe:
- nautilus_shell
- trident
- nautilus_shell
- trident
- ender_eye
- trident
- nautilus_shell
- trident
- nautilus_shell
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjQ4NGFhNWJlZTg5OGE2ZTg5NjBhM2Y5YTk5NzU5YjFmMzlmOWRjYjMyMTA1MGY3MTRjZDcyYjNkOGE4MDQxIn19fQ==
config:
percent-more-damage: 10

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Raid Talisman I"
description: Deal 10% more damage to illagers.
obtaining:
craftable: true
recipe:
- bell
- bell
- bell
- bell
- ender_eye
- bell
- bell
- bell
- bell
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmRlYWVjMzQ0YWIwOTViNDhjZWFkNzUyN2Y3ZGVlNjFiMDYzZmY3OTFmNzZhOGZhNzY2NDJjODY3NmUyMTczIn19fQ==
config:
percent-more-damage: 10

View File

@@ -1,29 +0,0 @@
name: "Alchemy Relic"
description: 25% chance double the strength of applied potion effects.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:alchemy_ring
- talismans:alchemy_ring
- talismans:alchemy_ring
- talismans:alchemy_ring
- nether_star
- talismans:alchemy_ring
- talismans:alchemy_ring
- talismans:alchemy_ring
- talismans:alchemy_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDMwOTNhNWI3NzY0MmQ0MDkyMTEyZjQ2ZWE2ODE0MGZiNWFlMDRiYmQyMzFjZGExMDY2YTA0YzE4Yjg5Yzk0ZSJ9fX0=
config:
chance: 25

View File

@@ -1,29 +0,0 @@
name: "Archery Relic"
description: Deal 40% more damage with bows.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:archery_ring
- talismans:archery_ring
- talismans:archery_ring
- talismans:archery_ring
- nether_star
- talismans:archery_ring
- talismans:archery_ring
- talismans:archery_ring
- talismans:archery_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmQ3NDk5NWQ2Y2RhMmI4YTI0NzcyYWY5NjllZjA3N2FlM2E4NWUyMzU3YzZmNjExOWI4YTI1MDYwNDFhNDQ4YiJ9fX0=
config:
percent-more-damage: 40

View File

@@ -1,29 +0,0 @@
name: "Attack Speed Relic"
description: Attack 25% faster.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:attack_speed_ring
- talismans:attack_speed_ring
- talismans:attack_speed_ring
- talismans:attack_speed_ring
- nether_star
- talismans:attack_speed_ring
- talismans:attack_speed_ring
- talismans:attack_speed_ring
- talismans:attack_speed_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjI2NjQ5MmZmMDk2MjRmZTdkYzA4MGI0YWE1ZjRiNjA4N2E3NTYzZmEwMjA3ZGY4NzdjZTUwZDI1OWE3NzM3NCJ9fX0=
config:
percentage-bonus: 25

View File

@@ -1,29 +0,0 @@
name: "Boss Relic"
description: Deal 40% more damage to bosses.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:boss_ring
- talismans:boss_ring
- talismans:boss_ring
- talismans:boss_ring
- nether_star
- talismans:boss_ring
- talismans:boss_ring
- talismans:boss_ring
- talismans:boss_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmE0NjUxZDY2Nzc5MjA4ZGExMDdkNmUyZmZkOTZjNjJlMDY3YzJlNzc1MzA3OWFhYTgzYWNlOGZiNDk4OTUifX19
config:
percent-more-damage: 40

View File

@@ -1,29 +0,0 @@
name: "End Relic"
description: Deal 40% more damage in the end.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:end_ring
- talismans:end_ring
- talismans:end_ring
- talismans:end_ring
- nether_star
- talismans:end_ring
- talismans:end_ring
- talismans:end_ring
- talismans:end_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzI3OWRjOTEzNzNiNDI3NzY5MDQzZmFlODg5Y2UyYWRkM2FlMzIxNjY0OTY1MzRhNGQ2YThhOGFhYTJkIn19fQ==
config:
percent-more-damage: 40

View File

@@ -1,29 +0,0 @@
name: "Experience Relic"
description: Gain 40% more experience.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:experience_ring
- talismans:experience_ring
- talismans:experience_ring
- talismans:experience_ring
- nether_star
- talismans:experience_ring
- talismans:experience_ring
- talismans:experience_ring
- talismans:experience_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDQzNGY0MDA0OGI0YTM1ZGExYTA2YmRmMDVlZjJlZDJlMWRhOGRjZTNmOWRlYTg5NGM3ZDFlYjMzODIzMmJkMiJ9fX0=
config:
percentage-bonus: 40

View File

@@ -1,30 +0,0 @@
name: "Extraction Relic"
description: 10% chance to get xp randomly while mining.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:extraction_ring
- talismans:extraction_ring
- talismans:extraction_ring
- talismans:extraction_ring
- nether_star
- talismans:extraction_ring
- talismans:extraction_ring
- talismans:extraction_ring
- talismans:extraction_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmQxZWUyYjYwYTlkODFlYTgyZWIyNTBjNzEyYjNhNmJhYmVkMDNkMjFkNmY4MTg3MDBjNzBlNDM4OGU2YTUxOCJ9fX0=
config:
chance: 10
xp-amount: 2

View File

@@ -1,29 +0,0 @@
name: "Feather Relic"
description: Take 40% less fall damage.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:feather_ring
- talismans:feather_ring
- talismans:feather_ring
- talismans:feather_ring
- nether_star
- talismans:feather_ring
- talismans:feather_ring
- talismans:feather_ring
- talismans:feather_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzVmZjI1MzIwYTg0MjUwOWI3ZWU1YTIzNjczZjY4NTI5MWM0NjcyYjgzNGQ5YjU3N2U4NjJhOTIwOTgzYzEwYiJ9fX0=
config:
multiplier: 0.6

View File

@@ -1,29 +0,0 @@
name: "Flame Relic"
description: Take 40% less fire damage.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:flame_ring
- talismans:flame_ring
- talismans:flame_ring
- talismans:flame_ring
- nether_star
- talismans:flame_ring
- talismans:flame_ring
- talismans:flame_ring
- talismans:flame_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODI4N2IzOTdkYWY5NTE2YTBiZDc2ZjVmMWI3YmY5Nzk1MTVkZjNkNWQ4MzNlMDYzNWZhNjhiMzdlZTA4MjIxMiJ9fX0=
config:
multiplier: 0.6

View File

@@ -1,30 +0,0 @@
name: "Flux Relic"
description: Nearby players deal 25% more melee damage.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:flux_ring
- talismans:flux_ring
- talismans:flux_ring
- talismans:flux_ring
- nether_star
- talismans:flux_ring
- talismans:flux_ring
- talismans:flux_ring
- talismans:flux_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODNlZDRjZTIzOTMzZTY2ZTA0ZGYxNjA3MDY0NGY3NTk5ZWViNTUzMDdmN2VhZmU4ZDkyZjQwZmIzNTIwODYzYyJ9fX0=
config:
distance: 5 # How close other players have to be
percent-more-damage: 25

View File

@@ -1,33 +0,0 @@
name: "Gravity Relic"
description: Take less damage the lower down you are, up to 40% less.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:gravity_ring
- talismans:gravity_ring
- talismans:gravity_ring
- talismans:gravity_ring
- nether_star
- talismans:gravity_ring
- talismans:gravity_ring
- talismans:gravity_ring
- talismans:gravity_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTFhZjRiNzg0ZjExNDY1OTk2ZmNkNDNkMDg4MzgxY2QzODFmZDRjZThhZTRmMjlmMzY4YTI3MWI5OGYwMzgyMiJ9fX0=
config:
# Formula is ((distance below y = 64)/64) * multiplier + 1 times less
# So if multiplier is 2, and you're at y = 1:
# distance below y = 63
# 63/64 * multiplier is roughly 2, +1 = 3x less
height-multiplier: 0.4

View File

@@ -1,29 +0,0 @@
name: "Healing Relic"
description: Heal 40% faster.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:healing_ring
- talismans:healing_ring
- talismans:healing_ring
- talismans:healing_ring
- nether_star
- talismans:healing_ring
- talismans:healing_ring
- talismans:healing_ring
- talismans:healing_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODc5M2VlZjQ4NDkwNzhkZjRjY2Q0OTgwNTRjNzRlMjE3MWM3NzFmMjczMDk0NDE2NGE4ZWU3YjJkNTYzODMyIn19fQ==
config:
multiplier: 0.4

View File

@@ -1,29 +0,0 @@
name: "Knockback Ring"
description: Deal 40% more knockback.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:knockback_ring
- talismans:knockback_ring
- talismans:knockback_ring
- talismans:knockback_ring
- nether_star
- talismans:knockback_ring
- talismans:knockback_ring
- talismans:knockback_ring
- talismans:knockback_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGZjNDFiN2ViNjM1YjE5Zjg0ZGFjYTZkNzQxMDFhYTgxNjgzY2NhYzQyY2E2MDkwZTM2ZDQyNTA5OTI4MzMzNCJ9fX0=
config:
percentage-bonus: 40

View File

@@ -1,29 +0,0 @@
name: "Nether Relic"
description: Deal 40% more damage in the nether.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:nether_ring
- talismans:nether_ring
- talismans:nether_ring
- talismans:nether_ring
- nether_star
- talismans:nether_ring
- talismans:nether_ring
- talismans:nether_ring
- talismans:nether_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTJmOWU5N2Y0YmU1MzM2MzRiZDFiM2UzNjc5ZWRlYmZmZmI5ODQwMTNhMWQ1OTAyZmEzYzM1ZDM0MzViYzEwIn19fQ==
config:
percent-more-damage: 40

View File

@@ -1,29 +0,0 @@
name: "Poseidon Relic"
description: Deal 40% more damage with tridents.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:poseidon_ring
- talismans:poseidon_ring
- talismans:poseidon_ring
- talismans:poseidon_ring
- nether_star
- talismans:poseidon_ring
- talismans:poseidon_ring
- talismans:poseidon_ring
- talismans:poseidon_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTY3OTliZmFhM2EyYzYzYWQ4NWRkMzc4ZTY2ZDU3ZDlhOTdhM2Y4NmQwZDlmNjgzYzQ5ODYzMmY0ZjVjIn19fQ==
config:
percent-more-damage: 40

View File

@@ -1,29 +0,0 @@
name: "Raid Relic"
description: Deal 40% more damage to illagers.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:raid_ring
- talismans:raid_ring
- talismans:raid_ring
- talismans:raid_ring
- nether_star
- talismans:raid_ring
- talismans:raid_ring
- talismans:raid_ring
- talismans:raid_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDUzYTM4N2U1ZDRjMDI1Zjg2ZDU5YmEwODljODcwYTIzYzRjNzk4ODEwODBkZTMzYjk0ZTJlN2I1YWNiYzhlMSJ9fX0=
config:
percent-more-damage: 40

View File

@@ -1,29 +0,0 @@
name: "Resistance Relic"
description: Take 40% less damage.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:resistance_ring
- talismans:resistance_ring
- talismans:resistance_ring
- talismans:resistance_ring
- nether_star
- talismans:resistance_ring
- talismans:resistance_ring
- talismans:resistance_ring
- talismans:resistance_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODk0MDE0YWM1OGE5NmYxZDIzNjEzZGE3YTFlY2RiNmEyN2E0YTRkYjBiMTgwNTJjYTI2MjM1NmQyNGIxZiJ9fX0=
config:
percent-less-damage: 40

View File

@@ -1,29 +0,0 @@
name: "Sharpness Relic"
description: Deal 40% more melee damage.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:sharpness_ring
- talismans:sharpness_ring
- talismans:sharpness_ring
- talismans:sharpness_ring
- nether_star
- talismans:sharpness_ring
- talismans:sharpness_ring
- talismans:sharpness_ring
- talismans:sharpness_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTdlNTVkNzI2MGFhM2IwNGU2ZTAwNjhjMTYyM2E3NWMzNTc3ODI3NzRlZGQ0YWZmMWQwZDYyNWY3OWQ5ZDRkZSJ9fX0=
config:
percent-more-damage: 40

View File

@@ -1,29 +0,0 @@
name: "Speed Relic"
description: Move 25% faster.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:speed_ring
- talismans:speed_ring
- talismans:speed_ring
- talismans:speed_ring
- nether_star
- talismans:speed_ring
- talismans:speed_ring
- talismans:speed_ring
- talismans:speed_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDRiYTRhYjRmOTNiODJlNjE0MTI4OTgwMWMzOWUwYmMyNzBjYmU1MTc5ZGY3NmU4NWI1NDMwNmMyNzhjMTdkYSJ9fX0=
config:
percentage-bonus: 25

View File

@@ -1,29 +0,0 @@
name: "Strength Relic"
description: Deal 40% more damage.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:strength_ring
- talismans:strength_ring
- talismans:strength_ring
- talismans:strength_ring
- nether_star
- talismans:strength_ring
- talismans:strength_ring
- talismans:strength_ring
- talismans:strength_ring
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmRkNTZhZmU5YWZiODk5MDJmZjRlODdkNzZlNmExMzRhNmIyOWI5YWZkYTlmYzNjNzg5MDVmY2M0MGNmZmI0NiJ9fX0=
config:
percent-more-damage: 40

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Resistance Talisman I"
description: Take 10% less damage.
obtaining:
craftable: true
recipe:
- iron_block
- obsidian
- iron_block
- obsidian
- ender_eye
- obsidian
- iron_block
- obsidian
- iron_block
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTcyNjI2NGYzN2NjMGVlNDIyZjhlZGIzMTQxZTYxZTJlZDkzNmE4OTdkOTZkODA4NWRjMzVkYzUzOTllZGNmOSJ9fX0=
config:
percent-less-damage: 10

View File

@@ -1,29 +0,0 @@
name: "Alchemy Ring"
description: 10% chance double the strength of applied potion effects.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:alchemy_talisman
- talismans:alchemy_talisman
- talismans:alchemy_talisman
- talismans:alchemy_talisman
- heart_of_the_sea
- talismans:alchemy_talisman
- talismans:alchemy_talisman
- talismans:alchemy_talisman
- talismans:alchemy_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjZkNzljMDI2ODc0Nzk0MWRmOWEyYTQ1MTAzY2JkNzMxZmRlZGNiYTU4OGY2NDNiNjcwZmQ3N2FhMmJkOTE4YyJ9fX0=
config:
chance: 10

View File

@@ -1,29 +0,0 @@
name: "Archery Ring"
description: Deal 25% more damage with bows.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:archery_talisman
- talismans:archery_talisman
- talismans:archery_talisman
- talismans:archery_talisman
- heart_of_the_sea
- talismans:archery_talisman
- talismans:archery_talisman
- talismans:archery_talisman
- talismans:archery_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzgzODVhNWE0Njk4MjFiOGIzM2U0N2E1YjVjNDJhZWE1OTY2MzQ2NTQ2OTM4OGExYTRkNGU1MjNlNWE4ZGRkMiJ9fX0=
config:
percent-more-damage: 25

View File

@@ -1,29 +0,0 @@
name: "Attack Speed Ring"
description: Attack 10% faster.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:attack_speed_talisman
- talismans:attack_speed_talisman
- talismans:attack_speed_talisman
- talismans:attack_speed_talisman
- heart_of_the_sea
- talismans:attack_speed_talisman
- talismans:attack_speed_talisman
- talismans:attack_speed_talisman
- talismans:attack_speed_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzE1ZjAyZWFjNjAyNmI4ZTg3MTJjYTRkNzgxYjc5MWJiYmI3YjQ3NTVhYmRhMjdmNDYyMTg5YjkwZmVkNjZhMSJ9fX0=
config:
percentage-bonus: 10

View File

@@ -1,29 +0,0 @@
name: "Boss Ring"
description: Deal 25% more damage to bosses.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:boss_talisman
- talismans:boss_talisman
- talismans:boss_talisman
- talismans:boss_talisman
- heart_of_the_sea
- talismans:boss_talisman
- talismans:boss_talisman
- talismans:boss_talisman
- talismans:boss_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzgzYWI0MmYyMmFkZDkzNjZkODkzNjRiYTNhZTIwMTNmYTQ1YTQ1NWNkODdjYTZhYWQ4MmY0MDFhNzcifX19
config:
percent-more-damage: 25

View File

@@ -1,29 +0,0 @@
name: "End Ring"
description: Deal 25% more damage in the end.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:end_talisman
- talismans:end_talisman
- talismans:end_talisman
- talismans:end_talisman
- heart_of_the_sea
- talismans:end_talisman
- talismans:end_talisman
- talismans:end_talisman
- talismans:end_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTZjMGIzNmQ1M2ZmZjY5YTQ5YzdkNmYzOTMyZjJiMGZlOTQ4ZTAzMjIyNmQ1ZTgwNDVlYzU4NDA4YTM2ZTk1MSJ9fX0=
config:
percent-more-damage: 25

View File

@@ -1,29 +0,0 @@
name: "Experience Ring"
description: Gain 25% more experience.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:experience_talisman
- talismans:experience_talisman
- talismans:experience_talisman
- talismans:experience_talisman
- heart_of_the_sea
- talismans:experience_talisman
- talismans:experience_talisman
- talismans:experience_talisman
- talismans:experience_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTNjNzZkMTA3OWM5NWUzYzc5ZGRmOTUxNDJmYzc0YzQ4ZjY1MjA1ZTQ2NWQxMDJiZjc4MjY1Y2E3ZTk3MDZkMiJ9fX0=
config:
percentage-bonus: 25

View File

@@ -1,30 +0,0 @@
name: "Extraction Ring"
description: 5% chance to get xp randomly while mining.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:extraction_talisman
- talismans:extraction_talisman
- talismans:extraction_talisman
- talismans:extraction_talisman
- heart_of_the_sea
- talismans:extraction_talisman
- talismans:extraction_talisman
- talismans:extraction_talisman
- talismans:extraction_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmQxZWUyYjYwYTlkODFlYTgyZWIyNTBjNzEyYjNhNmJhYmVkMDNkMjFkNmY4MTg3MDBjNzBlNDM4OGU2YTUxOCJ9fX0=
config:
chance: 5
xp-amount: 2

View File

@@ -1,29 +0,0 @@
name: "Feather Ring"
description: Take 75% less fall damage.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:feather_talisman
- talismans:feather_talisman
- talismans:feather_talisman
- talismans:feather_talisman
- heart_of_the_sea
- talismans:feather_talisman
- talismans:feather_talisman
- talismans:feather_talisman
- talismans:feather_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYThlYmYzOWIwYjM3MWQxZWYzMTZhNjI2ZDM1NTM3NWY5ZDQ4MzcxOWU5NWY1ZGMzNDc4MTIwZjhmOWMzODcyNiJ9fX0=
config:
multiplier: 0.75

View File

@@ -1,29 +0,0 @@
name: "Flame Ring"
description: Take 25% less fire damage.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:flame_talisman
- talismans:flame_talisman
- talismans:flame_talisman
- talismans:flame_talisman
- heart_of_the_sea
- talismans:flame_talisman
- talismans:flame_talisman
- talismans:flame_talisman
- talismans:flame_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGJjYjFkZGZjOGRhODUyZDNmMjU4ZmNiODg1ZjJjYjVlNGIyNmE3ZWJjZmJkMGIzM2VjMTM3N2EyMzVmM2E0NSJ9fX0=
config:
multiplier: 0.75

View File

@@ -1,30 +0,0 @@
name: "Flux Ring"
description: Nearby players deal 10% more melee damage.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:flux_talisman
- talismans:flux_talisman
- talismans:flux_talisman
- talismans:flux_talisman
- heart_of_the_sea
- talismans:flux_talisman
- talismans:flux_talisman
- talismans:flux_talisman
- talismans:flux_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODJhZGExYzdmY2M4Y2YzNWRlZmViOTQ0YTRmOGZmYTlhOWQyNjA1NjBmYzdmNWY1ODI2ZGU4MDg1NDM1OTY3YyJ9fX0=
config:
distance: 5 # How close other players have to be
percent-more-damage: 10

View File

@@ -1,33 +0,0 @@
name: "Gravity Ring"
description: Take less damage the lower down you are, up to 30% less.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:gravity_talisman
- talismans:gravity_talisman
- talismans:gravity_talisman
- talismans:gravity_talisman
- heart_of_the_sea
- talismans:gravity_talisman
- talismans:gravity_talisman
- talismans:gravity_talisman
- talismans:gravity_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTY0ZjEwZjE1OWM5MjA0ZmM3NzIwMmIzZGFjZGRmMGQwZTNhMjVlY2EyZGVhYjNmOTJhNmEyNTIzMTAxMzc3ZSJ9fX0=
config:
# Formula is ((distance below y = 64)/64) * multiplier + 1 times less
# So if multiplier is 2, and you're at y = 1:
# distance below y = 63
# 63/64 * multiplier is roughly 2, +1 = 3x less
height-multiplier: 0.3

View File

@@ -1,29 +0,0 @@
name: "Healing Ring"
description: Heal 25% faster.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:healing_talisman
- talismans:healing_talisman
- talismans:healing_talisman
- talismans:healing_talisman
- heart_of_the_sea
- talismans:healing_talisman
- talismans:healing_talisman
- talismans:healing_talisman
- talismans:healing_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDY2YTVmN2JjZDNjMWMyMjVhOTM2NmVlZTZkZmFiMWNjNjZhNmJmNzM2M2ZlZDA4NzUxMmU2ZWY0N2ExZCJ9fX0=
config:
multiplier: 0.25

View File

@@ -1,29 +0,0 @@
name: "Knockback Ring"
description: Deal 25% more knockback.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:knockback_talisman
- talismans:knockback_talisman
- talismans:knockback_talisman
- talismans:knockback_talisman
- heart_of_the_sea
- talismans:knockback_talisman
- talismans:knockback_talisman
- talismans:knockback_talisman
- talismans:knockback_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjgxY2M2NGIwNDViMThhM2E0MTljNTk1YWQ2NThmNmNlMmM1OTk5NDk0NzdhZmU0MmE2YjU4N2FhMzE1YmYifX19
config:
percentage-bonus: 25

View File

@@ -1,29 +0,0 @@
name: "Nether Ring"
description: Deal 25% more damage in the nether.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:nether_talisman
- talismans:nether_talisman
- talismans:nether_talisman
- talismans:nether_talisman
- heart_of_the_sea
- talismans:nether_talisman
- talismans:nether_talisman
- talismans:nether_talisman
- talismans:nether_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjE2MTAyYmM0ZjYwOWMyMjQwNDM3MWFlZjZjNjQxYmI5NjQwOWJjNTAwN2RjYTQ0YWM2NjhlZGRlYmFiZTQ0NiJ9fX0=
config:
percent-more-damage: 25

View File

@@ -1,29 +0,0 @@
name: "Poseidon Ring"
description: Deal 25% more damage with tridents.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:poseidon_talisman
- talismans:poseidon_talisman
- talismans:poseidon_talisman
- talismans:poseidon_talisman
- heart_of_the_sea
- talismans:poseidon_talisman
- talismans:poseidon_talisman
- talismans:poseidon_talisman
- talismans:poseidon_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjIyZTNhNTY5ZThkNTgxNDM3YzUwM2UyYWQxZDRiNTkxYmNiODI5MWE3MWVmN2IzNzM4OGVlYTNiMDhlNzIifX19
config:
percent-more-damage: 25

View File

@@ -1,29 +0,0 @@
name: "Raid Ring"
description: Deal 25% more damage to illagers.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:raid_talisman
- talismans:raid_talisman
- talismans:raid_talisman
- talismans:raid_talisman
- heart_of_the_sea
- talismans:raid_talisman
- talismans:raid_talisman
- talismans:raid_talisman
- talismans:raid_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTFkMGU4MTY0ODc1N2I5OGYwZGUyYjcwZDMzODJlZGNmNDI2OThkNDAxODU1ZDg3MjU1MmE2NzFiZWE1ZGFmNiJ9fX0=
config:
percent-more-damage: 25

View File

@@ -1,29 +0,0 @@
name: "Resistance Ring"
description: Take 25% less damage.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:resistance_talisman
- talismans:resistance_talisman
- talismans:resistance_talisman
- talismans:resistance_talisman
- heart_of_the_sea
- talismans:resistance_talisman
- talismans:resistance_talisman
- talismans:resistance_talisman
- talismans:resistance_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjY5ZDBkNDcxMTE1M2EwODljNTU2N2E3NDliMjc4NzljNzY5ZDNiZGNlYTZmZGE5ZDZmNjZlOTNkZDhjNDUxMiJ9fX0=
config:
percent-less-damage: 25

View File

@@ -1,29 +0,0 @@
name: "Sharpness Ring"
description: Deal 25% more melee damage.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:sharpness_talisman
- talismans:sharpness_talisman
- talismans:sharpness_talisman
- talismans:sharpness_talisman
- heart_of_the_sea
- talismans:sharpness_talisman
- talismans:sharpness_talisman
- talismans:sharpness_talisman
- talismans:sharpness_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjg4MWI1ZTkxZjliNGVlMGQ0YzUzMzk2MmJiNjhmYTczY2VkYjc1ZWNkMjY4ZWNiZGQ0NGNhMGY0MDkxNDhjMiJ9fX0=
config:
percent-more-damage: 25

View File

@@ -1,29 +0,0 @@
name: "Speed Ring"
description: Move 10% faster.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:speed_talisman
- talismans:speed_talisman
- talismans:speed_talisman
- talismans:speed_talisman
- heart_of_the_sea
- talismans:speed_talisman
- talismans:speed_talisman
- talismans:speed_talisman
- talismans:speed_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTNjZTc2NjAyZDNmZWM3YzAyNzNkYTYwMDA5MDA3YmU0MTQwYWM5ZmFjMDM0MTQ1MGMwNzU3ZTUzZDc1MTU3NyJ9fX0=
config:
percentage-bonus: 10

View File

@@ -1,29 +0,0 @@
name: "Strength Ring"
description: Deal 25% more damage.
enabled: true
obtaining:
craftable: true
# Recipes are left-right, top-bottom
# The first item is the top left, the second is top middle, and so on. The last is bottom right.
recipe:
- talismans:strength_talisman
- talismans:strength_talisman
- talismans:strength_talisman
- talismans:strength_talisman
- heart_of_the_sea
- talismans:strength_talisman
- talismans:strength_talisman
- talismans:strength_talisman
- talismans:strength_talisman
general-config:
disabled-in-worlds: []
material: player_head
# Texture is base64, https://minecraft-heads.com has a list of skulls. Ignored if material is not player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDkwMzIyMTEyNGUxYTI3NDAyMjc2YzNlMDE3NmJjOWY2MzIzOGQ3ZWE3NzEzZTliNTc5YTg3OGRhY2EyNDgxOSJ9fX0=
config:
percent-more-damage: 25

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Sharpness Talisman I"
description: Deal 10% more melee damage.
obtaining:
craftable: true
recipe:
- diamond_sword
- diamond_sword
- diamond_sword
- diamond_sword
- ender_eye
- diamond_sword
- diamond_sword
- diamond_sword
- diamond_sword
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzNkMTQ1NjFiYmQwNjNmNzA0MjRhOGFmY2MzN2JmZTljNzQ1NjJlYTM2ZjdiZmEzZjIzMjA2ODMwYzY0ZmFmMSJ9fX0=
config:
percent-more-damage: 10

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Skeleton Talisman I"
description: Deal 10% more damage to skeletons.
obtaining:
craftable: true
recipe:
- bone
- bone
- bone
- bone
- ender_eye
- bone
- bone
- bone
- bone
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzAxMjY4ZTljNDkyZGExZjBkODgyNzFjYjQ5MmE0YjMwMjM5NWY1MTVhN2JiZjc3ZjRhMjBiOTVmYzAyZWIyIn19fQ==
config:
percent-more-damage: 10

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Speed Talisman I"
description: Move 5% faster.
obtaining:
craftable: true
recipe:
- sugar
- sugar
- sugar
- sugar
- ender_eye
- sugar
- sugar
- sugar
- sugar
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODYyNGJhY2I1ZjE5ODZlNjQ3N2FiY2U0YWU3ZGNhMTgyMGE1MjYwYjYyMzNiNTViYTFkOWJhOTM2Yzg0YiJ9fX0=
config:
percentage-bonus: 5

View File

@@ -0,0 +1,29 @@
enabled: true
disabled-in-worlds: [ ]
levels:
1:
name: "Spider Talisman I"
description: Deal 10% more damage to spiders.
obtaining:
craftable: true
recipe:
- string
- string
- string
- string
- ender_eye
- string
- string
- string
- string
general-config:
material: player_head
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2Q1NDE1NDFkYWFmZjUwODk2Y2QyNThiZGJkZDRjZjgwYzNiYTgxNjczNTcyNjA3OGJmZTM5MzkyN2U1N2YxIn19fQ==
config:
percent-more-damage: 10

Some files were not shown because too many files have changed in this diff Show More