Add support for automatic enabling of mod-specific blocks and textures

This commit is contained in:
Mike Primm 2012-10-15 01:19:18 -05:00
parent c03365d574
commit cbb8cc061e
2 changed files with 25 additions and 37 deletions

View file

@ -2,6 +2,8 @@ package org.dynmap.bukkit;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.InetSocketAddress;
import java.util.HashMap;
import java.util.HashSet;
@ -102,6 +104,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
public PluginManager pm;
private Metrics metrics;
private BukkitEnableCoreCallback enabCoreCB = new BukkitEnableCoreCallback();
private Method ismodloaded;
private class BukkitEnableCoreCallback extends DynmapCore.EnableCoreCallbacks {
@Override
@ -139,6 +142,12 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
public DynmapPlugin() {
plugin = this;
try {
Class<?> c = Class.forName("cpw.mods.fml.common.Loader");
ismodloaded = c.getMethod("isModLoaded", String.class);
} catch (NoSuchMethodException nsmx) {
} catch (ClassNotFoundException e) {
}
}
/**
@ -435,6 +444,22 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
public int getCurrentPlayers() {
return getServer().getOnlinePlayers().length;
}
@Override
public boolean isModLoaded(String name) {
boolean loaded = false;
if(ismodloaded != null) {
try {
Object rslt =ismodloaded.invoke(null, name);
if(rslt instanceof Boolean) {
loaded = ((Boolean)rslt).booleanValue();
}
} catch (IllegalArgumentException iax) {
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
}
}
return loaded;
}
}
/**
* Player access abstraction class