Added experience talisman

This commit is contained in:
Auxilor
2021-01-01 20:42:01 +00:00
parent 448535c0d2
commit 81087c8389
4 changed files with 75 additions and 0 deletions

View File

@@ -8,6 +8,7 @@ import com.willfp.eco.util.config.updating.annotations.ConfigUpdater;
import com.willfp.talismans.talismans.talismans.ArcheryTalisman;
import com.willfp.talismans.talismans.talismans.CreeperTalisman;
import com.willfp.talismans.talismans.talismans.EndTalisman;
import com.willfp.talismans.talismans.talismans.ExperienceTalisman;
import com.willfp.talismans.talismans.talismans.FeatherTalisman;
import com.willfp.talismans.talismans.talismans.FlameTalisman;
import com.willfp.talismans.talismans.talismans.NetherTalisman;
@@ -45,6 +46,7 @@ public class Talismans {
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();
/**
* Get all registered {@link Talisman}s.

View File

@@ -0,0 +1,34 @@
package com.willfp.talismans.talismans.talismans;
import com.willfp.eco.util.events.naturalexpgainevent.NaturalExpGainEvent;
import com.willfp.talismans.talismans.Talisman;
import com.willfp.talismans.talismans.Talismans;
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() {
super("experience_talisman");
}
@EventHandler
public void onExpChange(@NotNull final NaturalExpGainEvent event) {
Player player = event.getExpChangeEvent().getPlayer();
if (event.getExpChangeEvent().getAmount() < 0) {
return;
}
if (!TalismanChecks.hasTalisman(player, this)) {
return;
}
if (this.getDisabledWorlds().contains(player.getWorld())) {
return;
}
event.getExpChangeEvent().setAmount((int) Math.ceil(event.getExpChangeEvent().getAmount() * (1 + (this.getConfig().getDouble(Talismans.CONFIG_LOCATION + "percentage-bonus") / 100))));
}
}

View File

@@ -94,4 +94,16 @@ public class TalismanChecks {
return found;
}
/**
* 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 boolean hasTalisman(@NotNull final Player player,
@NotNull final Talisman talisman) {
return getTalismansOnPlayer(player).contains(talisman);
}
}

View File

@@ -0,0 +1,27 @@
name: "Experience Talisman"
description: Gain 25% more experience.
enabled: true
obtaining:
# 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:
- rotten_flesh
- rotten_flesh
- rotten_flesh
- rotten_flesh
- iron_block
- rotten_flesh
- rotten_flesh
- rotten_flesh
- rotten_flesh
general-config:
disabled-in-worlds: []
# Texture is base64, https://minecraft-heads.com has a list of skulls.
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmRlYWVjMzQ0YWIwOTViNDhjZWFkNzUyN2Y3ZGVlNjFiMDYzZmY3OTFmNzZhOGZhNzY2NDJjODY3NmUyMTczIn19fQ==
config:
percentage-bonus: 25