diff --git a/src/main/java/org/dynmap/bukkit/DynmapPlugin.java b/src/main/java/org/dynmap/bukkit/DynmapPlugin.java index 91267361..70ea7ee7 100644 --- a/src/main/java/org/dynmap/bukkit/DynmapPlugin.java +++ b/src/main/java/org/dynmap/bukkit/DynmapPlugin.java @@ -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 diff --git a/src/main/resources/configuration.txt b/src/main/resources/configuration.txt index c79ebfb4..ca0942dc 100644 --- a/src/main/resources/configuration.txt +++ b/src/main/resources/configuration.txt @@ -218,43 +218,6 @@ skin-url: "http://s3.amazonaws.com/MinecraftSkins/%player%.png" # 'newnorth' is used to rotate maps and rose (requires fullrender of any HDMap map - same as 'newrose' for FlatMap or KzedMap) compass-mode: newnorth -### Mod block support ### -# Enable Industrial Craft 2 block rendering support (core, Advanced Machines, Charging Bench, Power Converters, Compact Solars, Nuclear Control) -#ic2-support: true -#ic2-advancesmachines-support: true -#ic2-chargingbench-support: true -#ic2-powerconverters-support: true -#ic2-compactsolars-support: true -#ic2-nuclearcontrol-support: true -# Enable BuildCraft block rendering support -#buildcraft-support: true -# Enable RedPower2 block rendering support -#redpower2-support: true -# Enable NetherOres block rendering support -#netherores-support: true -# Enable RailCraft block rendering support -#railcraft-support: true -# Enable Kaevator's Superslopes block rendering support -#superslopes-support: true -# Enabled ComputerCraft block rendering support -#computercraft-support: true -# Enabled LC Trees++ block rendering support -#lctrees-support: true -# Enable Forestry block rending support -#forestry-support: true -# Enable IronCheck block rendering support -#ironchest-support: true -# Enable TubeStuff block rendering support -#tubestuff-support: true -# Enable Ender Storage block rendering support -#enderstorage-support: true -# Enable ExtraBiomesXL block rendering support -#extrabiomesxl-support: true -# Enable ExtraBiomesXL Bunyan block rendering support -#extrabiomesxl-bunyan-support: true -# Equivalent Exchange 2 block rendering support -#ee2-support: true - render-triggers: #- playermove #- playerjoin