Conflicts:
	src/main/scala/li/cil/oc/common/Proxy.scala
This commit is contained in:
Florian Nücke 2014-03-06 17:43:42 +01:00
commit 6da691b022
10 changed files with 206 additions and 4 deletions

View File

@ -0,0 +1,37 @@
package li.cil.oc.api;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
/**
* Item stacks for all blocks OpenComputers defines.
* </p>
* The underlying items of those are all of type {@link ItemBlock}, so you can
* use that to get the block ID if required.
*/
public final class Blocks {
public static ItemStack
AccessPoint,
Adapter,
Cable,
Capacitor,
Charger,
CaseTier1,
CaseTier2,
CaseTier3,
DiskDrive,
Keyboard,
HologramProjector,
PowerConverter,
PowerDistributor,
RedstoneIO,
Robot,
ScreenTier1,
ScreenTier2,
ScreenTier3,
ServerRack,
Switch;
private Blocks() {
}
}

View File

@ -0,0 +1,15 @@
package li.cil.oc.api;
import net.minecraft.creativetab.CreativeTabs;
/**
* Allows access to the creative tab used by OpenComputers.
*/
public final class CreativeTab {
/**
* The creative tab used by OpenComputers.
* <p/>
* Changed to the actual tab if OC is present.
*/
public static CreativeTabs Instance = CreativeTabs.tabRedstone;
}

View File

@ -0,0 +1,60 @@
package li.cil.oc.api;
import net.minecraft.item.ItemStack;
/**
* Item stacks for all items OpenComputers defines.
*/
public final class Items {
public static ItemStack
AbstractBusCard,
Acid,
ALU,
Analyzer,
ButtonArrows,
ButtonGroup,
ButtonNumPad,
CardBase,
CircuitBoard,
ControlUnit,
CPUTier1,
CPUTier2,
CPUTier3,
CuttingWire,
DiskPlatter,
FloppyDisk,
GraphicsCardTier1,
GraphicsCardTier2,
GraphicsCardTier3,
HardDiskTier2,
HardDiskTier3,
HardDriveTier1,
InternetCard,
IronNugget,
MemoryTier1,
MemoryTier2,
MemoryTier3,
MemoryTier4,
MemoryTier5,
MicrochipTier1,
MicroChipTier2,
MicroChipTier3,
NetworkCard,
PrintedCircuitBoard,
RawCircuitBoard,
RedstoneCard,
ServerTier1,
ServerTier2,
ServerTier3,
Terminal,
Transistor,
UpgradeCrafting,
UpgradeGenerator,
UpgradeNavigation,
UpgradeSign,
UpgradeSolarGenerator,
WirelessNetworkCard;
private Items() {
}
}

View File

