Fixed comp issue with SkillAPI

This commit is contained in:
Jules 2021-07-24 18:34:35 +02:00
parent 755dde5475
commit 46974b3202
4 changed files with 235 additions and 260 deletions

View File

@ -23,113 +23,95 @@ import java.util.Map;
import java.util.stream.Collectors;
public class HeroesHook implements RPGHandler, Listener, DamageHandler {
private final Map<SkillType, DamageType> damages = new HashMap<>();
private final Map<SkillType, DamageType> damages = new HashMap<>();
public HeroesHook() {
MythicLib.plugin.getDamage().registerHandler(this);
public HeroesHook() {
MythicLib.plugin.getDamage().registerHandler(this);
damages.put(SkillType.ABILITY_PROPERTY_PHYSICAL, DamageType.PHYSICAL);
damages.put(SkillType.ABILITY_PROPERTY_MAGICAL, DamageType.MAGIC);
damages.put(SkillType.ABILITY_PROPERTY_PROJECTILE, DamageType.PROJECTILE);
}
damages.put(SkillType.ABILITY_PROPERTY_PHYSICAL, DamageType.PHYSICAL);
damages.put(SkillType.ABILITY_PROPERTY_MAGICAL, DamageType.MAGIC);
damages.put(SkillType.ABILITY_PROPERTY_PROJECTILE, DamageType.PROJECTILE);
}
@Override
public boolean hasDamage(Entity entity) {
return Heroes.getInstance().getDamageManager().isSpellTarget(entity);
}
@Override
public boolean hasDamage(Entity entity) {
return Heroes.getInstance().getDamageManager().isSpellTarget(entity);
}
@Override
public RegisteredAttack getDamage(Entity entity) {
SkillUseInfo info = Heroes.getInstance().getDamageManager().getSpellTargetInfo(entity);
return new RegisteredAttack(new AttackResult(true, 0, info.getSkill().getTypes().stream().filter(damages::containsKey)
.map(damages::get).collect(Collectors.toSet())), info.getCharacter().getEntity());
}
@Override
public RegisteredAttack getDamage(Entity entity) {
SkillUseInfo info = Heroes.getInstance().getDamageManager().getSpellTargetInfo(entity);
return new RegisteredAttack(new AttackResult(true, 0, info.getSkill().getTypes().stream().filter(damages::containsKey)
.map(damages::get).collect(Collectors.toSet())), info.getCharacter().getEntity());
}
@Override
public void refreshStats(PlayerData data) {
Hero hero = ((HeroesPlayer) data.getRPG()).hero;
hero.removeMaxMana("MMOItems");
hero.addMaxMana("MMOItems", (int) data.getStats().getStat(ItemStats.MAX_MANA));
}
@Override
public void refreshStats(PlayerData data) {
Hero hero = ((HeroesPlayer) data.getRPG()).hero;
hero.removeMaxMana("MMOItems");
hero.addMaxMana("MMOItems", (int) data.getStats().getStat(ItemStats.MAX_MANA));
}
@Override
public RPGPlayer getInfo(PlayerData data) {
return new HeroesPlayer(data);
}
@Override
public RPGPlayer getInfo(PlayerData data) {
return new HeroesPlayer(data);
}
/*
* update the player's inventory whenever he levels up since it could change
* its current stat requirements
*/
@EventHandler
public void a(HeroChangeLevelEvent event) {
PlayerData.get(event.getHero().getPlayer()).getInventory().scheduleUpdate();
}
/**
* Update the player's inventory whenever he levels up
* since it could change his current stat requirements.
*/
@EventHandler
public void a(HeroChangeLevelEvent event) {
PlayerData.get(event.getHero().getPlayer()).getInventory().scheduleUpdate();
}
@EventHandler
public void b(ClassChangeEvent event) {
PlayerData.get(event.getHero().getPlayer()).getInventory().scheduleUpdate();
}
/**
* Update the player's inventory whenever he changes class
* since it could change his current stat requirements.
*/
@EventHandler
public void b(ClassChangeEvent event) {
PlayerData.get(event.getHero().getPlayer()).getInventory().scheduleUpdate();
}
// @EventHandler
// public void b(SkillDamageEvent event) {
//
// /*
// * apply the 'Magic Damage' and 'Magic Damage Reduction' item option to
// * Heroes skills
// */
// if (event.getSkill().isType(SkillType.ABILITY_PROPERTY_MAGICAL)) {
// if (event.getDamager().getEntity() instanceof Player)
// event.setDamage(event.getDamage() * (1 + PlayerData.get((Player) event.getDamager().getEntity()).getStats().getStat(ItemStat.MAGIC_DAMAGE) / 100));
// if (event.getEntity() instanceof Player)
// event.setDamage(event.getDamage() * (1 - PlayerData.get((Player) event.getDamager().getEntity()).getStats().getStat(ItemStat.MAGIC_DAMAGE_REDUCTION) / 100));
// }
//
// /*
// * apply 'Physical Damage Reduction' to physical skills
// */
// if (event.getSkill().isType(SkillType.ABILITY_PROPERTY_PHYSICAL))
// if (event.getEntity() instanceof Player)
// event.setDamage(event.getDamage() * (1 - PlayerData.get((Player) event.getDamager().getEntity()).getStats().getStat(ItemStat.PHYSICAL_DAMAGE_REDUCTION) / 100));
// }
public static class HeroesPlayer extends RPGPlayer {
private final Hero hero;
public static class HeroesPlayer extends RPGPlayer {
private final Hero hero;
public HeroesPlayer(PlayerData playerData) {
super(playerData);
public HeroesPlayer(PlayerData playerData) {
super(playerData);
hero = Heroes.getInstance().getCharacterManager().getHero(getPlayer());
}
hero = Heroes.getInstance().getCharacterManager().getHero(getPlayer());
}
@Override
public int getLevel() {
return hero.getHeroLevel();
}
@Override
public int getLevel() {
return hero.getHeroLevel();
}
@Override
public String getClassName() {
return hero.getHeroClass().getName();
}
@Override
public String getClassName() {
return hero.getHeroClass().getName();
}
@Override
public double getMana() {
return hero.getMana();
}
@Override
public double getMana() {
return hero.getMana();
}
@Override
public double getStamina() {
return hero.getStamina();
}
@Override
public double getStamina() {
return hero.getStamina();
}
@Override
public void setMana(double value) {
hero.setMana((int) value);
}
@Override
public void setMana(double value) {
hero.setMana((int) value);
}
@Override
public void setStamina(double value) {
hero.setStamina((int) value);
}
}
@Override
public void setStamina(double value) {
hero.setStamina((int) value);
}
}
}

