Added tractor beam upgrade (item magnet).

This commit is contained in:
Florian Nücke 2014-07-06 21:03:45 +02:00
parent 232f5fad61
commit a9efeb6b26
10 changed files with 109 additions and 1 deletions

Binary file not shown.

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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")
} }

View File

@ -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) {

View File

@ -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")
}
}

View File

@ -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)
}
}

View File

@ -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
}