added required attribute stats

This commit is contained in:
Indyuce 2019-08-31 15:10:39 +02:00
parent a2de444c3a
commit 7a208ee955
2 changed files with 42 additions and 1 deletions

View File

@ -7,12 +7,16 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.event.PlayerChangeClassEvent;
import net.Indyuce.mmocore.api.event.PlayerLevelUpEvent;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.api.player.attribute.PlayerAttribute;
import net.Indyuce.mmocore.api.player.stats.StatType;
import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.api.player.RPGPlayer;
import net.Indyuce.mmoitems.comp.mmocore.stat.Required_Attribute;
import net.Indyuce.mmoitems.comp.rpg.RPGHandler;
import net.Indyuce.mmoitems.stat.type.DoubleStat;
import net.Indyuce.mmoitems.stat.type.ItemStat;
@ -43,6 +47,13 @@ public class MMOCoreHook implements RPGHandler, Listener {
MMOItems.plugin.getStats().register("STAMINA_REGENERATION", staminaRegen);
MMOItems.plugin.getStats().register("COOLDOWN_REDUCTION", cooldownReduction);
MMOItems.plugin.getStats().register("ADDITIONAL_EXPERIENCE", additionalExperience);
/*
* only works when the server is reloaded. needs /reload when changing
* attributes to refresh MMOItems stats
*/
for (PlayerAttribute attribute : MMOCore.plugin.attributeManager.getAll())
MMOItems.plugin.getStats().register("REQUIRED_" + attribute.getId().toUpperCase().replace("-", "_"), new Required_Attribute(attribute));
}
@Override
@ -79,6 +90,11 @@ public class MMOCoreHook implements RPGHandler, Listener {
net.Indyuce.mmoitems.api.player.PlayerData.get(event.getPlayer()).scheduleDelayedInventoryUpdate();
}
@EventHandler
public void b(PlayerChangeClassEvent event) {
net.Indyuce.mmoitems.api.player.PlayerData.get(event.getPlayer()).scheduleDelayedInventoryUpdate();
}
public class MMOCoreRPGPlayer extends RPGPlayer {
private final PlayerData data;
@ -87,7 +103,7 @@ public class MMOCoreHook implements RPGHandler, Listener {
data = PlayerData.get(playerData.getPlayer());
}
public PlayerData getData() {
return data;
}

View File

@ -0,0 +1,25 @@
package net.Indyuce.mmoitems.comp.mmocore.stat;
import net.Indyuce.mmocore.api.player.attribute.PlayerAttribute;
import net.Indyuce.mmoitems.api.item.NBTItem;
import net.Indyuce.mmoitems.api.player.RPGPlayer;
import net.Indyuce.mmoitems.comp.mmocore.MMOCoreHook.MMOCoreRPGPlayer;
import net.Indyuce.mmoitems.stat.type.Conditional;
import net.Indyuce.mmoitems.stat.type.DoubleStat;
import net.Indyuce.mmoitems.version.VersionMaterial;
public class Required_Attribute extends DoubleStat implements Conditional {
private final PlayerAttribute attribute;
public Required_Attribute(PlayerAttribute attribute) {
super(VersionMaterial.GRAY_DYE.toItem(), attribute.getName() + " Requirement (MMOCore)", new String[] { "Amount of " + attribute.getName() + " points the", "player needs to use the item." }, "required-" + attribute.getId());
this.attribute = attribute;
}
@Override
public boolean canUse(RPGPlayer player, NBTItem item, boolean message) {
MMOCoreRPGPlayer mmocore = (MMOCoreRPGPlayer) player;
return mmocore.getData().getAttributes().getAttribute(attribute) >= item.getStat(this);
}
}