View File

@ -5,56 +5,53 @@ import net.Indyuce.mmoitems.api.player.PlayerData;
import net.Indyuce.mmoitems.api.player.RPGPlayer;
public class RPGPlayerLevelingHook implements RPGHandler {
@Override
public void refreshStats(PlayerData data) {
}
@Override
public void refreshStats(PlayerData data) {
}
@Override
public RPGPlayer getInfo(PlayerData data) {
return new RPGPlayerLevelingPlayer(data);
}
@Override
public RPGPlayer getInfo(PlayerData data) {
return new RPGPlayerLevelingPlayer(data);
}
/*
* the API is outdated and thus no inventory update is made when a player
* levels up.
*/
/*
* The API is outdated and thus no inventory
* update is made when a player levels up
*/
public static class RPGPlayerLevelingPlayer extends RPGPlayer {
/*
* API not adapted to RPGPlayer
*/
public RPGPlayerLevelingPlayer(PlayerData playerData) {
super(playerData);
}
public static class RPGPlayerLevelingPlayer extends RPGPlayer {
public RPGPlayerLevelingPlayer(PlayerData playerData) {
super(playerData);
}
@Override
public int getLevel() {
return new API().getPlayerLevel(getPlayer());
}
@Override
public int getLevel() {
return new API().getPlayerLevel(getPlayer());
}
@Override
public String getClassName() {
return "";
}
@Override
public String getClassName() {
return "";
}
@Override
public double getMana() {
return new API().getMana(getPlayer());
}
@Override
public double getMana() {
return new API().getMana(getPlayer());
}
@Override
public double getStamina() {
return new API().getPower(getPlayer());
}
@Override
public double getStamina() {
return new API().getPower(getPlayer());
}
@Override
public void setMana(double value) {
new API().setMana(getPlayer(), (int) value);
}
@Override
public void setMana(double value) {
new API().setMana(getPlayer(), (int) value);
}
@Override
public void setStamina(double value) {
new API().setPower(getPlayer(), (int) value);
}
}
@Override
public void setStamina(double value) {
new API().setPower(getPlayer(), (int) value);
}
}
}

View File

