CC-Tweaked/src/main/java/dan200/computercraft/shared/computer/blocks/ComputerPeripheral.java

117 lines
2.5 KiB
Java

/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2020. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.shared.computer.blocks;
import dan200.computercraft.api.lua.LuaFunction;
import dan200.computercraft.api.peripheral.IPeripheral;
import dan200.computercraft.core.apis.OSAPI;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
/**
* A computer or turtle wrapped as a peripheral.
*
* This allows for basic interaction with adjacent computers. Computers wrapped as peripherals will have the type
* {@code computer} while turtles will be {@code turtle}.
*
* @cc.module computer
*/
public class ComputerPeripheral implements IPeripheral
{
private final String type;
private final ComputerProxy computer;
public ComputerPeripheral( String type, ComputerProxy computer )
{
this.type = type;
this.computer = computer;
}
@Nonnull
@Override
public String getType()
{
return type;
}
/**
* Turn the other computer on.
*/
@LuaFunction
public final void turnOn()
{
computer.turnOn();
}
/**
* Shutdown the other computer.
*/
@LuaFunction
public final void shutdown()
{
computer.shutdown();
}
/**
* Reboot or turn on the other computer.
*/
@LuaFunction
public final void reboot()
{
computer.reboot();
}
/**
* Get the other computer's ID.
*
* @return The computer's ID.
* @see OSAPI#getComputerID() To get your computer's ID.
*/
@LuaFunction
public final int getID()
{
return computer.assignID();
}
/**
* Determine if the other computer is on.
*
* @return If the computer is on.
*/
@LuaFunction
public final boolean isOn()
{
return computer.isOn();
}
/**
* Get the other computer's label.
*
* @return The computer's label.
* @see OSAPI#getComputerLabel() To get your label.
*/
@Nullable
@LuaFunction
public final String getLabel()
{
return computer.getLabel();
}
@Override
public boolean equals( IPeripheral other )
{
return other instanceof ComputerPeripheral && computer == ((ComputerPeripheral) other).computer;
}
@Nonnull
@Override
public Object getTarget()
{
return computer.getTile();
}
}