Skip to content

Commit

Permalink
Added unboosted mining level awareness to tool part tooltips
Browse files Browse the repository at this point in the history
  • Loading branch information
squeek502 committed Aug 13, 2014
1 parent 32e70b3 commit c900348
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 134 deletions.
12 changes: 11 additions & 1 deletion java/squeek/tictooltips/TooltipHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.util.EnumChatFormatting;
import cpw.mods.fml.common.eventhandler.Event.Result;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.util.StatCollector;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import squeek.tictooltips.helpers.*;
import squeek.tictooltips.proxy.ProxyIguanaTweaks;
import tconstruct.tools.items.Bowstring;
import tconstruct.tools.items.Fletching;
import tconstruct.tools.items.ToolPart;
Expand All @@ -35,6 +37,9 @@ public void onItemTooltip(ItemTooltipEvent event)
if (event.entityPlayer == null)
return;

if (event.getResult() == Result.DENY)
return;

Item item = event.itemStack.getItem();

// Tool Parts
Expand Down Expand Up @@ -276,7 +281,12 @@ else if (ToolPartHelper.isToolHead(item))
{
toolTip.add(StringHelper.getLocalizedString("gui.toolstation2") + ToolPartHelper.getDurabilityString(mat.durability()));
toolTip.add(StringHelper.getLocalizedString("gui.toolstation14") + ToolPartHelper.getMiningSpeedString(mat.toolSpeed()));
toolTip.add(StringHelper.getLocalizedString("gui.toolstation15") + ToolPartHelper.getHarvestLevelString(mat.harvestLevel()));

int harvestLevel = mat.harvestLevel();
if (ModTiCTooltips.hasIguanaTweaks)
harvestLevel = ProxyIguanaTweaks.getUnboostedHarvestLevel(item, harvestLevel);

toolTip.add(StringHelper.getLocalizedString("gui.toolstation15") + ToolPartHelper.getHarvestLevelString(harvestLevel));
}
else if (ToolPartHelper.isWeaponMiningHead(item))
{
Expand Down
148 changes: 15 additions & 133 deletions java/squeek/tictooltips/proxy/ProxyIguanaTweaks.java
Original file line number Diff line number Diff line change
@@ -1,181 +1,63 @@
package squeek.tictooltips.proxy;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import squeek.tictooltips.ModTiCTooltips;
import squeek.tictooltips.helpers.ToolPartHelper;
import tconstruct.tools.TinkerTools;
import tconstruct.tools.items.ToolPart;

public class ProxyIguanaTweaks
{
private static Class<?> IguanaTweaksTConstruct = null;
private static Method proxyGetHarvestLevelName;
private static Class<?> IguanaTweaksConfig = null;
public static boolean toolsRequireBoost = false;
private static List<IModPartHandler> modPartHandlers = new ArrayList<IModPartHandler>();

public static void registerModPartHandler(IModPartHandler modPartHandler)
{
modPartHandlers.add(modPartHandler);
}

private static enum toolPartIndexes {
toolRod, pickaxeHead, shovelHead, hatchetHead,
binding, toughBinding, toughRod, largePlate,
swordBlade, wideGuard, handGuard, crossbar,
knifeBlade, fullGuard, frypanHead, signHead,
chiselHead, scytheBlade, broadAxeHead, excavatorHead,
largeSwordBlade, hammerHead, bowstring, fletching,
arrowhead
};

public static List<Item> iguanaToolParts = Arrays.asList(
TinkerTools.toolRod, TinkerTools.pickaxeHead, TinkerTools.shovelHead, TinkerTools.hatchetHead,
TinkerTools.binding, TinkerTools.toughBinding, TinkerTools.toughRod, TinkerTools.largePlate,
TinkerTools.swordBlade, TinkerTools.wideGuard, TinkerTools.handGuard, TinkerTools.crossbar,
TinkerTools.knifeBlade, TinkerTools.fullGuard, TinkerTools.frypanHead, TinkerTools.signHead,
TinkerTools.chiselHead, TinkerTools.scytheBlade, TinkerTools.broadAxeHead, TinkerTools.excavatorHead,
TinkerTools.largeSwordBlade, TinkerTools.hammerHead, TinkerTools.bowstring, TinkerTools.fletching,
TinkerTools.arrowhead
);

public static class ProxyDefaultToolHandler implements IModPartHandler
{
public static List<Item> defaultToolParts = null;

@Override
public String getPartName(Item part)
{
return ((ToolPart) part).partName;
}

@Override
public boolean isModdedPart(Item part)
{
return defaultToolParts.contains(part);
}

}

public static void init()
{
try
{
IguanaTweaksTConstruct = Class.forName("iguanaman.iguanatweakstconstruct.IguanaTweaksTConstruct");
proxyGetHarvestLevelName = IguanaTweaksTConstruct.getDeclaredMethod("getHarvestLevelName", int.class);
if (registerParts())
ProxyIguanaTweaks.registerModPartHandler(new ProxyDefaultToolHandler());
IguanaTweaksConfig = Class.forName("iguanaman.iguanatweakstconstruct.reference.Config");
Field levelingPickaxeBoost = IguanaTweaksConfig.getDeclaredField("levelingPickaxeBoost");
Field pickaxeBoostRequired = IguanaTweaksConfig.getDeclaredField("pickaxeBoostRequired");
toolsRequireBoost = levelingPickaxeBoost.getBoolean(null) && pickaxeBoostRequired.getBoolean(null);
}
catch (Exception e)
{
ModTiCTooltips.Log.error("Failed to load Iguana Tweaks integration: " + e.toString());
}
}

@SuppressWarnings("unchecked")
public static boolean registerParts()
{
try
{
ProxyDefaultToolHandler.defaultToolParts = (List<Item>) IguanaTweaksTConstruct.getDeclaredField("toolParts").get(null);

ToolPartHelper.toolHeads.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.pickaxeHead.ordinal()));
ToolPartHelper.toolHeads.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.shovelHead.ordinal()));
ToolPartHelper.toolHeads.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.excavatorHead.ordinal()));

