Package thaumic.tinkerer.common.peripheral

Source Code of thaumic.tinkerer.common.peripheral.PeripheralArcaneBore

/**
* This class was created by <Vazkii>. It's distributed as
* part of the ThaumicTinkerer Mod.
*
* ThaumicTinkerer is Open Source and distributed under a
* Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License
* (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB)
*
* ThaumicTinkerer is a Derivative Work on Thaumcraft 4.
* Thaumcraft 4 (c) Azanor 2012
* (http://www.minecraftforum.net/topic/1585216-)
*
* File Created @ [Dec 11, 2013, 10:03:09 PM (GMT)]
*/

package thaumic.tinkerer.common.peripheral;

import dan200.computercraft.api.lua.ILuaContext;
import dan200.computercraft.api.peripheral.IComputerAccess;
import dan200.computercraft.api.peripheral.IPeripheral;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.item.ItemStack;
import thaumcraft.common.items.equipment.ItemElementalPickaxe;
import thaumcraft.common.tiles.TileArcaneBore;

public class PeripheralArcaneBore implements IPeripheral {

  TileArcaneBore bore;

  public PeripheralArcaneBore(TileArcaneBore bore) {
    this.bore = bore;
  }

  @Override
  public String getType() {
    return "tt_arcanebore";
  }

  @Override
  public String[] getMethodNames() {
    return new String[]{ "hasPickaxe", "hasFocus", "isPickaxeBroken", "isWorking", "getRadius", "getSpeed", "hasNativeClusters", "getFortune", "hasSilkTouch" };
  }

  @Override
  public Object[] callMethod(IComputerAccess computer, ILuaContext context, int method, Object[] arguments) throws Exception {
    ItemStack pickaxe = bore.getStackInSlot(1);
    boolean nearBroken = pickaxe != null && pickaxe.getItemDamage() + 1 == pickaxe.getMaxDamage();

    switch (method) {
      case 0:
        return new Object[]{ bore.hasPickaxe };
      case 1:
        return new Object[]{ bore.hasFocus };
      case 2:
        return new Object[]{ nearBroken };
      case 3: //noinspection ConstantConditions
        return new Object[]{ bore.gettingPower() && bore.hasFocus && bore.hasPickaxe && pickaxe.isItemStackDamageable() && !nearBroken };
      case 4:
        return new Object[]{ 1 + (bore.area + bore.maxRadius) * 2 };
      case 5:
        return new Object[]{ bore.speed };
      case 6:
        return new Object[]{ pickaxe != null && pickaxe.getItem() instanceof ItemElementalPickaxe };
      case 7:
        return new Object[]{ EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, pickaxe) };
      case 8:
        return new Object[]{ EnchantmentHelper.getEnchantmentLevel(Enchantment.silkTouch.effectId, pickaxe) > 0 };
    }

    return null;
  }

  @Override
  public void attach(IComputerAccess computer) {
    // NO-OP
  }

  @Override
  public void detach(IComputerAccess computer) {
    // NO-OP
  }

  @Override
  public boolean equals(IPeripheral other) {
    return this.equals((Object) other);
  }

}
TOP

Related Classes of thaumic.tinkerer.common.peripheral.PeripheralArcaneBore

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.