Fixed an issue with default skill 'Ambers' in 1.20.5+

This commit is contained in:
Jules 2024-10-22 14:42:51 +02:00
parent 7cabb2398a
commit c84e52a963

View File

@ -9,8 +9,10 @@ import io.lumine.mythic.lib.skill.SkillMetadata;
import io.lumine.mythic.lib.skill.handler.SkillHandler;
import io.lumine.mythic.lib.skill.result.def.SimpleSkillResult;
import io.lumine.mythic.lib.skill.trigger.TriggerMetadata;
import io.lumine.mythic.lib.skill.trigger.TriggerType;
import io.lumine.mythic.lib.util.EntityLocationType;
import io.lumine.mythic.lib.util.ParabolicProjectile;
import io.lumine.mythic.lib.util.annotation.BackwardsCompatibility;
import io.lumine.mythic.lib.version.VParticle;
import net.Indyuce.mmocore.api.event.PlayerResourceUpdateEvent;
import net.Indyuce.mmocore.api.player.PlayerData;
@ -22,17 +24,25 @@ import org.bukkit.entity.LivingEntity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.scheduler.BukkitRunnable;
import org.jetbrains.annotations.NotNull;
public class Ambers extends SkillHandler<SimpleSkillResult> implements Listener {
@BackwardsCompatibility(version = "1.20.5")
private final boolean legacyParticles = MythicLib.plugin.getVersion().isUnder(1, 20, 5);
public Ambers() {
super(false);
registerModifiers("percent");
}
@NotNull
@Override
public SimpleSkillResult getResult(SkillMetadata meta) {
return new SimpleSkillResult(meta.hasAttackBound() && meta.hasTargetEntity() && meta.getTargetEntityOrNull() instanceof LivingEntity);
return new SimpleSkillResult(meta.hasAttackSource()
&& meta.hasTargetEntity()
&& meta.getTargetEntityOrNull() instanceof LivingEntity);
}
@Override
@ -47,23 +57,23 @@ public class Ambers extends SkillHandler<SimpleSkillResult> implements Listener
@EventHandler
public void spawnAmber(PlayerAttackEvent event) {
MMOPlayerData data = event.getAttacker().getData();
if (!event.getAttack().getDamage().hasType(DamageType.SKILL))
return;
if (!event.getAttack().getDamage().hasType(DamageType.SKILL)) return;
PassiveSkill passive = data.getPassiveSkillMap().getSkill(this);
if (passive == null)
return;
if (passive == null) return;
passive.getTriggeredSkill().cast(new TriggerMetadata(event));
passive.getTriggeredSkill().cast(new TriggerMetadata(event, TriggerType.API));
}
public static class Amber extends BukkitRunnable {
class Amber extends BukkitRunnable {
private final Location loc;
private final MMOPlayerData data;
private final double percent;
private int j;
private static final double RADIUS_SQUARED = 3;
private Amber(MMOPlayerData data, Location source, Location loc, double percent) {
this.loc = loc;
this.data = data;
@ -80,10 +90,9 @@ public class Ambers extends SkillHandler<SimpleSkillResult> implements Listener
return;
}
if (data.getPlayer().getLocation().distanceSquared(loc) < 2) {
if (data.getPlayer().getLocation().add(0, 1, 0).distanceSquared(loc) < RADIUS_SQUARED) {
data.getPlayer().playSound(data.getPlayer().getLocation(), Sound.BLOCK_END_PORTAL_FRAME_FILL, 1, 1);
// data.getSkillData().ambers++;
// Give mana back
PlayerData playerData = PlayerData.get(data);
@ -95,7 +104,11 @@ public class Ambers extends SkillHandler<SimpleSkillResult> implements Listener
}
for (int j = 0; j < 5; j++)
loc.getWorld().spawnParticle(VParticle.ENTITY_EFFECT.get(), loc, 0, 1, 0.647, 0, 1);
if (legacyParticles)
loc.getWorld().spawnParticle(VParticle.ENTITY_EFFECT.get(), loc, 0, 1, 0.647, 0, 1);
else
loc.getWorld().spawnParticle(VParticle.ENTITY_EFFECT.get(), loc, 0, 1, 0.647, 0, 1, Color.ORANGE);
loc.getWorld().spawnParticle(VParticle.REDSTONE.get(), loc, 1, new Particle.DustOptions(Color.ORANGE, 1.3f));
}
}