Added a Placeholder Condition for MMOItem Crafting Stations.

Here's an example of using it `- 'placeholder{placeholder=%ac_Stat_Weight%~>~1}'`

This means "Placholder ac_Stat_Weight is greater than 1" then use you use it with `hide-when-locked: true` to prevent the item from showing, or however you want to use it.

`placeholder{placeholder=<Placeholder>~<Comparator>~<Number>}`

It's simple, but a bit odd. You first declare the placeholder "%ac_Stat_Weight%", then chose the comparator ">" and finally the number to compare it to "1" all split up using the "~".

You can also compare the placeholder with Text/String when using the `equals` comparator

More info on the Wiki https://git.lumine.io/mythiccraft/mmoitems/-/wikis/Recipe-Conditions
This commit is contained in:
Dancull47 2021-04-23 21:44:18 -04:00
parent cdeb16825a
commit dbb0c0de04
2 changed files with 56 additions and 0 deletions

View File

@ -0,0 +1,55 @@
package net.Indyuce.mmoitems.api.crafting.condition;
import io.lumine.mythic.lib.api.MMOLineConfig;
import me.clip.placeholderapi.PlaceholderAPI;
import net.Indyuce.mmoitems.api.player.PlayerData;
public class PlaceholderCondition extends Condition {
private final String value;
private final String placeholder;
private final String comparator;
private final String compareTo;
public PlaceholderCondition(MMOLineConfig config) {
super("placeholder");
config.validate("placeholder");
value = config.getString("placeholder");
String[] array = value.split("~");
placeholder = array[0];
comparator = array[1];
compareTo = array[2];
}
@Override
public boolean isMet(PlayerData data) {
String placeholders = PlaceholderAPI.setPlaceholders(data.getPlayer(), placeholder);
switch (comparator) {
case "<":
return Double.valueOf(placeholders) < Double.valueOf(compareTo);
case "<=":
return Double.valueOf(placeholders) <= Double.valueOf(compareTo);
case ">":
return Double.valueOf(placeholders) > Double.valueOf(compareTo);
case ">=":
return Double.valueOf(placeholders) >= Double.valueOf(compareTo);
case "==":
case "=":
return Double.valueOf(placeholders) == Double.valueOf(compareTo);
case "!=":
return Double.valueOf(placeholders) != Double.valueOf(compareTo);
case "equals":
return placeholders.equals(compareTo);
}
return false;
}
@Override
public String formatDisplay(String string) {
return string.replace("#placeholder#", "" + placeholder);
}
@Override
public void whenCrafting(PlayerData data) {
}
}

View File

@ -40,6 +40,7 @@ public class CraftingManager implements Reloadable {
// conditions
registerCondition("level", LevelCondition::new, new ConditionalDisplay("&a" + AltChar.check + " Requires Level #level#", "&c" + AltChar.cross + " Requires Level #level#"));
registerCondition("permission", PermissionCondition::new, null);
registerCondition("placeholder", PlaceholderCondition::new, null);
registerCondition("mana", ManaCondition::new, new ConditionalDisplay("&a" + AltChar.check + " Requires #mana# Mana", "&c" + AltChar.cross + " Requires #mana# Mana"));
registerCondition("stamina", StaminaCondition::new, new ConditionalDisplay("&a" + AltChar.check + " Requires #stamina# Stamina", "&c" + AltChar.cross + " Requires #stamina# Stamina"));
registerCondition("food", FoodCondition::new, new ConditionalDisplay("&a" + AltChar.check + " Requires #food# Food", "&c" + AltChar.cross + " Requires #food# Food"));