mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-19 04:06:43 -04:00
Added tractor beam upgrade (item magnet).
This commit is contained in:
parent
232f5fad61
commit
a9efeb6b26
BIN
assets/items.psd
BIN
assets/items.psd
Binary file not shown.
@ -96,6 +96,7 @@ oc:item.UpgradeInventoryController.name=Inventarbedienungs-Upgrade
|
|||||||
oc:item.UpgradeNavigation.name=Navigationsupgrade
|
oc:item.UpgradeNavigation.name=Navigationsupgrade
|
||||||
oc:item.UpgradeSign.name=Schild-I/O-Upgrade
|
oc:item.UpgradeSign.name=Schild-I/O-Upgrade
|
||||||
oc:item.UpgradeSolarGenerator.name=Solargenerator-Upgrade
|
oc:item.UpgradeSolarGenerator.name=Solargenerator-Upgrade
|
||||||
|
oc:item.UpgradeTractorBeam.name=Traktorstrahl-Upgrade
|
||||||
oc:item.WirelessNetworkCard.name=Drahtlosnetzwerkkarte
|
oc:item.WirelessNetworkCard.name=Drahtlosnetzwerkkarte
|
||||||
|
|
||||||
# GUI
|
# GUI
|
||||||
@ -237,5 +238,6 @@ oc:tooltip.UpgradeInventoryController=Dieses Upgrade erlaubt es dem Roboter, pr
|
|||||||
oc:tooltip.UpgradeNavigation=Erlaubt es Robotern, ihre Position und Ausrichtung zu bestimmen. Die Position ist relativ zur Mitte der Karte, die in diesem Upgrade verbaut wurde.
|
oc:tooltip.UpgradeNavigation=Erlaubt es Robotern, ihre Position und Ausrichtung zu bestimmen. Die Position ist relativ zur Mitte der Karte, die in diesem Upgrade verbaut wurde.
|
||||||
oc:tooltip.UpgradeSign=Erlaubt das Lesen und Schreiben von Text auf Schildern.
|
oc:tooltip.UpgradeSign=Erlaubt das Lesen und Schreiben von Text auf Schildern.
|
||||||
oc:tooltip.UpgradeSolarGenerator=Kann verwendet werden, um unterwegs Energie aus Sonnenlicht zu generieren. Benötigt eine ungehinderte Sicht zum Himmel über dem Roboter. Generiert Energie mit %s%% der Geschwindigkeit eines Stirlingmotors.
|
oc:tooltip.UpgradeSolarGenerator=Kann verwendet werden, um unterwegs Energie aus Sonnenlicht zu generieren. Benötigt eine ungehinderte Sicht zum Himmel über dem Roboter. Generiert Energie mit %s%% der Geschwindigkeit eines Stirlingmotors.
|
||||||
|
oc:tooltip.UpgradeTractorBeam=Stattet den Roboter mit unglaublich fortschrittlicher Technologie - Kosename: "Gegenstandsmagnet" - aus. Erlaubt es dem Roboter, Gegenstände, innerhalb von 3 Blöcken um sich herum, einzusammeln.
|
||||||
oc:tooltip.WirelessNetworkCard=Erlaubt das drahtlose Senden von Netzwerknachrichten, zusätzlich zu normalen. Drahtlose Nachrichten werden nur gesendet, wenn eine §fSignalstärke§7 festgelegt wurde!
|
oc:tooltip.WirelessNetworkCard=Erlaubt das drahtlose Senden von Netzwerknachrichten, zusätzlich zu normalen. Drahtlose Nachrichten werden nur gesendet, wenn eine §fSignalstärke§7 festgelegt wurde!
|
||||||
oc:tooltip.WirelessRouter=Verhält sich wie ein Switch, aber empfängt zusätzlich Drahtlosnachrichten und leitet Pakete aus dem Festnetz drahtlos weiter.
|
oc:tooltip.WirelessRouter=Verhält sich wie ein Switch, aber empfängt zusätzlich Drahtlosnachrichten und leitet Pakete aus dem Festnetz drahtlos weiter.
|
||||||
|
@ -96,6 +96,7 @@ oc:item.UpgradeInventoryController.name=Inventory Controller Upgrade
|
|||||||
oc:item.UpgradeNavigation.name=Navigation Upgrade
|
oc:item.UpgradeNavigation.name=Navigation Upgrade
|
||||||
oc:item.UpgradeSign.name=Sign I/O Upgrade
|
oc:item.UpgradeSign.name=Sign I/O Upgrade
|
||||||
oc:item.UpgradeSolarGenerator.name=Solar Generator Upgrade
|
oc:item.UpgradeSolarGenerator.name=Solar Generator Upgrade
|
||||||
|
oc:item.UpgradeTractorBeam.name=Tractor Beam Upgrade
|
||||||
oc:item.WirelessNetworkCard.name=Wireless Network Card
|
oc:item.WirelessNetworkCard.name=Wireless Network Card
|
||||||
|
|
||||||
# GUI
|
# GUI
|
||||||
@ -237,5 +238,6 @@ oc:tooltip.UpgradeInventoryController=This upgrade allows the robot more control
|
|||||||
oc:tooltip.UpgradeNavigation=Can be used to determine the position and orientation of the robot. The position is relative to the center of the map that was used to craft this upgrade.
|
oc:tooltip.UpgradeNavigation=Can be used to determine the position and orientation of the robot. The position is relative to the center of the map that was used to craft this upgrade.
|
||||||
oc:tooltip.UpgradeSign=Allows reading text on and writing text to signs.
|
oc:tooltip.UpgradeSign=Allows reading text on and writing text to signs.
|
||||||
oc:tooltip.UpgradeSolarGenerator=Can be used to generate energy from sunlight on the go. Requires a clear line of sight to the sky above the robot. Generates energy at %s%% of the speed of a Stirling Engine.
|
oc:tooltip.UpgradeSolarGenerator=Can be used to generate energy from sunlight on the go. Requires a clear line of sight to the sky above the robot. Generates energy at %s%% of the speed of a Stirling Engine.
|
||||||
|
oc:tooltip.UpgradeTractorBeam=Equips the robot with extremely advanced technology, nicknamed the "Item Magnet". Allows it to pick up items anywhere within 3 blocks of its location.
|
||||||
oc:tooltip.WirelessNetworkCard=Allows wireless sending of network messages in addition to normal ones. You can adjust the §fsignal strength§7 to control how far messages are sent. Higher signal strength results in higher energy consumption.
|
oc:tooltip.WirelessNetworkCard=Allows wireless sending of network messages in addition to normal ones. You can adjust the §fsignal strength§7 to control how far messages are sent. Higher signal strength results in higher energy consumption.
|
||||||
oc:tooltip.WirelessRouter=Acts like a Switch, but additionally receives wireless packets and relays wired packets wirelessly.
|
oc:tooltip.WirelessRouter=Acts like a Switch, but additionally receives wireless packets and relays wired packets wirelessly.
|
||||||
|
@ -186,6 +186,12 @@ solarGeneratorUpgrade {
|
|||||||
["oc:circuitChip3", blockLapis, "oc:circuitChip3"]
|
["oc:circuitChip3", blockLapis, "oc:circuitChip3"]
|
||||||
[ingotIron, "oc:materialCircuitBoardPrinted", ingotIron]]
|
[ingotIron, "oc:materialCircuitBoardPrinted", ingotIron]]
|
||||||
}
|
}
|
||||||
|
tractorBeamUpgrade {
|
||||||
|
input: [[ingotGold, craftingPiston, ingotGold]
|
||||||
|
[ingotIron, "oc:capacitor", ingotIron]
|
||||||
|
[ingotGold, "oc:circuitChip3", ingotGold]]
|
||||||
|
}
|
||||||
|
|
||||||
cardContainer1 {
|
cardContainer1 {
|
||||||
input: [[ingotIron, "oc:materialTransistor", ingotIron]
|
input: [[ingotIron, "oc:materialTransistor", ingotIron]
|
||||||
[craftingPiston, chest, ""]
|
[craftingPiston, chest, ""]
|
||||||
|
Binary file not shown.
After Width: | Height: | Size: 414 B |
@ -230,6 +230,9 @@ object Items extends ItemAPI {
|
|||||||
Recipes.addItem(new item.UpgradeBattery(multi, Tier.Three), "batteryUpgrade3", "oc:batteryUpgrade3")
|
Recipes.addItem(new item.UpgradeBattery(multi, Tier.Three), "batteryUpgrade3", "oc:batteryUpgrade3")
|
||||||
Recipes.addItem(new item.RedstoneCard(multi, Tier.One), "redstoneCard1", "oc:redstoneCard1")
|
Recipes.addItem(new item.RedstoneCard(multi, Tier.One), "redstoneCard1", "oc:redstoneCard1")
|
||||||
|
|
||||||
|
// ???
|
||||||
|
Recipes.addItem(new item.UpgradeTractorBeam(multi), "tractorBeamUpgrade", "oc:tractorBeamUpgrade")
|
||||||
|
|
||||||
// Experimental
|
// Experimental
|
||||||
// registerItem(new item.Tablet(multi), "tablet")
|
// registerItem(new item.Tablet(multi), "tablet")
|
||||||
}
|
}
|
||||||
|
@ -79,6 +79,7 @@ class Proxy {
|
|||||||
api.Driver.add(driver.item.Processor)
|
api.Driver.add(driver.item.Processor)
|
||||||
api.Driver.add(driver.item.RedstoneCard)
|
api.Driver.add(driver.item.RedstoneCard)
|
||||||
api.Driver.add(driver.item.Screen)
|
api.Driver.add(driver.item.Screen)
|
||||||
|
api.Driver.add(driver.item.UpgradeAngel)
|
||||||
api.Driver.add(driver.item.UpgradeBattery)
|
api.Driver.add(driver.item.UpgradeBattery)
|
||||||
api.Driver.add(driver.item.UpgradeChunkloader)
|
api.Driver.add(driver.item.UpgradeChunkloader)
|
||||||
api.Driver.add(driver.item.UpgradeContainerCard)
|
api.Driver.add(driver.item.UpgradeContainerCard)
|
||||||
@ -92,7 +93,7 @@ class Proxy {
|
|||||||
api.Driver.add(driver.item.UpgradeNavigation)
|
api.Driver.add(driver.item.UpgradeNavigation)
|
||||||
api.Driver.add(driver.item.UpgradeSign)
|
api.Driver.add(driver.item.UpgradeSign)
|
||||||
api.Driver.add(driver.item.UpgradeSolarGenerator)
|
api.Driver.add(driver.item.UpgradeSolarGenerator)
|
||||||
api.Driver.add(driver.item.UpgradeAngel)
|
api.Driver.add(driver.item.UpgradeTractorBeam)
|
||||||
api.Driver.add(driver.item.WirelessNetworkCard)
|
api.Driver.add(driver.item.WirelessNetworkCard)
|
||||||
|
|
||||||
if (Mods.StargateTech2.isAvailable) {
|
if (Mods.StargateTech2.isAvailable) {
|
||||||
|
@ -0,0 +1,24 @@
|
|||||||
|
package li.cil.oc.common.item
|
||||||
|
|
||||||
|
import java.util
|
||||||
|
|
||||||
|
import li.cil.oc.Settings
|
||||||
|
import li.cil.oc.util.Tooltip
|
||||||
|
import net.minecraft.client.renderer.texture.IconRegister
|
||||||
|
import net.minecraft.entity.player.EntityPlayer
|
||||||
|
import net.minecraft.item.ItemStack
|
||||||
|
|
||||||
|
class UpgradeTractorBeam(val parent: Delegator) extends Delegate {
|
||||||
|
val unlocalizedName = "UpgradeTractorBeam"
|
||||||
|
|
||||||
|
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
|
||||||
|
tooltip.addAll(Tooltip.get(unlocalizedName))
|
||||||
|
super.tooltipLines(stack, player, tooltip, advanced)
|
||||||
|
}
|
||||||
|
|
||||||
|
override def registerIcons(iconRegister: IconRegister) = {
|
||||||
|
super.registerIcons(iconRegister)
|
||||||
|
|
||||||
|
icon = iconRegister.registerIcon(Settings.resourceDomain + ":upgrade_tractor_beam")
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package li.cil.oc.server.component
|
||||||
|
|
||||||
|
import li.cil.oc.Settings
|
||||||
|
import li.cil.oc.api.Network
|
||||||
|
import li.cil.oc.api.machine.Robot
|
||||||
|
import li.cil.oc.api.network.{Arguments, Callback, Context, Visibility}
|
||||||
|
import li.cil.oc.common.component
|
||||||
|
import net.minecraft.entity.item.EntityItem
|
||||||
|
import net.minecraft.util.AxisAlignedBB
|
||||||
|
|
||||||
|
import scala.collection.convert.WrapAsScala._
|
||||||
|
|
||||||
|
class UpgradeTractorBeam(owner: Robot) extends component.ManagedComponent {
|
||||||
|
val node = Network.newNode(this, Visibility.Network).
|
||||||
|
withComponent("tractor_beam").
|
||||||
|
create()
|
||||||
|
|
||||||
|
private val pickupRadius = 3
|
||||||
|
|
||||||
|
private def world = owner.player.getEntityWorld
|
||||||
|
|
||||||
|
@Callback(doc = """function():boolean -- Tries to pick up a random item in the robots' vicinity.""")
|
||||||
|
def suck(context: Context, args: Arguments): Array[AnyRef] = {
|
||||||
|
val items = world.getEntitiesWithinAABB(classOf[EntityItem], pickupBounds)
|
||||||
|
.map(_.asInstanceOf[EntityItem])
|
||||||
|
.filter(item => item.isEntityAlive && item.delayBeforeCanPickup <= 0)
|
||||||
|
if (items.nonEmpty) {
|
||||||
|
val item = items(world.rand.nextInt(items.size))
|
||||||
|
val stack = item.getEntityItem
|
||||||
|
val size = stack.stackSize
|
||||||
|
item.onCollideWithPlayer(owner.player)
|
||||||
|
if (stack.stackSize < size || item.isDead) {
|
||||||
|
context.pause(Settings.get.suckDelay)
|
||||||
|
return result(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
private def pickupBounds = {
|
||||||
|
val player = owner.player
|
||||||
|
val x = player.posX
|
||||||
|
val y = player.posY
|
||||||
|
val z = player.posZ
|
||||||
|
AxisAlignedBB.getBoundingBox(
|
||||||
|
x - pickupRadius, y - pickupRadius, z - pickupRadius,
|
||||||
|
x + pickupRadius, y + pickupRadius, z + pickupRadius)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package li.cil.oc.server.driver.item
|
||||||
|
|
||||||
|
import li.cil.oc.api
|
||||||
|
import li.cil.oc.api.driver.{Container, Slot}
|
||||||
|
import li.cil.oc.api.machine.Robot
|
||||||
|
import li.cil.oc.common.InventorySlots.Tier
|
||||||
|
import li.cil.oc.server.component
|
||||||
|
import net.minecraft.item.ItemStack
|
||||||
|
|
||||||
|
object UpgradeTractorBeam extends Item {
|
||||||
|
override def worksWith(stack: ItemStack) = isOneOf(stack, api.Items.get("tractorBeamUpgrade"))
|
||||||
|
|
||||||
|
override def createEnvironment(stack: ItemStack, container: Container) = container match {
|
||||||
|
case robot: Robot => new component.UpgradeTractorBeam(robot)
|
||||||
|
case _ => null
|
||||||
|
}
|
||||||
|
|
||||||
|
override def slot(stack: ItemStack) = Slot.Upgrade
|
||||||
|
|
||||||
|
override def tier(stack: ItemStack) = Tier.Three
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user