@ -11,6 +11,10 @@ import java.util.Map;
* Note that integer values fetched this way are actually double values that
* have been truncated. So if a Lua program passes <tt>1.9</tt> and you do a
* <tt>checkInteger</tt> you'll get a <tt>1</tt>.
* <p/>
* The indexes passed to the various functions start at zero, i.e. to get the
* first argument you would use <tt>checkAny(0)</tt>. This is worth mentioning
* because Lua starts its indexes at one.
*/
public interface Arguments extends Iterable<Object> {
/**

View File

@ -20,6 +20,12 @@ import java.lang.annotation.Target;
* <p/>
* The method may return <tt>null</tt> in case it doesn't wish return anything,
* which is functionally equivalent to returning an empty array.
* <p/>
* To raise an error from your callback, simply throw an exception. The
* convention for Lua is to return (null, "reason") for 'soft' errors, i.e.
* errors that are no fault of the caller. For example, passing invalid
* arguments will generate an exception, requesting information and the lookup
* of said information failing should not.
*
* @see Context
* @see Arguments

View File

@ -108,6 +108,30 @@ object Blocks {
hologram = Recipes.addBlockDelegate(new Hologram(blockSpecial), "hologram")
wirelessRouter = Recipes.addBlockDelegate(new WirelessRouter(blockSimple), "wirelessRouter")
// Initialize API.
api.Blocks.AccessPoint = wirelessRouter.createItemStack()
api.Blocks.Adapter = adapter.createItemStack()
api.Blocks.Cable = cable.createItemStack()
api.Blocks.Capacitor = capacitor.createItemStack()
api.Blocks.Charger = charger.createItemStack()
api.Blocks.CaseTier1 = case1.createItemStack()
api.Blocks.CaseTier2 = case2.createItemStack()
api.Blocks.CaseTier3 = case3.createItemStack()
api.Blocks.DiskDrive = diskDrive.createItemStack()
api.Blocks.Keyboard = keyboard.createItemStack()
api.Blocks.HologramProjector = hologram.createItemStack()
api.Blocks.PowerConverter = powerConverter.createItemStack()
api.Blocks.PowerDistributor = powerDistributor.createItemStack()
api.Blocks.RedstoneIO = redstone.createItemStack()
api.Blocks.Robot = robotProxy.createItemStack()
api.Blocks.Switch = router.createItemStack()
api.Blocks.ScreenTier1 = screen1.createItemStack()
api.Blocks.ScreenTier2 = screen2.createItemStack()
api.Blocks.ScreenTier3 = screen3.createItemStack()
api.Blocks.ServerRack = serverRack.createItemStack()
// ----------------------------------------------------------------------- //
register("oc:craftingCable", cable.createItemStack())
register("oc:craftingCapacitor", capacitor.createItemStack())
register("oc:craftingCaseTier1", case1.createItemStack())

View File

@ -138,6 +138,55 @@ object Items {
server1 = Recipes.addItemDelegate(new item.Server(multi, 0), "server1")
server2 = Recipes.addItemDelegate(new item.Server(multi, 1), "server2")
// Initialize API.
api.Items.AbstractBusCard = abstractBus.createItemStack()
api.Items.Acid = acid.createItemStack()
api.Items.ALU = alu.createItemStack()
api.Items.Analyzer = analyzer.createItemStack()
api.Items.ButtonArrows = arrowKeys.createItemStack()
api.Items.ButtonGroup = buttonGroup.createItemStack()
api.Items.ButtonNumPad = numPad.createItemStack()
api.Items.CardBase = card.createItemStack()
api.Items.CircuitBoard = circuitBoard.createItemStack()
api.Items.ControlUnit = cu.createItemStack()
api.Items.CPUTier1 = cpu0.createItemStack()
api.Items.CPUTier2 = cpu1.createItemStack()
api.Items.CPUTier3 = cpu2.createItemStack()
api.Items.CuttingWire = cuttingWire.createItemStack()
api.Items.DiskPlatter = disk.createItemStack()
api.Items.FloppyDisk = floppyDisk.createItemStack()
api.Items.GraphicsCardTier1 = gpu1.createItemStack()
api.Items.GraphicsCardTier2 = gpu2.createItemStack()
api.Items.GraphicsCardTier3 = gpu3.createItemStack()
api.Items.HardDiskTier2 = hdd1.createItemStack()
api.Items.HardDiskTier3 = hdd2.createItemStack()
api.Items.HardDriveTier1 = hdd3.createItemStack()
api.Items.InternetCard = internet.createItemStack()
api.Items.IronNugget = ironNugget.createItemStack()
api.Items.MemoryTier1 = ram1.createItemStack()
api.Items.MemoryTier2 = ram2.createItemStack()
api.Items.MemoryTier3 = ram3.createItemStack()
api.Items.MemoryTier4 = ram4.createItemStack()
api.Items.MemoryTier5 = ram5.createItemStack()
api.Items.MicrochipTier1 = chip1.createItemStack()
api.Items.MicroChipTier2 = chip2.createItemStack()
api.Items.MicroChipTier3 = chip3.createItemStack()
api.Items.NetworkCard = lan.createItemStack()
api.Items.PrintedCircuitBoard = pcb.createItemStack()
api.Items.RawCircuitBoard = rawCircuitBoard.createItemStack()
api.Items.RedstoneCard = rs.createItemStack()
api.Items.ServerTier1 = server1.createItemStack()
api.Items.ServerTier2 = server2.createItemStack()
api.Items.ServerTier3 = server3.createItemStack()
api.Items.Terminal = terminal.createItemStack()
api.Items.Transistor = transistor.createItemStack()
api.Items.UpgradeCrafting = upgradeCrafting.createItemStack()
api.Items.UpgradeGenerator = upgradeGenerator.createItemStack()
api.Items.UpgradeNavigation = upgradeNavigation.createItemStack()
api.Items.UpgradeSign = upgradeSign.createItemStack()
api.Items.UpgradeSolarGenerator = upgradeSolarGenerator.createItemStack()
api.Items.WirelessNetworkCard = wlan.createItemStack()
// ----------------------------------------------------------------------- //
registerExclusive("craftingPiston", new ItemStack(net.minecraft.init.Blocks.piston), new ItemStack(net.minecraft.init.Blocks.sticky_piston))

View File

@ -8,7 +8,6 @@ import li.cil.oc.common.asm.SimpleComponentTickHandler
import li.cil.oc.server
import li.cil.oc.server.component.machine
import li.cil.oc.server.component.machine.{LuaJLuaArchitecture, NativeLuaArchitecture}
import li.cil.oc.server.network.Network
import li.cil.oc.server.{driver, fs, network}
import li.cil.oc.util.{LuaStateFactory, WirelessNetwork}
import net.minecraftforge.common.MinecraftForge
@ -25,6 +24,7 @@ class Proxy {
}
*/
api.CreativeTab.Instance = CreativeTab
api.Driver.instance = driver.Registry
api.FileSystem.instance = fs.FileSystem
api.Machine.instance = machine.Machine

View File

@ -280,7 +280,11 @@ class LuaJLuaArchitecture(machine: api.machine.Machine) extends LuaArchitecture(
computer.set("removeUser", (args: Varargs) => LuaValue.valueOf(machine.removeUser(args.checkjstring(1))))
computer.set("energy", (_: Varargs) => LuaValue.valueOf(node.globalBuffer))
computer.set("energy", (_: Varargs) =>
if (Settings.get.ignorePower)
LuaValue.valueOf(Double.PositiveInfinity)
else
LuaValue.valueOf(node.globalBuffer))
computer.set("maxEnergy", (_: Varargs) => LuaValue.valueOf(node.globalBufferSize))

View File

@ -5,6 +5,7 @@ import com.naef.jnlua._
import java.io.{IOException, FileNotFoundException}
import java.util.logging.Level
import li.cil.oc.api.machine.{LimitReachedException, ExecutionResult}
import li.cil.oc.api.network.ComponentConnector
import li.cil.oc.util.ExtendedLuaState.extendLuaState
import li.cil.oc.util.{GameTimeFormatter, LuaStateFactory}
import li.cil.oc.{api, OpenComputers, server, Settings}
@ -12,7 +13,6 @@ import net.minecraft.nbt.NBTTagCompound
import scala.Some
import scala.collection.convert.WrapAsScala._
import scala.collection.mutable
import li.cil.oc.api.network.ComponentConnector
class NativeLuaArchitecture(machine: api.machine.Machine) extends LuaArchitecture(machine) {
private var lua: LuaState = null
@ -369,7 +369,10 @@ class NativeLuaArchitecture(machine: api.machine.Machine) extends LuaArchitectur
lua.setField(-2, "removeUser")
lua.pushScalaFunction(lua => {
lua.pushNumber(node.globalBuffer)
if (Settings.get.ignorePower)
lua.pushNumber(Double.PositiveInfinity)
else
lua.pushNumber(node.globalBuffer)
1
})
lua.setField(-2, "energy")