Newer
Older
ultramine_hawkeye / src / main / java / org / ultramine / mods / hawkeye / ToolManager.java
@zaxar163 zaxar163 on 5 Jul 2018 3 KB Inital.
package org.ultramine.mods.hawkeye;

import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import org.ultramine.mods.hawkeye.callbacks.SearchCallback;
import org.ultramine.mods.hawkeye.database.SearchQuery;
import org.ultramine.mods.hawkeye.util.HawkBlockUtil;
import org.ultramine.mods.hawkeye.util.HawkInventoryUtil;
import org.ultramine.mods.hawkeye.util.HawkUtil;
import org.ultramine.mods.hawkeye.util.HawkVector;

public class ToolManager {
   public static void enableTool(PlayerSession session, EntityPlayer player) {
      InventoryPlayer inv = player.inventory;
      session.setUsingTool(true);
      ItemStack stack = HawkBlockUtil.itemStringToStack(HawkEye.instance.config.general.toolBlock, 1);
      int first;
      if (!HawkInventoryUtil.contains(inv, stack) && HawkEye.instance.config.general.giveTool) {
         first = HawkInventoryUtil.firstEmpty(inv);
         if (first != -1) {
            inv.setInventorySlotContents(first, stack);
         }
      }

      first = HawkInventoryUtil.first(inv, HawkBlockUtil.itemStringToStack(HawkEye.instance.config.general.toolBlock, 1));
      if (!HawkBlockUtil.getItemString(inv.getCurrentItem()).equals(HawkEye.instance.config.general.toolBlock) && first != -1) {
         ItemStack back = inv.getCurrentItem().copy();
         inv.setInventorySlotContents(inv.currentItem, inv.getStackInSlot(first));
         if (back.stackSize == 0) {
            inv.setInventorySlotContents(first, (ItemStack)null);
         } else {
            inv.setInventorySlotContents(first, back);
         }
      }

      HawkUtil.sendMessage(player, "&cHawkEye tool enabled! &7Left click a block or place the tool to get information");
   }

   public static void disableTool(PlayerSession session, EntityPlayer player) {
      session.setUsingTool(false);
      HawkUtil.sendMessage(player, "&cHawkEye tool disabled");
   }

   public static void toolSearch(EntityPlayer player, HawkVector loc) {
      PlayerSession session = SessionManager.getSession(player);
      SearchParser parser;
      if (session.getToolCommand().length != 0 && session.getToolCommand()[0] != "") {
         parser = new SearchParser(player, Arrays.asList(session.getToolCommand()));
      } else {
         parser = new SearchParser(player);
         DataType[] var4 = DataType.values();
         int var5 = var4.length;

         for(int var6 = 0; var6 < var5; ++var6) {
            DataType type = var4[var6];
            if (type.canHere()) {
               parser.actions.add(type);
            }
         }
      }

      HawkVector vec = HawkUtil.getSimpleLocation(loc);
      parser.loc = vec;
      parser.minLoc = null;
      parser.maxLoc = null;
      parser.worlds = new String[]{Integer.toString(player.ap)};
      new SearchQuery(new SearchCallback(SessionManager.getSession(player), true), parser, SearchQuery.SearchDir.DESC);
   }

   public static void bindTool(EntityPlayer player, PlayerSession session, List args) {
      try {
         new SearchParser(player, args);
      } catch (IllegalArgumentException var4) {
         HawkUtil.sendMessage(player, "&c" + var4.getMessage());
         return;
      }

      HawkUtil.sendMessage(player, "&cParameters bound to tool: &7" + HawkUtil.join((Collection)args, " "));
      session.setToolCommand((String[])args.toArray(new String[0]));
      if (!session.isUsingTool()) {
         enableTool(session, player);
      }

   }

   public static void resetTool(PlayerSession session) {
      session.setToolCommand(HawkEye.instance.config.general.defaultToolCommand);
   }
}