mirror of
https://gitlab.com/phoenix-dvpmt/mmoitems.git
synced 2024-12-22 04:37:42 +01:00
Fixed elements
This commit is contained in:
parent
d716fddbd4
commit
13dec22e5f
@ -38,7 +38,6 @@ import net.Indyuce.mmoitems.comp.rpg.McMMOHook;
|
||||
import net.Indyuce.mmoitems.comp.rpg.RPGHandler;
|
||||
import net.Indyuce.mmoitems.gui.PluginInventory;
|
||||
import net.Indyuce.mmoitems.gui.edition.recipe.RecipeBrowserGUI;
|
||||
import net.Indyuce.mmoitems.gui.listener.GuiListener;
|
||||
import net.Indyuce.mmoitems.listener.*;
|
||||
import net.Indyuce.mmoitems.manager.*;
|
||||
import org.apache.commons.lang.Validate;
|
||||
@ -79,6 +78,7 @@ public class MMOItems extends JavaPlugin {
|
||||
private final PlayerInventoryHandler inventory = new PlayerInventoryHandler();
|
||||
private final List<StringInputParser> stringInputParsers = new ArrayList<>();
|
||||
private final List<EnchantPlugin<? extends Enchantment>> enchantPlugins = new ArrayList<>();
|
||||
private final StatManager statManager = new StatManager();
|
||||
|
||||
private DropTableManager dropTableManager;
|
||||
private WorldGenManager worldGenManager;
|
||||
@ -86,7 +86,6 @@ public class MMOItems extends JavaPlugin {
|
||||
private ConfigManager configManager;
|
||||
private BlockManager blockManager;
|
||||
private TierManager tierManager;
|
||||
private StatManager statManager;
|
||||
private SetManager setManager;
|
||||
|
||||
private PlaceholderParser placeholderParser = new DefaultPlaceholderParser();
|
||||
@ -119,11 +118,7 @@ public class MMOItems extends JavaPlugin {
|
||||
saveDefaultConfig();
|
||||
configManager = new ConfigManager();
|
||||
|
||||
/*
|
||||
* Stat manager must be initialized before MMOCore compatibility
|
||||
* initializes so that MMOCore can register its stats
|
||||
*/
|
||||
statManager = new StatManager();
|
||||
statManager.load();
|
||||
typeManager.reload();
|
||||
templateManager.preloadTemplates();
|
||||
|
||||
@ -187,6 +182,7 @@ public class MMOItems extends JavaPlugin {
|
||||
dropTableManager = new DropTableManager();
|
||||
worldGenManager = new WorldGenManager();
|
||||
blockManager = new BlockManager();
|
||||
MMOItems.plugin.getStats().reload(false);
|
||||
|
||||
if (Bukkit.getPluginManager().getPlugin("Vault") != null) vaultSupport = new VaultSupport();
|
||||
|
||||
|
@ -64,6 +64,7 @@ public class ReloadCommandTreeNode extends CommandTreeNode {
|
||||
MMOItems.plugin.getLayouts().reload();
|
||||
MMOItems.plugin.getFormats().reload();
|
||||
MMOItems.plugin.getTemplates().reload();
|
||||
MMOItems.plugin.getStats().reload(true);
|
||||
sender.sendMessage(MMOItems.plugin.getPrefix() + MMOItems.plugin.getName() + " "
|
||||
+ MMOItems.plugin.getDescription().getVersion() + " reloaded.");
|
||||
sender.sendMessage(MMOItems.plugin.getPrefix() + "- " + ChatColor.RED
|
||||
|
@ -1,9 +1,12 @@
|
||||
package net.Indyuce.mmoitems.manager;
|
||||
|
||||
import io.lumine.mythic.lib.MythicLib;
|
||||
import io.lumine.mythic.lib.element.Element;
|
||||
import net.Indyuce.mmoitems.ItemStats;
|
||||
import net.Indyuce.mmoitems.MMOItems;
|
||||
import net.Indyuce.mmoitems.api.Type;
|
||||
import net.Indyuce.mmoitems.stat.type.*;
|
||||
import net.Indyuce.mmoitems.util.ElementStatType;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
@ -27,16 +30,37 @@ public class StatManager {
|
||||
* Load default stats using java reflection, get all public static final
|
||||
* fields in the ItemStat and register them as stat instances
|
||||
*/
|
||||
public StatManager() {
|
||||
public void load() {
|
||||
for (Field field : ItemStats.class.getFields())
|
||||
try {
|
||||
if (Modifier.isStatic(field.getModifiers()) && Modifier.isFinal(field.getModifiers()) && field.get(null) instanceof ItemStat)
|
||||
register((ItemStat) field.get(null));
|
||||
} catch (IllegalArgumentException | IllegalAccessException exception) {
|
||||
MMOItems.plugin.getLogger().log(Level.WARNING, "Couldn't register stat called " + field.getName());
|
||||
MMOItems.plugin.getLogger().log(Level.WARNING, "Couldn't register stat called '" + field.getName() + "': " + exception.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see FictiveNumericStat
|
||||
* @deprecated
|
||||
*/
|
||||
@Deprecated
|
||||
public void reload(boolean cleanFirst) {
|
||||
|
||||
// Clean fictive numeric stats before
|
||||
if (cleanFirst)
|
||||
for (Iterator<DoubleStat> ite = numeric.iterator(); ite.hasNext(); ) {
|
||||
DoubleStat stat = ite.next();
|
||||
if (stat instanceof FictiveNumericStat)
|
||||
ite.remove();
|
||||
}
|
||||
|
||||
// Register elemental stats
|
||||
for (ElementStatType type : ElementStatType.values())
|
||||
for (Element element : MythicLib.plugin.getElements().getAll())
|
||||
numeric.add(new FictiveNumericStat(element, type));
|
||||
}
|
||||
|
||||
public Collection<ItemStat> getAll() {
|
||||
return stats.values();
|
||||
}
|
||||
@ -85,7 +109,7 @@ public class StatManager {
|
||||
|
||||
/**
|
||||
* Registers a stat in MMOItems
|
||||
*
|
||||
*
|
||||
* @param id Useless.
|
||||
* @param stat The stat instance
|
||||
* @deprecated Stat IDs are now stored in the stat instance directly.
|
||||
@ -101,7 +125,7 @@ public class StatManager {
|
||||
* Registers a stat in MMOItems. It must be done right after MMOItems loads
|
||||
* before any manager is initialized because stats are commonly used when
|
||||
* loading configs.
|
||||
*
|
||||
*
|
||||
* @param stat The stat to register
|
||||
*/
|
||||
public void register(ItemStat stat) {
|
||||
|
@ -132,7 +132,7 @@ public class Elements extends ItemStat<RandomElementListData, ElementListData> i
|
||||
// Create Array
|
||||
ArrayList<ItemTag> ret = new ArrayList<>();
|
||||
for (Pair<Element, ElementStatType> pair : data.getKeys())
|
||||
ret.add(new ItemTag("MMOITEMS_" + pair, data.getStat(pair.getKey(), pair.getValue())));
|
||||
ret.add(new ItemTag("MMOITEMS_" + pair.getValue().getConcatenatedTagPath(pair.getKey()), data.getStat(pair.getKey(), pair.getValue())));
|
||||
|
||||
// Thats it
|
||||
return ret;
|
||||
@ -145,7 +145,7 @@ public class Elements extends ItemStat<RandomElementListData, ElementListData> i
|
||||
ArrayList<ItemTag> relevantTags = new ArrayList<>();
|
||||
for (Element element : Element.values())
|
||||
for (ElementStatType statType : ElementStatType.values()) {
|
||||
final String path = "MMOITEMS_" + element.getName() + "_" + statType.name();
|
||||
final String path = "MMOITEMS_" + statType.getConcatenatedTagPath(element);
|
||||
if (mmoitem.getNBT().hasTag(path))
|
||||
relevantTags.add(ItemTag.getTagAtPath(path, mmoitem.getNBT(), SupportedNBTTagValues.DOUBLE));
|
||||
}
|
||||
@ -165,7 +165,6 @@ public class Elements extends ItemStat<RandomElementListData, ElementListData> i
|
||||
|
||||
// Create new
|
||||
ElementListData elements = new ElementListData();
|
||||
boolean success = false;
|
||||
|
||||
// Try to find every existing element
|
||||
for (Element element : Element.values())
|
||||
@ -176,10 +175,7 @@ public class Elements extends ItemStat<RandomElementListData, ElementListData> i
|
||||
elements.setStat(element, statType, (double) tag.getValue());
|
||||
}
|
||||
|
||||
if (success) {
|
||||
return elements;
|
||||
}
|
||||
return null;
|
||||
return elements.isEmpty() ? null : elements;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -69,9 +69,8 @@ public class ShieldPatternStat extends ItemStat<ShieldPatternData, ShieldPattern
|
||||
public void whenApplied(@NotNull ItemStackBuilder item, @NotNull ShieldPatternData data) {
|
||||
BlockStateMeta meta = (BlockStateMeta) item.getMeta();
|
||||
Banner banner = (Banner) meta.getBlockState();
|
||||
ShieldPatternData pattern = (ShieldPatternData) data;
|
||||
banner.setBaseColor(pattern.getBaseColor());
|
||||
banner.setPatterns(pattern.getPatterns());
|
||||
banner.setBaseColor(data.getBaseColor());
|
||||
banner.setPatterns(data.getPatterns());
|
||||
((BlockStateMeta) item.getMeta()).setBlockState(banner);
|
||||
item.getMeta().addItemFlags(ItemFlag.HIDE_POTION_EFFECTS);
|
||||
}
|
||||
|
@ -0,0 +1,71 @@
|
||||
package net.Indyuce.mmoitems.stat.type;
|
||||
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.element.Element;
|
||||
import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder;
|
||||
import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem;
|
||||
import net.Indyuce.mmoitems.api.util.NumericStatFormula;
|
||||
import net.Indyuce.mmoitems.gui.edition.EditionInventory;
|
||||
import net.Indyuce.mmoitems.stat.data.DoubleData;
|
||||
import net.Indyuce.mmoitems.util.ElementStatType;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* Used for elements otherwise MMOItems doesn't
|
||||
* register elemental stats inside of MythicLib
|
||||
* <p>
|
||||
* Workaround that will be removed when adding stat categories
|
||||
* in order to give more clarity to the item editor.
|
||||
*
|
||||
* @deprecated Definitely not a perfect implementation
|
||||
*/
|
||||
@Deprecated
|
||||
public class FictiveNumericStat extends DoubleStat implements InternalStat {
|
||||
public FictiveNumericStat(Element el, ElementStatType type) {
|
||||
super(type.getConcatenatedTagPath(el), Material.BARRIER, "Fictive Stat", new String[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NumericStatFormula whenInitialized(Object object) {
|
||||
throw new RuntimeException("Fictive item stat");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void whenApplied(@NotNull ItemStackBuilder item, @NotNull DoubleData data) {
|
||||
throw new RuntimeException("Fictive item stat");
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public ArrayList<ItemTag> getAppliedNBT(@NotNull DoubleData data) {
|
||||
throw new RuntimeException("Fictive item stat");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void whenClicked(@NotNull EditionInventory inv, @NotNull InventoryClickEvent event) {
|
||||
throw new RuntimeException("Fictive item stat");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void whenLoaded(@NotNull ReadMMOItem mmoitem) {
|
||||
throw new RuntimeException("Fictive item stat");
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public DoubleData getLoadedNBT(@NotNull ArrayList<ItemTag> storedTags) {
|
||||
throw new RuntimeException("Fictive item stat");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void whenDisplayed(List<String> lore, Optional<NumericStatFormula> statData) {
|
||||
throw new RuntimeException("Fictive item stat");
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user