Compare commits

..
5 Commits
3 changed files with 76 additions and 16 deletions

No files matched your search

@@ -1,6 +1,8 @@
package mcp.mobius.waila.handlers;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ConfigHandler;
@@ -19,6 +21,20 @@ import codechicken.nei.api.ItemInfo.Layout;
import cpw.mods.fml.common.network.PacketDispatcher;
public class HUDHandlerExternal implements IHighlightHandler {
private static ArrayList<String> errs = new ArrayList<String>();
private List<String> handleErr(Throwable e, String className, List<String> currenttip){
if (!errs.contains(className)){
errs.add(className);
mod_Waila.log.log(Level.WARNING, String.format("Catched unhandled exception : [%s] %s",className,e));
}
if (currenttip != null)
currenttip.add("<ERROR>");
return currenttip;
}
@Override
public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop) {
DataAccessor accessor = DataAccessor.instance;
@@ -27,14 +43,22 @@ public class HUDHandlerExternal implements IHighlightHandler {
int blockID = accessor.getBlockID();
if (IWailaBlock.class.isInstance(block)){
return ((IWailaBlock)block).getWailaStack(accessor, ConfigHandler.instance());
try{
return ((IWailaBlock)block).getWailaStack(accessor, ConfigHandler.instance());
}catch (Throwable e){
handleErr(e, block.getClass().toString(), null);
}
}
if(ExternalModulesHandler.instance().hasStackProviders(blockID)){
for (IWailaDataProvider dataProvider : ExternalModulesHandler.instance().getStackProviders(blockID)){
ItemStack retval = dataProvider.getWailaStack(accessor, ConfigHandler.instance());
if (retval != null)
return retval;
try{
ItemStack retval = dataProvider.getWailaStack(accessor, ConfigHandler.instance());
if (retval != null)
return retval;
}catch (Throwable e){
handleErr(e, dataProvider.getClass().toString(), null);
}
}
}
return null;
@@ -55,39 +79,71 @@ public class HUDHandlerExternal implements IHighlightHandler {
if (IWailaBlock.class.isInstance(block)){
TileEntity entity = world.getBlockTileEntity(mop.blockX, mop.blockY, mop.blockZ);
if (layout == Layout.HEADER)
return ((IWailaBlock)block).getWailaHead(itemStack, currenttip, accessor, ConfigHandler.instance());
try{
return ((IWailaBlock)block).getWailaHead(itemStack, currenttip, accessor, ConfigHandler.instance());
} catch (Throwable e){
return handleErr(e, block.getClass().toString(), currenttip);
}
else if (layout == Layout.BODY)
return ((IWailaBlock)block).getWailaBody(itemStack, currenttip, accessor, ConfigHandler.instance());
try{
return ((IWailaBlock)block).getWailaBody(itemStack, currenttip, accessor, ConfigHandler.instance());
} catch (Throwable e){
return handleErr(e, block.getClass().toString(), currenttip);
}
}
if (layout == Layout.HEADER && ExternalModulesHandler.instance().hasHeadProviders(blockID)){
for (IWailaDataProvider dataProvider : ExternalModulesHandler.instance().getHeadProviders(blockID))
currenttip = dataProvider.getWailaHead(itemStack, currenttip, accessor, ConfigHandler.instance());
try{
currenttip = dataProvider.getWailaHead(itemStack, currenttip, accessor, ConfigHandler.instance());
} catch (Throwable e){
currenttip = handleErr(e, dataProvider.getClass().toString(), currenttip);
}
}
if (layout == Layout.BODY && ExternalModulesHandler.instance().hasBodyProviders(blockID)){
for (IWailaDataProvider dataProvider : ExternalModulesHandler.instance().getBodyProviders(blockID))
currenttip = dataProvider.getWailaBody(itemStack, currenttip, accessor, ConfigHandler.instance());
try{
currenttip = dataProvider.getWailaBody(itemStack, currenttip, accessor, ConfigHandler.instance());
} catch (Throwable e){
currenttip = handleErr(e, dataProvider.getClass().toString(), currenttip);
}
}
if (layout == Layout.HEADER && ExternalModulesHandler.instance().hasHeadProviders(block)){
for (IWailaDataProvider dataProvider : ExternalModulesHandler.instance().getHeadProviders(block))
currenttip = dataProvider.getWailaHead(itemStack, currenttip, accessor, ConfigHandler.instance());
try{
currenttip = dataProvider.getWailaHead(itemStack, currenttip, accessor, ConfigHandler.instance());
} catch (Throwable e){
currenttip = handleErr(e, dataProvider.getClass().toString(), currenttip);
}
}
if (layout == Layout.BODY && ExternalModulesHandler.instance().hasBodyProviders(block)){
for (IWailaDataProvider dataProvider : ExternalModulesHandler.instance().getBodyProviders(block))
currenttip = dataProvider.getWailaBody(itemStack, currenttip, accessor, ConfigHandler.instance());
try{
currenttip = dataProvider.getWailaBody(itemStack, currenttip, accessor, ConfigHandler.instance());
} catch (Throwable e){
currenttip = handleErr(e, dataProvider.getClass().toString(), currenttip);
}
}
if (layout == Layout.HEADER && ExternalModulesHandler.instance().hasHeadProviders(accessor.getTileEntity())){
for (IWailaDataProvider dataProvider : ExternalModulesHandler.instance().getHeadProviders(accessor.getTileEntity()))
currenttip = dataProvider.getWailaHead(itemStack, currenttip, accessor, ConfigHandler.instance());
try{
currenttip = dataProvider.getWailaHead(itemStack, currenttip, accessor, ConfigHandler.instance());
} catch (Throwable e){
currenttip = handleErr(e, dataProvider.getClass().toString(), currenttip);
}
}
if (layout == Layout.BODY && ExternalModulesHandler.instance().hasBodyProviders(accessor.getTileEntity())){
for (IWailaDataProvider dataProvider : ExternalModulesHandler.instance().getBodyProviders(accessor.getTileEntity()))
currenttip = dataProvider.getWailaBody(itemStack, currenttip, accessor, ConfigHandler.instance());
try{
currenttip = dataProvider.getWailaBody(itemStack, currenttip, accessor, ConfigHandler.instance());
} catch (Throwable e){
currenttip = handleErr(e, dataProvider.getClass().toString(), currenttip);
}
}
return currenttip;
@@ -26,8 +26,12 @@ public class HUDHandlerWaila implements IHighlightHandler {
if (modName != null && !modName.equals(""))
currenttip.add("\u00a79\u00a7o" + modName);
} else if (layout == Layout.HEADER && ConfigHandler.instance().getConfig("waila.showmetadata", false)){
String name = currenttip.get(0);
currenttip.set(0, name + String.format(" %s:%s", world.getBlockId(mop.blockX, mop.blockY, mop.blockZ), world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ)));
if (currenttip.size() == 0)
currenttip.add("< Unnamed >");
else{
String name = currenttip.get(0);
currenttip.set(0, name + String.format(" %s:%s", world.getBlockId(mop.blockX, mop.blockY, mop.blockZ), world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ)));
}
}
return currenttip;
};
+2 -2
View File
@@ -32,7 +32,7 @@ import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.registry.GameData;
import cpw.mods.fml.common.registry.ItemData;
@Mod(modid="Waila", name="Waila", version="1.3.1")
@Mod(modid="Waila", name="Waila", version="1.3.3")
@NetworkMod(channels = {"Waila"},clientSideRequired=false, serverSideRequired=false, connectionHandler = WailaConnectionHandler.class, packetHandler = WailaPacketHandler.class)
public class mod_Waila {
@@ -40,7 +40,7 @@ public class mod_Waila {
@Instance("Waila")
public static mod_Waila instance;
@SidedProxy(clientSide="mcp.mobius.waila.ProxyClient", serverSide="mcp.mobius.waila.ProxyServer")
@SidedProxy(clientSide="mcp.mobius.waila.ProxyClient", serverSide="mcp.mobius.waila.server.ProxyServer")
public static ProxyServer proxy;
public static Logger log = Logger.getLogger("Waila");