From 71ab89b64eee5332e3d7602566baf5d6c82310a7 Mon Sep 17 00:00:00 2001 From: Daydrain Date: Sat, 22 Aug 2026 10:40:07 +0200 Subject: [PATCH 1/3] update OC_SC command to add T4 --- .../li/cil/oc/server/command/SpawnComputerCommand.scala | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/scala/li/cil/oc/server/command/SpawnComputerCommand.scala b/src/main/scala/li/cil/oc/server/command/SpawnComputerCommand.scala index 6a9354c656..cff3c50cbd 100644 --- a/src/main/scala/li/cil/oc/server/command/SpawnComputerCommand.scala +++ b/src/main/scala/li/cil/oc/server/command/SpawnComputerCommand.scala @@ -57,7 +57,7 @@ object SpawnComputerCommand { place(casePos, Constants.BlockName.CaseCreative) rotateProperly(casePos) - place(screenPos, Constants.BlockName.ScreenTier2) + place(screenPos, Constants.BlockName.ScreenTier4) rotateProperly(screenPos).foreach { rotatable => if (rotatable.pitch == Direction.UP || rotatable.pitch == Direction.DOWN) { rotatable.pitch = Direction.NORTH @@ -80,9 +80,8 @@ object SpawnComputerCommand { case computer: CaseBlockEntity => val components = Seq( apu, - api.Items.get(Constants.ItemName.RAMTier6).createItemStack(1), - api.Items.get(Constants.ItemName.RAMTier6).createItemStack(1), - api.Items.get(Constants.ItemName.HDDTier3).createItemStack(1), + api.Items.get(Constants.ItemName.RAMCreative).createItemStack(1), + api.Items.get(Constants.ItemName.SSDTier3).createItemStack(1), api.Items.get(Constants.ItemName.LuaBios).createItemStack(1), api.Items.get(Constants.ItemName.OpenOS).createItemStack(1) ) From f6e3f82977ae372ea46d914a92cfe72a3d6a8f97 Mon Sep 17 00:00:00 2001 From: Daydrain Date: Sat, 22 Aug 2026 11:03:22 +0200 Subject: [PATCH 2/3] add T4 in creative template --- .../oc/common/template/DroneTemplate.scala | 47 +++++++-------- .../template/MicrocontrollerTemplate.scala | 51 +++++++++-------- .../oc/common/template/RobotTemplate.scala | 57 ++++++++++--------- .../oc/common/template/TabletTemplate.scala | 51 +++++++++-------- 4 files changed, 105 insertions(+), 101 deletions(-) diff --git a/src/main/scala/li/cil/oc/common/template/DroneTemplate.scala b/src/main/scala/li/cil/oc/common/template/DroneTemplate.scala index 4c941533d5..48432eed52 100644 --- a/src/main/scala/li/cil/oc/common/template/DroneTemplate.scala +++ b/src/main/scala/li/cil/oc/common/template/DroneTemplate.scala @@ -15,6 +15,7 @@ import net.minecraft.world.item.ItemStack import scala.collection.JavaConverters.asJavaIterable import scala.collection.convert.ImplicitConversionsToJava._ +import scala.jdk.CollectionConverters.IterableHasAsJava object DroneTemplate extends Template { override protected val suggestedComponents = Array( @@ -68,7 +69,7 @@ object DroneTemplate extends Template { Tier.Two, Tier.One ), - asJavaIterable(Iterable( + Iterable( (Slot.Card, Tier.Two), (Slot.Card, Tier.One), null, @@ -76,7 +77,7 @@ object DroneTemplate extends Template { (Slot.Memory, Tier.One), null, (Slot.EEPROM, Tier.Any) - ).map(toPair))) + ).map(toPair).asJava) // Tier 2 api.IMC.registerAssemblerTemplate( @@ -91,7 +92,7 @@ object DroneTemplate extends Template { Tier.Two, Tier.One ), - asJavaIterable(Iterable( + Iterable( (Slot.Card, Tier.Two), (Slot.Card, Tier.Two), null, @@ -99,7 +100,7 @@ object DroneTemplate extends Template { (Slot.Memory, Tier.One), (Slot.Memory, Tier.One), (Slot.EEPROM, Tier.Any) - ).map(toPair))) + ).map(toPair).asJava) // Tier 2 api.IMC.registerAssemblerTemplate( @@ -115,7 +116,7 @@ object DroneTemplate extends Template { Tier.Two, Tier.One ), - asJavaIterable(Iterable( + Iterable( (Slot.Card, Tier.Three), (Slot.Card, Tier.Two), null, @@ -123,7 +124,7 @@ object DroneTemplate extends Template { (Slot.Memory, Tier.Two), (Slot.Memory, Tier.One), (Slot.EEPROM, Tier.Any) - ).map(toPair))) + ).map(toPair).asJava) // Creative api.IMC.registerAssemblerTemplate( @@ -134,25 +135,25 @@ object DroneTemplate extends Template { hostClass, null, Array( - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four ), - asJavaIterable(Iterable( - (Slot.Card, Tier.Three), - (Slot.Card, Tier.Three), - (Slot.Card, Tier.Three), - (Slot.CPU, Tier.Three), - (Slot.Memory, Tier.Three), - (Slot.Memory, Tier.Three), + Iterable( + (Slot.Card, Tier.Four), + (Slot.Card, Tier.Four), + (Slot.Card, Tier.Four), + (Slot.CPU, Tier.Four), + (Slot.Memory, Tier.Four), + (Slot.Memory, Tier.Four), (Slot.EEPROM, Tier.Any) - ).map(toPair))) + ).map(toPair).asJava) // Disassembler api.IMC.registerDisassemblerTemplate( diff --git a/src/main/scala/li/cil/oc/common/template/MicrocontrollerTemplate.scala b/src/main/scala/li/cil/oc/common/template/MicrocontrollerTemplate.scala index 4fc9be45ce..cdeabf6431 100644 --- a/src/main/scala/li/cil/oc/common/template/MicrocontrollerTemplate.scala +++ b/src/main/scala/li/cil/oc/common/template/MicrocontrollerTemplate.scala @@ -14,6 +14,7 @@ import net.minecraft.world.item.ItemStack import scala.collection.JavaConverters.asJavaIterable import scala.collection.convert.ImplicitConversionsToJava._ +import scala.jdk.CollectionConverters.IterableHasAsJava object MicrocontrollerTemplate extends Template { override protected val suggestedComponents = Array( @@ -24,7 +25,7 @@ object MicrocontrollerTemplate extends Template { def selectTier1(stack: ItemStack): Boolean = api.Items.get(stack) == api.Items.get(Constants.ItemName.MicrocontrollerCaseTier1) def selectTier2(stack: ItemStack): Boolean = api.Items.get(stack) == api.Items.get(Constants.ItemName.MicrocontrollerCaseTier2) - + def selectTier3(stack: ItemStack): Boolean = api.Items.get(stack) == api.Items.get(Constants.ItemName.MicrocontrollerCaseTier3) def selectTierCreative(stack: ItemStack): Boolean = api.Items.get(stack) == api.Items.get(Constants.ItemName.MicrocontrollerCaseCreative) @@ -64,7 +65,7 @@ object MicrocontrollerTemplate extends Template { Array( Tier.Two ), - asJavaIterable(Iterable( + Iterable( (Slot.Card, Tier.One), (Slot.Card, Tier.One), null, @@ -72,7 +73,7 @@ object MicrocontrollerTemplate extends Template { (Slot.Memory, Tier.One), null, (Slot.EEPROM, Tier.Any) - ).map(toPair))) + ).map(toPair).asJava) // Tier 2 api.IMC.registerAssemblerTemplate( @@ -85,7 +86,7 @@ object MicrocontrollerTemplate extends Template { Array( Tier.Three ), - asJavaIterable(Iterable( + Iterable( (Slot.Card, Tier.Two), (Slot.Card, Tier.One), null, @@ -93,7 +94,7 @@ object MicrocontrollerTemplate extends Template { (Slot.Memory, Tier.One), (Slot.Memory, Tier.One), (Slot.EEPROM, Tier.Any) - ).map(toPair))) + ).map(toPair).asJava) // Tier 3 api.IMC.registerAssemblerTemplate( @@ -106,7 +107,7 @@ object MicrocontrollerTemplate extends Template { Array( Tier.Four ), - asJavaIterable(Iterable( + Iterable( (Slot.Card, Tier.Two), (Slot.Card, Tier.Two), null, @@ -114,8 +115,8 @@ object MicrocontrollerTemplate extends Template { (Slot.Memory, Tier.Two), (Slot.Memory, Tier.One), (Slot.EEPROM, Tier.Any) - ).map(toPair))) - + ).map(toPair).asJava) + // Creative api.IMC.registerAssemblerTemplate( "Microcontroller (Creative)", @@ -125,25 +126,25 @@ object MicrocontrollerTemplate extends Template { hostClass, null, Array( - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four ), - asJavaIterable(Iterable( - (Slot.Card, Tier.Three), - (Slot.Card, Tier.Three), - (Slot.Card, Tier.Three), - (Slot.CPU, Tier.Three), - (Slot.Memory, Tier.Three), - (Slot.Memory, Tier.Three), + Iterable( + (Slot.Card, Tier.Four), + (Slot.Card, Tier.Four), + (Slot.Card, Tier.Four), + (Slot.CPU, Tier.Four), + (Slot.Memory, Tier.Four), + (Slot.Memory, Tier.Four), (Slot.EEPROM, Tier.Any) - ).map(toPair))) + ).map(toPair).asJava) // Disassembler api.IMC.registerDisassemblerTemplate( diff --git a/src/main/scala/li/cil/oc/common/template/RobotTemplate.scala b/src/main/scala/li/cil/oc/common/template/RobotTemplate.scala index 2a78d5d26c..63f7df08d5 100644 --- a/src/main/scala/li/cil/oc/common/template/RobotTemplate.scala +++ b/src/main/scala/li/cil/oc/common/template/RobotTemplate.scala @@ -14,6 +14,7 @@ import net.minecraft.world.item.ItemStack import scala.collection.JavaConverters.asJavaIterable import scala.collection.convert.ImplicitConversionsToJava._ +import scala.jdk.CollectionConverters.IterableHasAsJava object RobotTemplate extends Template { override protected def hostClass = classOf[internal.Robot] @@ -70,7 +71,7 @@ object RobotTemplate extends Template { Tier.One, Tier.One ), - asJavaIterable(Iterable( + Iterable( (Slot.Card, Tier.One), null, null, @@ -79,7 +80,7 @@ object RobotTemplate extends Template { (Slot.Memory, Tier.One), (Slot.EEPROM, Tier.Any), (Slot.HDD, Tier.One) - ).map(toPair))) + ).map(toPair).asJava) // Tier 2 api.IMC.registerAssemblerTemplate( @@ -101,7 +102,7 @@ object RobotTemplate extends Template { Tier.One, Tier.One ), - asJavaIterable(Iterable( + Iterable( (Slot.Card, Tier.Two), (Slot.Card, Tier.One), null, @@ -110,7 +111,7 @@ object RobotTemplate extends Template { (Slot.Memory, Tier.Two), (Slot.EEPROM, Tier.Any), (Slot.HDD, Tier.Two) - ).map(toPair))) + ).map(toPair).asJava) // Tier 3 api.IMC.registerAssemblerTemplate( @@ -135,7 +136,7 @@ object RobotTemplate extends Template { Tier.One, Tier.One ), - asJavaIterable(Iterable( + Iterable( (Slot.Card, Tier.Three), (Slot.Card, Tier.Two), (Slot.Card, Tier.Two), @@ -145,7 +146,7 @@ object RobotTemplate extends Template { (Slot.EEPROM, Tier.Any), (Slot.HDD, Tier.Three), (Slot.HDD, Tier.Two) - ).map(toPair))) + ).map(toPair).asJava) // Creative api.IMC.registerAssemblerTemplate( @@ -155,32 +156,32 @@ object RobotTemplate extends Template { "li.cil.oc.common.template.RobotTemplate.assemble", hostClass, Array( - Tier.Three, - Tier.Three, - Tier.Three + Tier.Four, + Tier.Four, + Tier.Four ), Array( - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four ), - asJavaIterable(Iterable( - (Slot.Card, Tier.Three), - (Slot.Card, Tier.Three), - (Slot.Card, Tier.Three), - (Slot.CPU, Tier.Three), - (Slot.Memory, Tier.Three), - (Slot.Memory, Tier.Three), + Iterable( + (Slot.Card, Tier.Four), + (Slot.Card, Tier.Four), + (Slot.Card, Tier.Four), + (Slot.CPU, Tier.Four), + (Slot.Memory, Tier.Four), + (Slot.Memory, Tier.Four), (Slot.EEPROM, Tier.Any), - (Slot.HDD, Tier.Three), - (Slot.HDD, Tier.Three) - ).map(toPair))) + (Slot.HDD, Tier.Four), + (Slot.HDD, Tier.Four) + ).map(toPair).asJava) // Disassembler api.IMC.registerDisassemblerTemplate( diff --git a/src/main/scala/li/cil/oc/common/template/TabletTemplate.scala b/src/main/scala/li/cil/oc/common/template/TabletTemplate.scala index 74540f27e8..b16b1ab32b 100644 --- a/src/main/scala/li/cil/oc/common/template/TabletTemplate.scala +++ b/src/main/scala/li/cil/oc/common/template/TabletTemplate.scala @@ -13,6 +13,7 @@ import net.minecraft.world.item.ItemStack import scala.collection.JavaConverters.asJavaIterable import scala.collection.convert.ImplicitConversionsToJava._ +import scala.jdk.CollectionConverters.IterableHasAsJava object TabletTemplate extends Template { override protected val suggestedComponents = Array( @@ -77,7 +78,7 @@ object TabletTemplate extends Template { Tier.Two, Tier.One ), - asJavaIterable(Iterable( + Iterable( (Slot.Card, Tier.Two), (Slot.Card, Tier.Two), null, @@ -86,7 +87,7 @@ object TabletTemplate extends Template { (Slot.Memory, Tier.Two), (Slot.EEPROM, Tier.Any), (Slot.HDD, Tier.Two) - ).map(toPair))) + ).map(toPair).asJava) // Tier 2 api.IMC.registerAssemblerTemplate( @@ -103,7 +104,7 @@ object TabletTemplate extends Template { Tier.Two, Tier.Two ), - asJavaIterable(Iterable( + Iterable( (Slot.Card, Tier.Three), (Slot.Card, Tier.Two), null, @@ -112,7 +113,7 @@ object TabletTemplate extends Template { (Slot.Memory, Tier.Two), (Slot.EEPROM, Tier.Any), (Slot.HDD, Tier.Two) - ).map(toPair))) + ).map(toPair).asJava) // Tier 3 api.IMC.registerAssemblerTemplate( @@ -129,7 +130,7 @@ object TabletTemplate extends Template { Tier.Three, Tier.Three ), - asJavaIterable(Iterable( + Iterable( (Slot.Card, Tier.Four), (Slot.Card, Tier.Three), null, @@ -138,7 +139,7 @@ object TabletTemplate extends Template { (Slot.Memory, Tier.Three), (Slot.EEPROM, Tier.Any), (Slot.HDD, Tier.Three) - ).map(toPair))) + ).map(toPair).asJava) // Creative api.IMC.registerAssemblerTemplate( @@ -148,29 +149,29 @@ object TabletTemplate extends Template { "li.cil.oc.common.template.TabletTemplate.assemble", hostClass, Array( - Tier.Three + Tier.Four ), Array( - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three, - Tier.Three + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four, + Tier.Four ), - asJavaIterable(Iterable( - (Slot.Card, Tier.Three), - (Slot.Card, Tier.Three), - (Slot.Card, Tier.Three), - (Slot.CPU, Tier.Three), - (Slot.Memory, Tier.Three), - (Slot.Memory, Tier.Three), + Iterable( + (Slot.Card, Tier.Four), + (Slot.Card, Tier.Four), + (Slot.Card, Tier.Four), + (Slot.CPU, Tier.Four), + (Slot.Memory, Tier.Four), + (Slot.Memory, Tier.Four), (Slot.EEPROM, Tier.Any), - (Slot.HDD, Tier.Three) - ).map(toPair))) + (Slot.HDD, Tier.Four) + ).map(toPair).asJava) // Disassembler api.IMC.registerDisassemblerTemplate( From 6ef7986899ab5e9dbca4d46d5a7fec0b88fe9e9c Mon Sep 17 00:00:00 2001 From: Daydrain Date: Sun, 23 Aug 2026 15:18:09 +0200 Subject: [PATCH 3/3] add argument on the /os_sc command (no default one) to select screen tier --- .../server/command/SpawnComputerCommand.scala | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/scala/li/cil/oc/server/command/SpawnComputerCommand.scala b/src/main/scala/li/cil/oc/server/command/SpawnComputerCommand.scala index cff3c50cbd..9d6b6d96d4 100644 --- a/src/main/scala/li/cil/oc/server/command/SpawnComputerCommand.scala +++ b/src/main/scala/li/cil/oc/server/command/SpawnComputerCommand.scala @@ -1,6 +1,8 @@ package li.cil.oc.server.command import com.mojang.brigadier.CommandDispatcher +import com.mojang.brigadier.arguments.IntegerArgumentType +import com.mojang.brigadier.context.CommandContext import li.cil.oc.{Constants, api} import li.cil.oc.common.blockentity.{Case => CaseBlockEntity} import li.cil.oc.common.blockentity.traits.Rotatable @@ -17,14 +19,20 @@ object SpawnComputerCommand { def register(dispatcher: CommandDispatcher[CommandSourceStack]): Unit = { def command(name: String) = Commands.literal(name) .requires(CommandHandler.canUse(_, 2)) - .executes(context => execute(context.getSource)) + .then( + Commands.argument("TierScreen (1-4)", IntegerArgumentType.integer(1, 4)) + .executes(context => execute(context)) + ) dispatcher.register(command("oc_spawnComputer")) dispatcher.register(command("oc_spawncomputer")) dispatcher.register(command("oc_sc")) } - private def execute(source: CommandSourceStack): Int = { + private def execute(context: CommandContext[CommandSourceStack]): Int = { + val TierScreen = IntegerArgumentType.getInteger(context, "TierScreen (1-4)") + + val source = context.getSource val player = source.getPlayerOrException val level = player.serverLevel() @@ -57,7 +65,16 @@ object SpawnComputerCommand { place(casePos, Constants.BlockName.CaseCreative) rotateProperly(casePos) - place(screenPos, Constants.BlockName.ScreenTier4) + if (TierScreen == 1) { + place(screenPos, Constants.BlockName.ScreenTier1) + } else if (TierScreen == 2) { + place(screenPos, Constants.BlockName.ScreenTier2) + } else if (TierScreen == 3) { + place(screenPos, Constants.BlockName.ScreenTier3) + } else if (TierScreen == 4) { + place(screenPos, Constants.BlockName.ScreenTier4) + } + rotateProperly(screenPos).foreach { rotatable => if (rotatable.pitch == Direction.UP || rotatable.pitch == Direction.DOWN) { rotatable.pitch = Direction.NORTH