mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-06 00:49:09 +01:00
Fix 559 Allow mod wrenches to activate compass function
This commit is contained in:
parent
c6aa2201ef
commit
e38437dfa8
3 changed files with 67 additions and 4 deletions
|
@ -57,6 +57,7 @@ import net.minecraftforge.fml.common.Mod.EventHandler;
|
|||
import net.minecraftforge.fml.common.Mod.Instance;
|
||||
import net.minecraftforge.fml.common.SidedProxy;
|
||||
import net.minecraftforge.fml.common.event.*;
|
||||
import lib.mcjty.varia.WrenchChecker;
|
||||
|
||||
// So that BuildCraft Oil always gets used
|
||||
@Mod(modid = ModUtil.MOD_ID, name = ModUtil.NAME, version = ModUtil.VERSION, dependencies = "after:BuildCraft|Energy", guiFactory = "de.ellpeck.actuallyadditions.mod.config.GuiFactory")
|
||||
|
@ -105,6 +106,8 @@ public class ActuallyAdditions{
|
|||
new UpdateChecker();
|
||||
proxy.preInit(event);
|
||||
|
||||
WrenchChecker.init();
|
||||
|
||||
ModUtil.LOGGER.info("PreInitialization Finished.");
|
||||
}
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ import net.minecraft.client.Minecraft;
|
|||
import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.EnumRarity;
|
||||
import net.minecraft.item.ItemCompass;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
@ -48,6 +49,7 @@ import net.minecraftforge.fml.common.eventhandler.Event;
|
|||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import lib.mcjty.varia.WrenchChecker;
|
||||
|
||||
public class BlockLaserRelay extends BlockContainerBase implements IHudDisplay{
|
||||
|
||||
|
@ -163,7 +165,8 @@ public class BlockLaserRelay extends BlockContainerBase implements IHudDisplay{
|
|||
if(tile instanceof TileEntityLaserRelay){
|
||||
TileEntityLaserRelay relay = (TileEntityLaserRelay)tile;
|
||||
|
||||
if(StackUtil.isValid(stack) && stack.getItem() instanceof ItemCompass){
|
||||
Item item = stack.getItem();
|
||||
if(StackUtil.isValid(stack) && (item instanceof ItemCompass || WrenchChecker.isAWrench(item))){
|
||||
if(!world.isRemote){
|
||||
relay.onCompassAction(player);
|
||||
|
||||
|
@ -210,8 +213,9 @@ public class BlockLaserRelay extends BlockContainerBase implements IHudDisplay{
|
|||
@SideOnly(Side.CLIENT)
|
||||
public void displayHud(Minecraft minecraft, EntityPlayer player, ItemStack stack, RayTraceResult posHit, ScaledResolution resolution){
|
||||
if(posHit != null && posHit.getBlockPos() != null && minecraft.world != null && StackUtil.isValid(stack)){
|
||||
boolean compass = stack.getItem() instanceof ItemCompass;
|
||||
if(compass || stack.getItem() instanceof ItemLaserWrench){
|
||||
Item item = stack.getItem();
|
||||
boolean compass = (item instanceof ItemCompass || WrenchChecker.isAWrench(item));
|
||||
if(compass || item instanceof ItemLaserWrench){
|
||||
TileEntity tile = minecraft.world.getTileEntity(posHit.getBlockPos());
|
||||
if(tile instanceof TileEntityLaserRelay){
|
||||
TileEntityLaserRelay relay = (TileEntityLaserRelay)tile;
|
||||
|
@ -224,7 +228,7 @@ public class BlockLaserRelay extends BlockContainerBase implements IHudDisplay{
|
|||
expl = relay.getCompassDisplayString();
|
||||
}
|
||||
else{
|
||||
expl = TextFormatting.GRAY.toString()+TextFormatting.ITALIC+"Hold a Compass to modify!";
|
||||
expl = TextFormatting.GRAY.toString()+TextFormatting.ITALIC+"Hold a Compass or wrench to modify!";
|
||||
}
|
||||
|
||||
StringUtil.drawSplitString(minecraft.fontRendererObj, expl, resolution.getScaledWidth()/2+5, resolution.getScaledHeight()/2+15, Integer.MAX_VALUE, StringUtil.DECIMAL_COLOR_WHITE, true);
|
||||
|
|
56
src/main/java/lib/mcjty/varia/WrenchChecker.java
Normal file
56
src/main/java/lib/mcjty/varia/WrenchChecker.java
Normal file
|
@ -0,0 +1,56 @@
|
|||
package lib.mcjty.varia;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class WrenchChecker {
|
||||
|
||||
private static List<Class> wrenchClasses=new ArrayList<Class>();
|
||||
|
||||
public static void init() {
|
||||
for (String className : new String[] {
|
||||
/*
|
||||
* Can add or remove class names here
|
||||
* Use API interface names where possible, in case of refactoring
|
||||
* note that many mods implement BC wrench API iff BC is installed
|
||||
* and include no wrench API of their own - we use implementation
|
||||
* classes here to catch these cases.
|
||||
*/
|
||||
"buildcraft.api.tools.IToolWrench", //Buildcraft
|
||||
"resonant.core.content.ItemScrewdriver", //Resonant Induction
|
||||
"ic2.core.item.tool.ItemToolWrench", //IC2
|
||||
"ic2.core.item.tool.ItemToolWrenchElectric", //IC2 (more)
|
||||
"mrtjp.projectred.api.IScrewdriver", //Project Red
|
||||
"mods.railcraft.api.core.items.IToolCrowbar", //Railcraft
|
||||
"com.bluepowermod.items.ItemScrewdriver", //BluePower
|
||||
"cofh.api.item.IToolHammer", //Thermal Expansion and compatible
|
||||
"thermalexpansion.item.tool.ItemWrench",
|
||||
"appeng.items.tools.quartz.ToolQuartzWrench", //Applied Energistics
|
||||
"crazypants.enderio.api.tool.ITool", //Ender IO
|
||||
"mekanism.api.IMekWrench", //Mekanism
|
||||
"mcjty.rftools.items.smartwrench", //RFTools
|
||||
"pneumaticCraft.common.item.ItemPneumaticWrench",
|
||||
"powercrystals.minefactoryreloaded.api.IToolHammer"
|
||||
|
||||
}) {
|
||||
try {
|
||||
wrenchClasses.add(Class.forName(className));
|
||||
de.ellpeck.actuallyadditions.mod.util.ModUtil.LOGGER.info("Found wrench class " + className);
|
||||
} catch (ClassNotFoundException e) {
|
||||
// Logging.log("Failed to load wrench class " + className + " (this is not an error)");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isAWrench(Item item) {
|
||||
for (Class c : wrenchClasses) {
|
||||
if (c.isAssignableFrom(item.getClass())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue