added block placer upgrade, still does not work properly in all cases

This commit is contained in:
Nico 2014-04-05 18:54:10 +02:00
parent c0dd2fe113
commit 930e97c884
7 changed files with 72 additions and 3 deletions

View File

@ -118,6 +118,11 @@ navigationUpgrade {
["oc:circuitTier3", {item=map, subID=any}, "oc:circuitTier3"]
[ingotGold, potion, ingotGold]]
}
blockPlacerAirUpgrade {
input: [[ingotIron, enderPearl, ingotIron]
["oc:circuitTier1", pistonStickyBase, "oc:circuitTier1"]
[ingotIron, enderPearl, ingotIron]]
}
signUpgrade {
input: [[ingotIron, dyePowder, ingotIron]
["oc:circuitTier1", stickWood, "oc:circuitTier1"]

View File

@ -45,6 +45,7 @@ object Items {
var upgradeNavigation: item.UpgradeNavigation = _
var upgradeSign: item.UpgradeSign = _
var upgradeSolarGenerator: item.UpgradeSolarGenerator = _
var upgradeBlockPlacerAir: item.UpgradeBlockPlacerAir = _
// ----------------------------------------------------------------------- //
// Crafting
@ -95,6 +96,7 @@ object Items {
upgradeCrafting = Recipes.addItemDelegate(new item.UpgradeCrafting(multi), "craftingUpgrade")
upgradeGenerator = Recipes.addItemDelegate(new item.UpgradeGenerator(multi), "generatorUpgrade")
upgradeBlockPlacerAir = Recipes.addItemDelegate(new item.UpgradeBlockPlacerAir(multi), "blockPlacerAirUpgrade")
ironNugget = new item.IronNugget(multi)

View File

@ -63,6 +63,7 @@ class Proxy {
api.Driver.add(driver.item.UpgradeNavigation)
api.Driver.add(driver.item.UpgradeSign)
api.Driver.add(driver.item.UpgradeSolarGenerator)
api.Driver.add(driver.item.UpgradeBlockPlacerAir)
api.Driver.add(driver.item.WirelessNetworkCard)
if (Mods.ComputerCraft15.isAvailable) {

View File

@ -0,0 +1,25 @@
package li.cil.oc.common.item
import java.util
import net.minecraft.item.{ItemStack, EnumRarity}
import net.minecraft.entity.player.EntityPlayer
import li.cil.oc.Settings
import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister
class UpgradeBlockPlacerAir(val parent: Delegator) extends Delegate {
val unlocalizedName = "UpgradeBlockPlacerAir"
override def rarity = EnumRarity.epic
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_block_placer_air")
}
}

View File

@ -0,0 +1,17 @@
package li.cil.oc.server.component
import net.minecraft.tileentity.TileEntity
import li.cil.oc.api.Network
import li.cil.oc.api.network.Visibility
class UpgradeBlockPlacerAir(val owner: TileEntity) extends ManagedComponent {
val node = Network.newNode(this, Visibility.Network).
withComponent("airplacer").
create()
// ----------------------------------------------------------------------- //
override val canUpdate = false
}

View File

@ -1,12 +1,11 @@
package li.cil.oc.server.component.robot
import li.cil.oc.api
import li.cil.oc.{Items, api, OpenComputers, Settings}
import li.cil.oc.api.network._
import li.cil.oc.common.tileentity
import li.cil.oc.server.component.ManagedComponent
import li.cil.oc.server.{PacketSender => ServerPacketSender}
import li.cil.oc.util.ExtendedNBT._
import li.cil.oc.{OpenComputers, Settings}
import net.minecraft.block.{BlockFluid, Block}
import net.minecraft.entity.item.{EntityMinecart, EntityMinecartContainer, EntityItem}
import net.minecraft.entity.{EntityLivingBase, Entity}
@ -245,7 +244,7 @@ class Robot(val robot: tileentity.Robot) extends ManagedComponent {
case Some(hit) if hit.typeOfHit == EnumMovingObjectType.TILE =>
val (bx, by, bz, hx, hy, hz) = clickParamsFromHit(hit)
player.placeBlock(robot.selectedSlot, bx, by, bz, hit.sideHit, hx, hy, hz)
case None if Settings.get.canPlaceInAir && player.closestEntity[Entity]().isEmpty =>
case None if (Items.multi.subItem(robot.getStackInSlot(3)) == Items.upgradeBlockPlacerAir) && player.closestEntity[Entity]().isEmpty =>
val (bx, by, bz, hx, hy, hz) = clickParamsFromFacing(facing, side)
player.placeBlock(robot.selectedSlot, bx, by, bz, side.getOpposite.ordinal, hx, hy, hz)
case _ => false

View File

@ -0,0 +1,20 @@
package li.cil.oc.server.driver.item
import li.cil.oc.Items
import li.cil.oc.api.driver.Slot
import li.cil.oc.api.machine.Robot
import li.cil.oc.server.component
import net.minecraft.item.ItemStack
import net.minecraft.tileentity.TileEntity
object UpgradeBlockPlacerAir extends Item {
override def worksWith(stack: ItemStack) = isOneOf(stack, Items.upgradeBlockPlacerAir)
override def createEnvironment(stack: ItemStack, container: TileEntity) =
container match {
case robot: Robot => new component.UpgradeBlockPlacerAir(robot)
case _ => null
}
override def slot(stack: ItemStack) = Slot.Upgrade
}