ToolPartHelper.weaponMiningHeads.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.hammerHead.ordinal()));

ToolPartHelper.weaponToolHeads.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.hatchetHead.ordinal()));
ToolPartHelper.weaponToolHeads.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.scytheBlade.ordinal()));
ToolPartHelper.weaponToolHeads.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.broadAxeHead.ordinal()));

ToolPartHelper.weaponHeads.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.swordBlade.ordinal()));
ToolPartHelper.weaponHeads.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.largeSwordBlade.ordinal()));
ToolPartHelper.weaponHeads.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.knifeBlade.ordinal()));
ToolPartHelper.weaponHeads.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.frypanHead.ordinal()));
ToolPartHelper.weaponHeads.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.signHead.ordinal()));

ToolPartHelper.weaponGuards.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.crossbar.ordinal()));
ToolPartHelper.weaponGuards.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.handGuard.ordinal()));
ToolPartHelper.weaponGuards.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.wideGuard.ordinal()));
ToolPartHelper.weaponGuards.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.fullGuard.ordinal()));

ToolPartHelper.bindings.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.binding.ordinal()));
ToolPartHelper.bindings.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.toughBinding.ordinal()));

ToolPartHelper.rods.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.toolRod.ordinal()));
ToolPartHelper.rods.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.toughRod.ordinal()));

ToolPartHelper.plates.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.largePlate.ordinal()));

//ToolPartHelper.shards.add(defaultToolParts.get(toolPartIndexes.toolShard.ordinal()));

ToolPartHelper.arrowHeads.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.arrowhead.ordinal()));

ToolPartHelper.arrowRods.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.toolRod.ordinal()));

ToolPartHelper.chisels.add(ProxyDefaultToolHandler.defaultToolParts.get(toolPartIndexes.chiselHead.ordinal()));
}
catch (Exception e)
{
ModTiCTooltips.Log.error("Failed to register Iguana Tweaks tool parts: " + e.toString());
return false;
}

return true;
}

public static String getHarvestLevelName(int num)
{
String harvestLevelName = "<Unknown>";

try
{
harvestLevelName = (String) proxyGetHarvestLevelName.invoke(IguanaTweaksTConstruct, num);
}
catch (Exception e)
{
}

return harvestLevelName;
}

public static List<String> getPartTooltip(ItemStack itemStack, EntityPlayer player, boolean par4)
{
List<String> toolTip = new ArrayList<String>();

Item item = itemStack.getItem();
Item iguanaPart = null;

for (IModPartHandler modPartHandler : modPartHandlers)
{
if (modPartHandler.isModdedPart(item))
{
iguanaPart = findCorrespondingIguanaToolPart(modPartHandler.getPartName(item));
if (iguanaPart != null)
break;
}
}

if (iguanaPart != null)
iguanaPart.addInformation(itemStack, player, toolTip, par4);

return toolTip;
}

public static Item findCorrespondingIguanaToolPart(String partName)
public static int getUnboostedHarvestLevel(Item item, int harvestLevel)
{
for (Item iguanaPart : iguanaToolParts)
{
if (iguanaPart instanceof ToolPart && ((ToolPart) iguanaPart).partName.equals(partName))
return iguanaPart;
}

return null;
if (toolsRequireBoost && (item.getUnlocalizedName().toLowerCase().contains("pick") || item.getUnlocalizedName().toLowerCase().contains("hammer")))
return Math.max(0, harvestLevel - 1);
else
return harvestLevel;
}

public static String getPartName(Item part)
Expand Down

0 comments on commit c900348

Please sign in to comment.