From cbb08e3b1c19740c9a7262c1c271e548e3678a3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Tue, 16 Sep 2014 16:50:40 +0200 Subject: [PATCH] Piston upgrade. Seems to work. For the most part. --- assets/items.psd | Bin 499423 -> 501001 bytes src/main/resources/application.conf | 3 ++ .../assets/opencomputers/lang/de_DE.lang | 4 ++- .../assets/opencomputers/lang/en_US.lang | 2 ++ .../opencomputers/recipes/default.recipes | 5 +++ .../textures/items/UpgradePiston.png | Bin 0 -> 437 bytes src/main/scala/li/cil/oc/Items.scala | 3 ++ src/main/scala/li/cil/oc/Settings.scala | 1 + src/main/scala/li/cil/oc/common/Proxy.scala | 1 + .../li/cil/oc/common/item/UpgradePiston.scala | 3 ++ .../oc/server/component/UpgradePiston.scala | 32 ++++++++++++++++++ .../component/machine/luac/ComputerAPI.scala | 1 - .../oc/server/driver/item/UpgradePiston.scala | 18 ++++++++++ 13 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/assets/opencomputers/textures/items/UpgradePiston.png create mode 100644 src/main/scala/li/cil/oc/common/item/UpgradePiston.scala create mode 100644 src/main/scala/li/cil/oc/server/component/UpgradePiston.scala create mode 100644 src/main/scala/li/cil/oc/server/driver/item/UpgradePiston.scala diff --git a/assets/items.psd b/assets/items.psd index 47b19275793d014d136b639e3c6c4d619b44a7bf..af438d55b438094b1794d10519b212602a3683c1 100644 GIT binary patch delta 11872 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 E2P2Am1ONa4 delta 11231 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 literal 0 HcmV?d00001 diff --git a/src/main/scala/li/cil/oc/Items.scala b/src/main/scala/li/cil/oc/Items.scala index 900f0e8f1..5d1df6f9c 100644 --- a/src/main/scala/li/cil/oc/Items.scala +++ b/src/main/scala/li/cil/oc/Items.scala @@ -260,5 +260,8 @@ object Items extends ItemAPI { // 1.3.? registerItem(new item.TabletCase(multi), "tabletCase") + + // 1.3.5 + Recipes.addItem(new item.UpgradePiston(multi), "pistonUpgrade", "oc:pistonUpgrade") } } \ No newline at end of file diff --git a/src/main/scala/li/cil/oc/Settings.scala b/src/main/scala/li/cil/oc/Settings.scala index d1c07a116..06ff76eca 100644 --- a/src/main/scala/li/cil/oc/Settings.scala +++ b/src/main/scala/li/cil/oc/Settings.scala @@ -171,6 +171,7 @@ class Settings(config: Config) { val robotComplexityCost = config.getDouble("power.cost.robotAssemblyComplexity") max 0 val disassemblerItemCost = config.getDouble("power.cost.disassemblerPerItem") max 0 val chunkloaderCost = config.getDouble("power.cost.chunkloaderCost") max 0 + val pistonCost = config.getDouble("power.cost.pistonPush") max 0 // power.value private val valueBuildCraft = config.getDouble("power.value.BuildCraft") diff --git a/src/main/scala/li/cil/oc/common/Proxy.scala b/src/main/scala/li/cil/oc/common/Proxy.scala index 8749d4ad3..4641909f3 100644 --- a/src/main/scala/li/cil/oc/common/Proxy.scala +++ b/src/main/scala/li/cil/oc/common/Proxy.scala @@ -95,6 +95,7 @@ class Proxy { api.Driver.add(driver.item.UpgradeInventory) api.Driver.add(driver.item.UpgradeInventoryController) api.Driver.add(driver.item.UpgradeNavigation) + api.Driver.add(driver.item.UpgradePiston) api.Driver.add(driver.item.UpgradeSign) api.Driver.add(driver.item.UpgradeSolarGenerator) api.Driver.add(driver.item.UpgradeTractorBeam) diff --git a/src/main/scala/li/cil/oc/common/item/UpgradePiston.scala b/src/main/scala/li/cil/oc/common/item/UpgradePiston.scala new file mode 100644 index 000000000..49e50ec54 --- /dev/null +++ b/src/main/scala/li/cil/oc/common/item/UpgradePiston.scala @@ -0,0 +1,3 @@ +package li.cil.oc.common.item + +class UpgradePiston(val parent: Delegator) extends Delegate with ItemTier diff --git a/src/main/scala/li/cil/oc/server/component/UpgradePiston.scala b/src/main/scala/li/cil/oc/server/component/UpgradePiston.scala new file mode 100644 index 000000000..4577cda12 --- /dev/null +++ b/src/main/scala/li/cil/oc/server/component/UpgradePiston.scala @@ -0,0 +1,32 @@ +package li.cil.oc.server.component + +import cpw.mods.fml.relauncher.ReflectionHelper +import li.cil.oc.Settings +import li.cil.oc.api.driver.Container +import li.cil.oc.api.network.{Arguments, Callback, Context, Visibility} +import li.cil.oc.api.{Network, Rotatable} +import li.cil.oc.common.component +import net.minecraft.block.{Block, BlockPistonBase} +import net.minecraft.world.World + +class UpgradePiston(val container: Rotatable with Container) extends component.ManagedComponent { + val node = Network.newNode(this, Visibility.Network). + withComponent("piston"). + withConnector(). + create() + + private lazy val tryExtend = ReflectionHelper.findMethod(classOf[BlockPistonBase], null, Array("tryExtend", "func_72115_j", "f"), classOf[World], classOf[Int], classOf[Int], classOf[Int], classOf[Int]) + + @Callback(doc = """function(side:number):boolean -- Tries to push the block in front of the container of the upgrade.""") + def push(context: Context, args: Arguments): Array[AnyRef] = { + val (x, y, z) = (math.floor(container.xPosition).toInt, math.floor(container.yPosition).toInt, math.floor(container.zPosition).toInt) + val (bx, by, bz) = (x + container.facing.offsetX, y + container.facing.offsetY, z + container.facing.offsetZ) + if (!container.world.isAirBlock(bx, by, bz) && node.tryChangeBuffer(-Settings.get.pistonCost) && tryExtend.invoke(Block.pistonBase, container.world, x.underlying(), y.underlying(), z.underlying(), container.facing.ordinal.underlying()).asInstanceOf[Boolean]) { + container.world.setBlockToAir(bx, by, bz) + container.world.playSoundEffect(container.xPosition, container.yPosition, container.zPosition, "tile.piston.out", 0.5f, container.world.rand.nextFloat() * 0.25f + 0.6f) + context.pause(0.5) + result(true) + } + else result(false) + } +} diff --git a/src/main/scala/li/cil/oc/server/component/machine/luac/ComputerAPI.scala b/src/main/scala/li/cil/oc/server/component/machine/luac/ComputerAPI.scala index 48cf30670..bfac65058 100644 --- a/src/main/scala/li/cil/oc/server/component/machine/luac/ComputerAPI.scala +++ b/src/main/scala/li/cil/oc/server/component/machine/luac/ComputerAPI.scala @@ -1,6 +1,5 @@ package li.cil.oc.server.component.machine.luac -import com.naef.jnlua.LuaState import li.cil.oc.Settings import li.cil.oc.api.network.Connector import li.cil.oc.server.component.machine.NativeLuaArchitecture diff --git a/src/main/scala/li/cil/oc/server/driver/item/UpgradePiston.scala b/src/main/scala/li/cil/oc/server/driver/item/UpgradePiston.scala new file mode 100644 index 000000000..062163f37 --- /dev/null +++ b/src/main/scala/li/cil/oc/server/driver/item/UpgradePiston.scala @@ -0,0 +1,18 @@ +package li.cil.oc.server.driver.item + +import li.cil.oc.api +import li.cil.oc.api.Rotatable +import li.cil.oc.api.driver.{Container, Slot} +import li.cil.oc.server.component +import net.minecraft.item.ItemStack + +object UpgradePiston extends Item { + override def worksWith(stack: ItemStack) = isOneOf(stack, api.Items.get("pistonUpgrade")) + + override def createEnvironment(stack: ItemStack, container: Container) = container match { + case rotatable: Rotatable with Container => new component.UpgradePiston(rotatable) + case _ => null + } + + override def slot(stack: ItemStack) = Slot.Upgrade +}