Attribute modifiers available in ML

This commit is contained in:
Indyuce 2022-05-24 13:33:37 +02:00
parent 2c0f8094c0
commit 28be26b9c8
3 changed files with 10 additions and 9 deletions

View File

@ -8,6 +8,7 @@ import io.lumine.mythic.utils.plugin.LuminePlugin;
import net.Indyuce.mmocore.api.ConfigFile; import net.Indyuce.mmocore.api.ConfigFile;
import net.Indyuce.mmocore.api.PlayerActionBar; import net.Indyuce.mmocore.api.PlayerActionBar;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.api.player.attribute.AttributeModifier;
import net.Indyuce.mmocore.api.player.profess.resource.PlayerResource; import net.Indyuce.mmocore.api.player.profess.resource.PlayerResource;
import net.Indyuce.mmocore.api.player.stats.StatType; import net.Indyuce.mmocore.api.player.stats.StatType;
import net.Indyuce.mmocore.api.util.debug.DebugMode; import net.Indyuce.mmocore.api.util.debug.DebugMode;
@ -31,7 +32,6 @@ import net.Indyuce.mmocore.listener.event.PlayerPressKeyListener;
import net.Indyuce.mmocore.listener.option.*; import net.Indyuce.mmocore.listener.option.*;
import net.Indyuce.mmocore.listener.profession.FishingListener; import net.Indyuce.mmocore.listener.profession.FishingListener;
import net.Indyuce.mmocore.listener.profession.PlayerCollectStats; import net.Indyuce.mmocore.listener.profession.PlayerCollectStats;
import net.Indyuce.mmocore.loot.chest.LootChest;
import net.Indyuce.mmocore.manager.*; import net.Indyuce.mmocore.manager.*;
import net.Indyuce.mmocore.manager.data.DataProvider; import net.Indyuce.mmocore.manager.data.DataProvider;
import net.Indyuce.mmocore.manager.data.mysql.MySQLDataProvider; import net.Indyuce.mmocore.manager.data.mysql.MySQLDataProvider;
@ -55,7 +55,6 @@ import org.jetbrains.annotations.NotNull;
import java.io.File; import java.io.File;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.Iterator;
import java.util.logging.Level; import java.util.logging.Level;
public class MMOCore extends LuminePlugin { public class MMOCore extends LuminePlugin {
@ -116,8 +115,9 @@ public class MMOCore extends LuminePlugin {
return; return;
} }
// Register MMOCore-specific target restrictions // Register MMOCore-specific objects
MythicLib.plugin.getEntities().registerRestriction(new PartyMemberTargetRestriction()); MythicLib.plugin.getEntities().registerRestriction(new PartyMemberTargetRestriction());
MythicLib.plugin.getModifiers().registerModifierType("attribute", configObject -> new AttributeModifier(configObject));
// Register extra objective, drop items... // Register extra objective, drop items...
if (Bukkit.getPluginManager().getPlugin("WorldGuard") != null) if (Bukkit.getPluginManager().getPlugin("WorldGuard") != null)

View File

@ -12,6 +12,7 @@ import net.Indyuce.mmocore.api.player.PlayerData;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.Objects;
public class AttributeModifier extends PlayerModifier { public class AttributeModifier extends PlayerModifier {
private final String attribute; private final String attribute;
@ -74,9 +75,10 @@ public class AttributeModifier extends PlayerModifier {
public AttributeModifier(ConfigObject object) { public AttributeModifier(ConfigObject object) {
super(object.getString("key"), EquipmentSlot.OTHER, ModifierSource.OTHER); super(object.getString("key"), EquipmentSlot.OTHER, ModifierSource.OTHER);
String str = Objects.requireNonNull(object.getString("value"));
type = str.toCharArray()[str.length() - 1] == '%' ? ModifierType.RELATIVE : ModifierType.FLAT;
value = Double.parseDouble(type == ModifierType.RELATIVE ? str.substring(0, str.length() - 1) : str);
this.attribute = object.getString("attribute"); this.attribute = object.getString("attribute");
this.value = object.getDouble("value");
type = object.getBoolean("multiplicative", false) ? ModifierType.RELATIVE : ModifierType.FLAT;
} }
public String getAttribute() { public String getAttribute() {

View File

@ -7,11 +7,10 @@ import org.jetbrains.annotations.NotNull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
/** /**
* General implementation for professions and classes. * General implementation for professions, classes and attributes.
* <p> * <p>
* An experience object is a type of object that can * An experience object is a type of object that can level up.
* level up. It has an experience curve and table and * It has an experience curve and table and can receive EXP
* can receive EXP
* *
* @author jules * @author jules
*/ */