mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-06-17 14:21:33 +00:00
Fixed ItemsAdder integration.
This commit is contained in:
@@ -3,7 +3,6 @@ package com.volmit.iris.core.link;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.NamespacedKey;
|
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
@@ -20,8 +19,8 @@ public abstract class ExternalDataProvider {
|
|||||||
return Bukkit.getPluginManager().getPlugin(pluginId);
|
return Bukkit.getPluginManager().getPlugin(pluginId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isPresent() {
|
public boolean isReady() {
|
||||||
return getPlugin() != null;
|
return getPlugin() != null && getPlugin().isEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void init();
|
public abstract void init();
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ import org.bukkit.block.data.BlockData;
|
|||||||
import org.bukkit.block.data.MultipleFacing;
|
import org.bukkit.block.data.MultipleFacing;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.MissingResourceException;
|
import java.util.MissingResourceException;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@@ -108,8 +107,8 @@ public class OraxenDataProvider extends ExternalDataProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isPresent() {
|
public boolean isReady() {
|
||||||
return super.isPresent() && factories != null;
|
return super.isReady() && factories != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -23,8 +23,10 @@ import com.volmit.iris.core.link.*;
|
|||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.plugin.IrisService;
|
import com.volmit.iris.util.plugin.IrisService;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.bukkit.NamespacedKey;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.server.PluginEnableEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.MissingResourceException;
|
import java.util.MissingResourceException;
|
||||||
@@ -33,31 +35,40 @@ import java.util.Optional;
|
|||||||
@Data
|
@Data
|
||||||
public class ExternalDataSVC implements IrisService {
|
public class ExternalDataSVC implements IrisService {
|
||||||
|
|
||||||
private KList<ExternalDataProvider> providers = new KList<>();
|
private KList<ExternalDataProvider> providers = new KList<>(), activeProviders = new KList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
addProvider(
|
Bukkit.getPluginManager().registerEvents(this, Iris.instance);
|
||||||
// new CustomItemsDataProvider(), //need this to be gradelized before i can add it to the master repo
|
|
||||||
new OraxenDataProvider(),
|
|
||||||
new ItemAdderDataProvider());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
providers.add(new OraxenDataProvider());
|
||||||
public void onDisable() {
|
providers.add(new ItemAdderDataProvider());
|
||||||
}
|
|
||||||
|
|
||||||
public void addProvider(ExternalDataProvider... provider) {
|
for (ExternalDataProvider p : providers) {
|
||||||
for (ExternalDataProvider p : provider) {
|
if (p.isReady()) {
|
||||||
if (p.getPlugin() != null) {
|
activeProviders.add(p);
|
||||||
providers.add(p);
|
|
||||||
p.init();
|
p.init();
|
||||||
|
Iris.info("Enabled ExternalDataProvider for %s.", p.getPluginId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() { }
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPluginEnable(PluginEnableEvent e) {
|
||||||
|
if(activeProviders.stream().noneMatch(p -> p.getPlugin().equals(e.getPlugin()))) {
|
||||||
|
providers.stream().filter(p -> p.isReady() && p.getPlugin().equals(e.getPlugin())).findFirst().ifPresent(edp -> {
|
||||||
|
activeProviders.add(edp);
|
||||||
|
edp.init();
|
||||||
|
Iris.info("Enabled ExternalDataProvider for %s.", edp.getPluginId());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Optional<BlockData> getBlockData(Identifier key) {
|
public Optional<BlockData> getBlockData(Identifier key) {
|
||||||
Optional<ExternalDataProvider> provider = providers.stream().filter(p -> p.isPresent() && p.isValidProvider(key, false)).findFirst();
|
Optional<ExternalDataProvider> provider = activeProviders.stream().filter(p -> p.isValidProvider(key, false)).findFirst();
|
||||||
if (provider.isEmpty())
|
if (provider.isEmpty())
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
try {
|
try {
|
||||||
@@ -69,7 +80,7 @@ public class ExternalDataSVC implements IrisService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Optional<ItemStack> getItemStack(Identifier key) {
|
public Optional<ItemStack> getItemStack(Identifier key) {
|
||||||
Optional<ExternalDataProvider> provider = providers.stream().filter(p -> p.isPresent() && p.isValidProvider(key, true)).findFirst();
|
Optional<ExternalDataProvider> provider = activeProviders.stream().filter(p -> p.isValidProvider(key, true)).findFirst();
|
||||||
if (provider.isEmpty()) {
|
if (provider.isEmpty()) {
|
||||||
Iris.warn("No matching Provider found for modded material \"%s\"!", key);
|
Iris.warn("No matching Provider found for modded material \"%s\"!", key);
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
@@ -84,13 +95,13 @@ public class ExternalDataSVC implements IrisService {
|
|||||||
|
|
||||||
public Identifier[] getAllBlockIdentifiers() {
|
public Identifier[] getAllBlockIdentifiers() {
|
||||||
KList<Identifier> names = new KList<>();
|
KList<Identifier> names = new KList<>();
|
||||||
providers.stream().filter(ExternalDataProvider::isPresent).forEach(p -> names.add(p.getBlockTypes()));
|
activeProviders.forEach(p -> names.add(p.getBlockTypes()));
|
||||||
return names.toArray(new Identifier[0]);
|
return names.toArray(new Identifier[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Identifier[] getAllItemIdentifiers() {
|
public Identifier[] getAllItemIdentifiers() {
|
||||||
KList<Identifier> names = new KList<>();
|
KList<Identifier> names = new KList<>();
|
||||||
providers.stream().filter(ExternalDataProvider::isPresent).forEach(p -> names.add(p.getItemTypes()));
|
activeProviders.forEach(p -> names.add(p.getItemTypes()));
|
||||||
return names.toArray(new Identifier[0]);
|
return names.toArray(new Identifier[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,4 @@ commands:
|
|||||||
iris:
|
iris:
|
||||||
aliases: [ ir, irs ]
|
aliases: [ ir, irs ]
|
||||||
api-version: ${apiversion}
|
api-version: ${apiversion}
|
||||||
softdepend:
|
|
||||||
- ItemsAdder
|
|
||||||
hotload-dependencies: false
|
hotload-dependencies: false
|
||||||
Reference in New Issue
Block a user