@ -12,69 +12,69 @@ import org.bukkit.event.Listener;
public class RacesAndClassesHook implements RPGHandler, Listener {
@Override
public void refreshStats(PlayerData data) {
RaCPlayer info = ((RacePlayer) data.getRPG()).info;
info.getManaManager().removeMaxManaBonus("MMOItems");
info.getManaManager().addMaxManaBonus("MMOItems", data.getStats().getStat(ItemStats.MAX_MANA));
}
@Override
public void refreshStats(PlayerData data) {
RaCPlayer info = ((RacePlayer) data.getRPG()).info;
info.getManaManager().removeMaxManaBonus("MMOItems");
info.getManaManager().addMaxManaBonus("MMOItems", data.getStats().getStat(ItemStats.MAX_MANA));
}
@Override
public RPGPlayer getInfo(PlayerData data) {
return new RacePlayer(data);
}
@Override
public RPGPlayer getInfo(PlayerData data) {
return new RacePlayer(data);
}
/*
* update the player's inventory whenever he levels up since it could change
* its current stat requirements
*/
@EventHandler
public void a(LevelUpEvent event) {
PlayerData.get(event.getPlayer()).getInventory().scheduleUpdate();
}
/**
* Update the player's inventory whenever he levels up
* since it could change its current stat requirements
*/
@EventHandler
public void a(LevelUpEvent event) {
PlayerData.get(event.getPlayer()).getInventory().scheduleUpdate();
}
@EventHandler
public void b(LevelDownEvent event) {
PlayerData.get(event.getPlayer()).getInventory().scheduleUpdate();
}
@EventHandler
public void b(LevelDownEvent event) {
PlayerData.get(event.getPlayer()).getInventory().scheduleUpdate();
}
public static class RacePlayer extends RPGPlayer {
private final RaCPlayer info;
public static class RacePlayer extends RPGPlayer {
private final RaCPlayer info;
public RacePlayer(PlayerData playerData) {
super(playerData);
public RacePlayer(PlayerData playerData) {
super(playerData);
info = RaCPlayerManager.get().getPlayer(playerData.getUniqueId());
}
info = RaCPlayerManager.get().getPlayer(playerData.getUniqueId());
}
@Override
public int getLevel() {
return info.getCurrentLevel();
}
@Override
public int getLevel() {
return info.getCurrentLevel();
}
@Override
public String getClassName() {
return info.getclass().getDisplayName();
}
@Override
public String getClassName() {
return info.getclass().getDisplayName();
}
@Override
public double getMana() {
return info.getCurrentMana();
}
@Override
public double getMana() {
return info.getCurrentMana();
}
@Override
public double getStamina() {
return info.getPlayer().getFoodLevel();
}
@Override
public double getStamina() {
return info.getPlayer().getFoodLevel();
}
@Override
public void setMana(double value) {
info.getManaManager().fillMana(value - info.getManaManager().getCurrentMana());
}
@Override
public void setMana(double value) {
info.getManaManager().fillMana(value - info.getManaManager().getCurrentMana());
}
@Override
public void setStamina(double value) {
info.getPlayer().setFoodLevel((int) value);
}
}
@Override
public void setStamina(double value) {
info.getPlayer().setFoodLevel((int) value);
}
}
}

View File

