Added experience talisman
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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))));
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user