@ -4,15 +4,13 @@ import com.sucy.skill.SkillAPI;
import com.sucy.skill.api.event.PlayerLevelUpEvent;
import com.sucy.skill.api.event.SkillDamageEvent;
import com.sucy.skill.api.player.PlayerData;
import net.Indyuce.mmoitems.ItemStats;
import net.Indyuce.mmoitems.api.player.RPGPlayer;
import io.lumine.mythic.lib.MythicLib;
import io.lumine.mythic.lib.api.AttackResult;
import io.lumine.mythic.lib.api.DamageHandler;
import io.lumine.mythic.lib.api.DamageType;
import io.lumine.mythic.lib.api.RegisteredAttack;
import net.Indyuce.mmoitems.api.player.RPGPlayer;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@ -22,90 +20,88 @@ import java.util.HashMap;
import java.util.Map;
public class SkillAPIHook implements RPGHandler, Listener, DamageHandler {
private final Map<Integer, RegisteredAttack> damageInfo = new HashMap<>();
private final Map<Integer, RegisteredAttack> damageInfo = new HashMap<>();
public SkillAPIHook() {
MythicLib.plugin.getDamage().registerHandler(this);
}
public SkillAPIHook() {
MythicLib.plugin.getDamage().registerHandler(this);
}
@Override
public RPGPlayer getInfo(net.Indyuce.mmoitems.api.player.PlayerData data) {
return new SkillAPIPlayer(data);
}
@Override
public RPGPlayer getInfo(net.Indyuce.mmoitems.api.player.PlayerData data) {
return new SkillAPIPlayer(data);
}
@Override
public RegisteredAttack getDamage(Entity entity) {
return damageInfo.get(entity.getEntityId());
}
@Override
public RegisteredAttack getDamage(Entity entity) {
return damageInfo.get(entity.getEntityId());
}
@Override
public boolean hasDamage(Entity entity) {
return damageInfo.containsKey(entity.getEntityId());
}
@Override
public boolean hasDamage(Entity entity) {
return damageInfo.containsKey(entity.getEntityId());
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void a(SkillDamageEvent event) {
damageInfo.put(event.getTarget().getEntityId(), new RegisteredAttack(new AttackResult(event.getDamage(), DamageType.SKILL), event.getDamager()));
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void a(SkillDamageEvent event) {
damageInfo.put(event.getTarget().getEntityId(), new RegisteredAttack(new AttackResult(event.getDamage(), DamageType.SKILL), event.getDamager()));
}
if (event.getDamager() instanceof Player)
event.setDamage(event.getDamage() * (1 + net.Indyuce.mmoitems.api.player.PlayerData.get((Player) event.getDamager()).getStats().getStat(ItemStats.MAGIC_DAMAGE) / 100));
@EventHandler(priority = EventPriority.MONITOR)
public void c(EntityDamageByEntityEvent event) {
damageInfo.remove(event.getEntity().getEntityId());
}
if (event.getTarget() instanceof Player)
event.setDamage(event.getDamage() * (1 - net.Indyuce.mmoitems.api.player.PlayerData.get((Player) event.getTarget()).getStats().getStat(ItemStats.MAGIC_DAMAGE_REDUCTION) / 100));
}
@EventHandler
public void b(PlayerLevelUpEvent event) {
net.Indyuce.mmoitems.api.player.PlayerData.get(event.getPlayerData().getPlayer()).getInventory().scheduleUpdate();
}
@EventHandler(priority = EventPriority.MONITOR)
public void c(EntityDamageByEntityEvent event) {
damageInfo.remove(event.getEntity().getEntityId());
}
@Override
public void refreshStats(net.Indyuce.mmoitems.api.player.PlayerData data) {
}
@EventHandler
public void b(PlayerLevelUpEvent event) {
net.Indyuce.mmoitems.api.player.PlayerData.get(event.getPlayerData().getPlayer()).getInventory().scheduleUpdate();
}
public static class SkillAPIPlayer extends RPGPlayer {
/*private final PlayerData rpgdata;*/
@Override
public void refreshStats(net.Indyuce.mmoitems.api.player.PlayerData data) {
}
public SkillAPIPlayer(net.Indyuce.mmoitems.api.player.PlayerData playerData) {
super(playerData);
public static class SkillAPIPlayer extends RPGPlayer {
private final PlayerData rpgdata;
/*rpgdata = SkillAPI.getPlayerData(playerData.getPlayer());*/
}
public SkillAPIPlayer(net.Indyuce.mmoitems.api.player.PlayerData playerData) {
super(playerData);
@Override
public int getLevel() {
PlayerData rpgdata = SkillAPI.getPlayerData(getPlayer());
return rpgdata.hasClass() ? rpgdata.getMainClass().getLevel() : 0;
}
rpgdata = SkillAPI.getPlayerData(playerData.getPlayer());
}
@Override
public String getClassName() {
PlayerData rpgdata = SkillAPI.getPlayerData(getPlayer());
return rpgdata.hasClass() ? rpgdata.getMainClass().getData().getName() : "";
}
@Override
public int getLevel() {
return rpgdata.hasClass() ? rpgdata.getMainClass().getLevel() : 0;
}
@Override
public double getMana() {
PlayerData rpgdata = SkillAPI.getPlayerData(getPlayer());
return rpgdata.hasClass() ? rpgdata.getMana() : 0;
}
@Override
public String getClassName() {
return rpgdata.hasClass() ? rpgdata.getMainClass().getData().getName() : "";
}
@Override
public double getStamina() {
return getPlayer().getFoodLevel();
}
@Override
public double getMana() {
return rpgdata.hasClass() ? rpgdata.getMana() : 0;
}
@Override
public void setMana(double value) {
PlayerData rpgdata = SkillAPI.getPlayerData(getPlayer());
if (rpgdata.hasClass())
rpgdata.setMana(value);
}
@Override
public double getStamina() {
return getPlayer().getFoodLevel();
}
@Override
public void setMana(double value) {
if (rpgdata.hasClass())
rpgdata.setMana(value);
}
@Override
public void setStamina(double value) {
getPlayer().setFoodLevel((int) value);
}
}
@Override
public void setStamina(double value) {
getPlayer().setFoodLevel((int) value);
}
}
}