Merge branch 'master-MC1.8.8' of github.com:MightyPirates/OpenComputers into OC1.5-MC1.8.8

# Conflicts:
#	build.gradle
#	build.properties
#	src/main/scala/li/cil/oc/integration/tis3d/SerialInterfaceProviderAdapter.scala
This commit is contained in:
Florian Nücke 2015-12-29 23:52:48 +01:00
commit fa2273acd0
23 changed files with 125 additions and 89 deletions

View File

@ -72,18 +72,6 @@ repositories {
name = "TIS-3D" name = "TIS-3D"
url = "http://maven.cil.li/" url = "http://maven.cil.li/"
} }
maven {
name = "chickenbones"
url = "http://chickenbones.net/maven/"
}
maven {
name = "mobius"
url = "http://mobiusstrip.eu/maven"
}
maven {
name = "fallback"
url = "http://maven.cil.li/"
}
maven { maven {
url "http://dvs1.progwml6.com/files/maven" url "http://dvs1.progwml6.com/files/maven"
} }
@ -203,6 +191,7 @@ dependencies {
provided "com.bluepowermod:BluePower:${config.bluepower.version}:deobf" provided "com.bluepowermod:BluePower:${config.bluepower.version}:deobf"
provided "com.gregoriust.gregtech:gregtech_${config.minecraft.version}:${config.gt.version}:dev" provided "com.gregoriust.gregtech:gregtech_${config.minecraft.version}:${config.gt.version}:dev"
provided "igwmod:IGW-Mod-1.7.10:${config.igwmod.version}:userdev" provided "igwmod:IGW-Mod-1.7.10:${config.igwmod.version}:userdev"
provided "li.cil.tis3d:TIS-3D:${config.tis3d.version}:dev"
provided "mcp.mobius.waila:Waila:${config.waila.version}_${config.minecraft.version}:dev" provided "mcp.mobius.waila:Waila:${config.waila.version}_${config.minecraft.version}:dev"
provided "net.industrial-craft:industrialcraft-2:${config.ic2.version}:dev" provided "net.industrial-craft:industrialcraft-2:${config.ic2.version}:dev"
provided "net.sengir.forestry:forestry_${config.minecraft.version}:${config.forestry.version}:dev" provided "net.sengir.forestry:forestry_${config.minecraft.version}:${config.forestry.version}:dev"

View File

@ -28,7 +28,7 @@ gc.version=3.0.7
gt.version=5.04.06 gt.version=5.04.06
ic2.version=2.2.654-experimental ic2.version=2.2.654-experimental
igwmod.version=1.1.3-18 igwmod.version=1.1.3-18
jei.version=2.1.3.14 jei.version=2.12.0.51
mekanism.build=5 mekanism.build=5
mekanism.version=7.1.2 mekanism.version=7.1.2
mfr.cf=2229/626 mfr.cf=2229/626
@ -42,7 +42,7 @@ rc.cf=2219/321
rc.version=1.7.10-9.4.0.0 rc.version=1.7.10-9.4.0.0
redlogic.version=59.0.3 redlogic.version=59.0.3
rotc.version=V5c rotc.version=V5c
tis3d.version=MC1.8.8-0.7.0.68 tis3d.version=MC1.8.8-0.7.1.70
tmech.version=75.0afb56c tmech.version=75.0afb56c
re.version=3.0.0.342 re.version=3.0.0.342
waila.version=1.6.0_B1_1.8.1 waila.version=1.6.0_B1_1.8.1

View File

@ -0,0 +1,7 @@
# Adapter
![Freeeedooooooom!](block:OpenComputers:adapter)
The adapter's serial interface does not implement a hard-coded protocol. Instead, the protocol is defined by the software running on the computer controlling the adapter. Please refer to the component's API using an OpenComputers computer for specifics.
The adapter's serial interface has a small internal buffer for values passed along in either direction. Note that by default the adapter's serial interface does not read from the serial port. Reading has to be enabled from the component's API.

View File

Before

Width:  |  Height:  |  Size: 242 B

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 934 B

View File

@ -15,6 +15,7 @@
"EnderStorage", "EnderStorage",
"ForgeMultipart", "ForgeMultipart",
"IC2", "IC2",
"JEI",
"MineFactoryReloaded", "MineFactoryReloaded",
"ProjRed|Transmission", "ProjRed|Transmission",
"RedLogic", "RedLogic",

View File

@ -88,7 +88,6 @@ object Textures {
val UpgradeInventory = L("inventory_upgrade") val UpgradeInventory = L("inventory_upgrade")
val HologramEffect = L("hologram_effect") val HologramEffect = L("hologram_effect")
val Drone = L("drone") val Drone = L("drone")
val DroneItem = L("drone_item")
val Robot = L("robot") val Robot = L("robot")
override protected def basePath = "textures/model/%s.png" override protected def basePath = "textures/model/%s.png"
@ -97,26 +96,10 @@ object Textures {
} }
object Item extends TextureBundle { object Item extends TextureBundle {
val Floppy = Array( val DroneItem = L("drone")
L("floppy_dyeBlack"), val Robot = L("robot")
L("floppy_dyeRed"),
L("floppy_dyeGreen"),
L("floppy_dyeBrown"),
L("floppy_dyeBlue"),
L("floppy_dyePurple"),
L("floppy_dyeCyan"),
L("floppy_dyeLightGray"),
L("floppy_dyeGray"),
L("floppy_dyePink"),
L("floppy_dyeLime"),
L("floppy_dyeYellow"),
L("floppy_dyeLightBlue"),
L("floppy_dyeMagenta"),
L("floppy_dyeOrange"),
L("floppy_dyeWhite")
)
override protected def basePath = "items/%s.png" override protected def basePath = "items/%s"
override protected def loader(map: TextureMap, loc: ResourceLocation) = map.registerSprite(loc) override protected def loader(map: TextureMap, loc: ResourceLocation) = map.registerSprite(loc)
} }
@ -564,6 +547,7 @@ object Textures {
GUI.init(e.map) GUI.init(e.map)
Icons.init(e.map) Icons.init(e.map)
Model.init(e.map) Model.init(e.map)
Item.init(e.map)
Block.init(e.map) Block.init(e.map)
} }

View File

@ -15,7 +15,7 @@ object DroneModel extends SmartBlockModelBase with ISmartItemModel {
override def handleItemState(stack: ItemStack) = new ItemModel(stack) override def handleItemState(stack: ItemStack) = new ItemModel(stack)
protected def droneTexture = Textures.getSprite(Textures.Model.DroneItem) protected def droneTexture = Textures.getSprite(Textures.Item.DroneItem)
protected def Boxes = Array( protected def Boxes = Array(
makeBox(new Vec3(1f / 16f, 7f / 16f, 1f / 16f), new Vec3(7f / 16f, 8f / 16f, 7f / 16f)), makeBox(new Vec3(1f / 16f, 7f / 16f, 1f / 16f), new Vec3(7f / 16f, 8f / 16f, 7f / 16f)),
@ -26,15 +26,11 @@ object DroneModel extends SmartBlockModelBase with ISmartItemModel {
) )
class ItemModel(val stack: ItemStack) extends SmartBlockModelBase { class ItemModel(val stack: ItemStack) extends SmartBlockModelBase {
override protected def textureScale = 32f
override def getGeneralQuads = { override def getGeneralQuads = {
val faces = mutable.ArrayBuffer.empty[BakedQuad] val faces = mutable.ArrayBuffer.empty[BakedQuad]
faces ++= Boxes.flatMap(box => bakeQuads(box, Array.fill(6)(droneTexture), None)) faces ++= Boxes.flatMap(box => bakeQuads(box, Array.fill(6)(droneTexture), None))
Textures.bind(Textures.Model.DroneItem)
bufferAsJavaList(faces) bufferAsJavaList(faces)
} }
} }

View File

@ -35,7 +35,7 @@ object RobotModel extends SmartBlockModelBase with ISmartItemModel {
// I don't know why this is super-bright when using 0xFF888888 :/ // I don't know why this is super-bright when using 0xFF888888 :/
private val tint = 0xFF555555 private val tint = 0xFF555555
protected def robotTexture = Textures.getSprite(Textures.Model.Robot) protected def robotTexture = Textures.getSprite(Textures.Item.Robot)
private def interpolate(v0: (Float, Float, Float, Float, Float), v1: (Float, Float, Float, Float, Float)) = private def interpolate(v0: (Float, Float, Float, Float, Float), v1: (Float, Float, Float, Float, Float)) =
(v0._1 * 0.5f + v1._1 * 0.5f, (v0._1 * 0.5f + v1._1 * 0.5f,
@ -46,13 +46,13 @@ object RobotModel extends SmartBlockModelBase with ISmartItemModel {
private def quad(verts: (Float, Float, Float, Float, Float)*) = { private def quad(verts: (Float, Float, Float, Float, Float)*) = {
val added = interpolate(verts.last, verts.head) val added = interpolate(verts.last, verts.head)
(verts :+ added).map { (verts :+ added).flatMap {
case ((x, y, z, u, v)) => rawData( case ((x, y, z, u, v)) => rawData(
(x - 0.5f) * 1.4f + 0.5f, (x - 0.5f) * 1.4f + 0.5f,
(y - 0.5f) * 1.4f + 0.5f, (y - 0.5f) * 1.4f + 0.5f,
(z - 0.5f) * 1.4f + 0.5f, (z - 0.5f) * 1.4f + 0.5f,
EnumFacing.UP, robotTexture, u, v) EnumFacing.UP, robotTexture, robotTexture.getInterpolatedU(u * 16), robotTexture.getInterpolatedV(v * 16))
}.flatten.toArray }.toArray
} }
override def getGeneralQuads = { override def getGeneralQuads = {
@ -68,8 +68,6 @@ object RobotModel extends SmartBlockModelBase with ISmartItemModel {
faces += new BakedQuad(quad(bottom, bottom3, bottom4), tint, EnumFacing.SOUTH) faces += new BakedQuad(quad(bottom, bottom3, bottom4), tint, EnumFacing.SOUTH)
faces += new BakedQuad(quad(bottom, bottom4, bottom1), tint, EnumFacing.WEST) faces += new BakedQuad(quad(bottom, bottom4, bottom1), tint, EnumFacing.WEST)
Textures.bind(Textures.Model.Robot)
bufferAsJavaList(faces) bufferAsJavaList(faces)
} }
} }

View File

@ -80,8 +80,6 @@ trait SmartBlockModelBase extends ISmartBlockModel with ISmartItemModel {
protected final val NoTint = -1 protected final val NoTint = -1
protected def textureScale = 1f
/** /**
* Generates a list of arrays, each containing the four vertices making up a * Generates a list of arrays, each containing the four vertices making up a
* face of the box with the specified size. * face of the box with the specified size.
@ -182,8 +180,8 @@ trait SmartBlockModelBase extends ISmartBlockModel with ISmartItemModel {
java.lang.Float.floatToRawIntBits(y.toFloat), java.lang.Float.floatToRawIntBits(y.toFloat),
java.lang.Float.floatToRawIntBits(z.toFloat), java.lang.Float.floatToRawIntBits(z.toFloat),
getFaceShadeColor(face), getFaceShadeColor(face),
java.lang.Float.floatToRawIntBits(u * textureScale), java.lang.Float.floatToRawIntBits(u),
java.lang.Float.floatToRawIntBits(v * textureScale), java.lang.Float.floatToRawIntBits(v),
vx | (vy << 0x08) | (vz << 0x10) vx | (vy << 0x08) | (vz << 0x10)
) )
} }

View File

@ -10,7 +10,7 @@ import li.cil.oc.common.Tier
import li.cil.oc.common.block.property.PropertyRotatable import li.cil.oc.common.block.property.PropertyRotatable
import li.cil.oc.common.item.data.MicrocontrollerData import li.cil.oc.common.item.data.MicrocontrollerData
import li.cil.oc.common.tileentity import li.cil.oc.common.tileentity
import li.cil.oc.integration.util.NEI import li.cil.oc.integration.util.ItemBlacklist
import li.cil.oc.integration.util.Wrench import li.cil.oc.integration.util.Wrench
import li.cil.oc.util.InventoryUtils import li.cil.oc.util.InventoryUtils
import li.cil.oc.util.Rarity import li.cil.oc.util.Rarity
@ -29,7 +29,7 @@ import scala.reflect.ClassTag
class Microcontroller(protected implicit val tileTag: ClassTag[tileentity.Microcontroller]) extends RedstoneAware with traits.PowerAcceptor with traits.StateAware with traits.CustomDrops[tileentity.Microcontroller] { class Microcontroller(protected implicit val tileTag: ClassTag[tileentity.Microcontroller]) extends RedstoneAware with traits.PowerAcceptor with traits.StateAware with traits.CustomDrops[tileentity.Microcontroller] {
setCreativeTab(null) setCreativeTab(null)
NEI.hide(this) ItemBlacklist.hide(this)
override def createBlockState(): BlockState = new BlockState(this, PropertyRotatable.Facing) override def createBlockState(): BlockState = new BlockState(this, PropertyRotatable.Facing)

View File

@ -6,7 +6,7 @@ import java.util
import li.cil.oc.Settings import li.cil.oc.Settings
import li.cil.oc.common.tileentity import li.cil.oc.common.tileentity
import li.cil.oc.integration.Mods import li.cil.oc.integration.Mods
import li.cil.oc.integration.util.NEI import li.cil.oc.integration.util.ItemBlacklist
import li.cil.oc.util.Tooltip import li.cil.oc.util.Tooltip
import net.minecraft.block.state.IBlockState import net.minecraft.block.state.IBlockState
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
@ -16,7 +16,7 @@ import net.minecraft.world.World
class PowerConverter extends SimpleBlock with traits.PowerAcceptor { class PowerConverter extends SimpleBlock with traits.PowerAcceptor {
if (Settings.get.ignorePower) { if (Settings.get.ignorePower) {
setCreativeTab(null) setCreativeTab(null)
NEI.hide(this) ItemBlacklist.hide(this)
} }
private val formatter = new DecimalFormat("#.#") private val formatter = new DecimalFormat("#.#")

View File

@ -9,7 +9,7 @@ import li.cil.oc.Settings
import li.cil.oc.common.block.property.PropertyTile import li.cil.oc.common.block.property.PropertyTile
import li.cil.oc.common.item.data.PrintData import li.cil.oc.common.item.data.PrintData
import li.cil.oc.common.tileentity import li.cil.oc.common.tileentity
import li.cil.oc.integration.util.NEI import li.cil.oc.integration.util.ItemBlacklist
import li.cil.oc.util.ExtendedAABB import li.cil.oc.util.ExtendedAABB
import li.cil.oc.util.ExtendedAABB._ import li.cil.oc.util.ExtendedAABB._
import li.cil.oc.util.InventoryUtils import li.cil.oc.util.InventoryUtils
@ -40,7 +40,7 @@ class Print(protected implicit val tileTag: ClassTag[tileentity.Print]) extends
setLightOpacity(1) setLightOpacity(1)
setHardness(1) setHardness(1)
setCreativeTab(null) setCreativeTab(null)
NEI.hide(this) ItemBlacklist.hide(this)
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //

View File

@ -7,7 +7,7 @@ import li.cil.oc.Settings
import li.cil.oc.api import li.cil.oc.api
import li.cil.oc.common.item.data.RobotData import li.cil.oc.common.item.data.RobotData
import li.cil.oc.common.tileentity import li.cil.oc.common.tileentity
import li.cil.oc.integration.util.NEI import li.cil.oc.integration.util.ItemBlacklist
import li.cil.oc.util.Rarity import li.cil.oc.util.Rarity
import net.minecraft.block.state.IBlockState import net.minecraft.block.state.IBlockState
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
@ -19,7 +19,7 @@ import net.minecraft.world.World
class RobotAfterimage extends SimpleBlock { class RobotAfterimage extends SimpleBlock {
setLightOpacity(0) setLightOpacity(0)
setCreativeTab(null) setCreativeTab(null)
NEI.hide(this) ItemBlacklist.hide(this)
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //

View File

@ -10,7 +10,7 @@ import li.cil.oc.client.KeyBindings
import li.cil.oc.common.GuiType import li.cil.oc.common.GuiType
import li.cil.oc.common.item.data.RobotData import li.cil.oc.common.item.data.RobotData
import li.cil.oc.common.tileentity import li.cil.oc.common.tileentity
import li.cil.oc.integration.util.NEI import li.cil.oc.integration.util.ItemBlacklist
import li.cil.oc.server.PacketSender import li.cil.oc.server.PacketSender
import li.cil.oc.server.agent import li.cil.oc.server.agent
import li.cil.oc.util.BlockPosition import li.cil.oc.util.BlockPosition
@ -29,7 +29,7 @@ import net.minecraft.world.World
class RobotProxy extends RedstoneAware with traits.StateAware { class RobotProxy extends RedstoneAware with traits.StateAware {
setLightOpacity(0) setLightOpacity(0)
setCreativeTab(null) setCreativeTab(null)
NEI.hide(this) ItemBlacklist.hide(this)
override val getUnlocalizedName = "Robot" override val getUnlocalizedName = "Robot"

View File

@ -8,7 +8,7 @@ import li.cil.oc.client.KeyBindings
import li.cil.oc.client.renderer.block.DroneModel import li.cil.oc.client.renderer.block.DroneModel
import li.cil.oc.common.entity import li.cil.oc.common.entity
import li.cil.oc.common.item.data.DroneData import li.cil.oc.common.item.data.DroneData
import li.cil.oc.integration.util.NEI import li.cil.oc.integration.util.ItemBlacklist
import li.cil.oc.server.agent import li.cil.oc.server.agent
import li.cil.oc.util.BlockPosition import li.cil.oc.util.BlockPosition
import li.cil.oc.util.Rarity import li.cil.oc.util.Rarity
@ -21,7 +21,7 @@ import net.minecraftforge.fml.relauncher.Side
import net.minecraftforge.fml.relauncher.SideOnly import net.minecraftforge.fml.relauncher.SideOnly
class Drone(val parent: Delegator) extends traits.Delegate with CustomModel { class Drone(val parent: Delegator) extends traits.Delegate with CustomModel {
NEI.hide(this) ItemBlacklist.hide(this)
showInItemList = false showInItemList = false

View File

@ -12,7 +12,7 @@ import li.cil.oc.common.item.Delegator
import li.cil.oc.common.item.data.PrintData import li.cil.oc.common.item.data.PrintData
import li.cil.oc.common.item.traits.Delegate import li.cil.oc.common.item.traits.Delegate
import li.cil.oc.common.item.traits.SimpleItem import li.cil.oc.common.item.traits.SimpleItem
import li.cil.oc.integration.util.NEI import li.cil.oc.integration.util.ItemBlacklist
import li.cil.oc.util.Color import li.cil.oc.util.Color
import net.minecraft.block.Block import net.minecraft.block.Block
import net.minecraft.item.Item import net.minecraft.item.Item
@ -77,7 +77,7 @@ object Recipes {
register(delegate.createItemStack(), oreDict: _*) register(delegate.createItemStack(), oreDict: _*)
} }
else { else {
NEI.hide(delegate) ItemBlacklist.hide(delegate)
} }
delegate delegate
} }
@ -124,22 +124,22 @@ object Recipes {
lazy val config: ConfigParseOptions = ConfigParseOptions.defaults. lazy val config: ConfigParseOptions = ConfigParseOptions.defaults.
setSyntax(ConfigSyntax.CONF). setSyntax(ConfigSyntax.CONF).
setIncluder(new ConfigIncluder with ConfigIncluderFile { setIncluder(new ConfigIncluder with ConfigIncluderFile {
var fallback: ConfigIncluder = _ var fallback: ConfigIncluder = _
override def withFallback(fallback: ConfigIncluder) = { override def withFallback(fallback: ConfigIncluder) = {
this.fallback = fallback this.fallback = fallback
this this
} }
override def include(context: ConfigIncludeContext, what: String) = fallback.include(context, what) override def include(context: ConfigIncludeContext, what: String) = fallback.include(context, what)
override def includeFile(context: ConfigIncludeContext, what: File) = { override def includeFile(context: ConfigIncludeContext, what: File) = {
val in = if (what.isAbsolute) new FileReader(what) else new FileReader(new File(userRecipes.getParentFile, what.getPath)) val in = if (what.isAbsolute) new FileReader(what) else new FileReader(new File(userRecipes.getParentFile, what.getPath))
val result = ConfigFactory.parseReader(in, config) val result = ConfigFactory.parseReader(in, config)
in.close() in.close()
result.root() result.root()
} }
}) })
val recipes = ConfigFactory.parseFile(userRecipes, config) val recipes = ConfigFactory.parseFile(userRecipes, config)
// Register all known recipes. // Register all known recipes.
@ -467,7 +467,7 @@ object Recipes {
case itemBlock: ItemBlock => itemBlock.getBlock match { case itemBlock: ItemBlock => itemBlock.getBlock match {
case simple: SimpleBlock => case simple: SimpleBlock =>
simple.setCreativeTab(null) simple.setCreativeTab(null)
NEI.hide(simple) ItemBlacklist.hide(simple)
case _ => case _ =>
} }
case _ => case _ =>

View File

@ -51,6 +51,7 @@ object Mods {
val IndustrialCraft2 = new SimpleMod(IDs.IndustrialCraft2, providesPower = true) val IndustrialCraft2 = new SimpleMod(IDs.IndustrialCraft2, providesPower = true)
val IndustrialCraft2Classic = new SimpleMod(IDs.IndustrialCraft2Classic, providesPower = true) val IndustrialCraft2Classic = new SimpleMod(IDs.IndustrialCraft2Classic, providesPower = true)
val IngameWiki = new SimpleMod(IDs.IngameWiki, version = "@[1.1.3,)") val IngameWiki = new SimpleMod(IDs.IngameWiki, version = "@[1.1.3,)")
val JustEnoughItems = new SimpleMod(IDs.JustEnoughItems)
val Mekanism = new SimpleMod(IDs.Mekanism, providesPower = true) val Mekanism = new SimpleMod(IDs.Mekanism, providesPower = true)
val MekanismGas = new SimpleMod(IDs.MekanismGas) val MekanismGas = new SimpleMod(IDs.MekanismGas)
val Minecraft = new SimpleMod(IDs.Minecraft) val Minecraft = new SimpleMod(IDs.Minecraft)
@ -200,6 +201,7 @@ object Mods {
final val IndustrialCraft2 = "IC2" final val IndustrialCraft2 = "IC2"
final val IndustrialCraft2Classic = "IC2-Classic" final val IndustrialCraft2Classic = "IC2-Classic"
final val IngameWiki = "IGWMod" final val IngameWiki = "IGWMod"
final val JustEnoughItems = "JEI"
final val Mekanism = "Mekanism" final val Mekanism = "Mekanism"
final val MekanismGas = "MekanismAPI|gas" final val MekanismGas = "MekanismAPI|gas"
final val Minecraft = "Minecraft" final val Minecraft = "Minecraft"

View File

@ -0,0 +1,27 @@
package li.cil.oc.integration.jei
import li.cil.oc.integration.util.ItemBlacklist
import mezz.jei.api.IItemRegistry
import mezz.jei.api.IJeiHelpers
import mezz.jei.api.IModPlugin
import mezz.jei.api.IModRegistry
import mezz.jei.api.IRecipeRegistry
import mezz.jei.api.JEIPlugin
@JEIPlugin
class ModPluginOpenComputers extends IModPlugin {
override def isModLoaded: Boolean = true
override def onJeiHelpersAvailable(jeiHelpers: IJeiHelpers): Unit = {
ItemBlacklist.consumers += jeiHelpers.getItemBlacklist.addItemToBlacklist
}
override def onItemRegistryAvailable(itemRegistry: IItemRegistry): Unit = {
}
override def register(registry: IModRegistry): Unit = {
}
override def onRecipeRegistryAvailable(recipeRegistry: IRecipeRegistry): Unit = {
}
}

View File

@ -36,6 +36,7 @@ import li.cil.oc.common.template._
import li.cil.oc.integration.ModProxy import li.cil.oc.integration.ModProxy
import li.cil.oc.integration.Mods import li.cil.oc.integration.Mods
import li.cil.oc.integration.util.BundledRedstone import li.cil.oc.integration.util.BundledRedstone
import li.cil.oc.integration.util.ItemBlacklist
import li.cil.oc.integration.util.WirelessRedstone import li.cil.oc.integration.util.WirelessRedstone
import li.cil.oc.server.machine.luac.LuaStateFactory import li.cil.oc.server.machine.luac.LuaStateFactory
import li.cil.oc.server.machine.luac.NativeLua53Architecture import li.cil.oc.server.machine.luac.NativeLua53Architecture
@ -53,6 +54,8 @@ object ModOpenComputers extends ModProxy {
override def getMod = Mods.OpenComputers override def getMod = Mods.OpenComputers
override def initialize() { override def initialize() {
ItemBlacklist.apply()
DroneTemplate.register() DroneTemplate.register()
MicrocontrollerTemplate.register() MicrocontrollerTemplate.register()
NavigationUpgradeTemplate.register() NavigationUpgradeTemplate.register()

View File

@ -17,6 +17,7 @@ import li.cil.tis3d.api.prefab.manual.ResourceContentProvider
import li.cil.tis3d.api.serial.SerialInterface import li.cil.tis3d.api.serial.SerialInterface
import li.cil.tis3d.api.serial.SerialInterfaceProvider import li.cil.tis3d.api.serial.SerialInterfaceProvider
import li.cil.tis3d.api.serial.SerialProtocolDocumentationReference import li.cil.tis3d.api.serial.SerialProtocolDocumentationReference
import net.minecraft.nbt.NBTTagCompound
import net.minecraft.util.BlockPos import net.minecraft.util.BlockPos
import net.minecraft.util.EnumFacing import net.minecraft.util.EnumFacing
import net.minecraft.world.World import net.minecraft.world.World
@ -25,7 +26,7 @@ import scala.collection.mutable
object SerialInterfaceProviderAdapter extends SerialInterfaceProvider { object SerialInterfaceProviderAdapter extends SerialInterfaceProvider {
def init(): Unit = { def init(): Unit = {
ManualAPI.addProvider(new ResourceContentProvider(Settings.resourceDomain, "doc/")) ManualAPI.addProvider(new ResourceContentProvider(Settings.resourceDomain, "doc/tis3d/"))
SerialAPI.addProvider(this) SerialAPI.addProvider(this)
} }
@ -106,6 +107,20 @@ object SerialInterfaceProviderAdapter extends SerialInterfaceProvider {
}) })
} }
override def readFromNBT(nbt: NBTTagCompound): Unit = {
writeBuffer.clear()
writeBuffer ++= nbt.getIntArray("writeBuffer").map(_.toShort)
readBuffer.clear()
readBuffer ++= nbt.getIntArray("readBuffer").map(_.toShort)
isReading = nbt.getBoolean("isReading")
}
override def writeToNBT(nbt: NBTTagCompound): Unit = {
nbt.setIntArray("writeBuffer", writeBuffer.toArray.map(_.toInt))
nbt.setIntArray("readBuffer", readBuffer.toArray.map(_.toInt))
nbt.setBoolean("isReading", isReading)
}
private def ensureConnected(): Unit = { private def ensureConnected(): Unit = {
if (tileEntity.node.network != node.network) { if (tileEntity.node.network != node.network) {
tileEntity.node.connect(node) tileEntity.node.connect(node)

View File

@ -0,0 +1,27 @@
package li.cil.oc.integration.util
import li.cil.oc.common.item.traits.Delegate
import net.minecraft.block.Block
import net.minecraft.item.ItemStack
import scala.collection.mutable
object ItemBlacklist {
// Lazily evaluated stacks to avoid creating stacks with unregistered items/blocks.
val hiddenItems = mutable.Set.empty[() => ItemStack]
// List of consumers for item stacks (blacklisting for NEI and JEI).
val consumers = mutable.Set.empty[ItemStack => Unit]
def hide(block: Block): Unit = hiddenItems += (() => new ItemStack(block))
def hide(item: Delegate): Unit = hiddenItems += (() => item.createItemStack())
def apply(): Unit = {
for (consumer <- consumers) {
for (stack <- hiddenItems) {
consumer(stack())
}
}
}
}

View File

@ -3,18 +3,11 @@ package li.cil.oc.integration.util
/* TODO NEI /* TODO NEI
import codechicken.nei.LayoutManager import codechicken.nei.LayoutManager
*/ */
import li.cil.oc.common.item.traits.Delegate
import li.cil.oc.integration.Mods import li.cil.oc.integration.Mods
import net.minecraft.block.Block
import net.minecraft.client.gui.inventory.GuiContainer import net.minecraft.client.gui.inventory.GuiContainer
import net.minecraft.item.ItemStack import net.minecraft.item.ItemStack
import scala.collection.mutable
object NEI { object NEI {
// Lazily evaluated stacks to avoid creating stacks with unregistered items/blocks.
val hiddenItems = mutable.Set.empty[() => ItemStack]
def isInputFocused = def isInputFocused =
Mods.NotEnoughItems.isAvailable && (try isInputFocused0 catch { Mods.NotEnoughItems.isAvailable && (try isInputFocused0 catch {
case _: Throwable => false case _: Throwable => false
@ -29,8 +22,4 @@ object NEI {
else None else None
private def hoveredStack0(container: GuiContainer, mouseX: Int, mouseY: Int) = null: ItemStack // TODO NEI LayoutManager.instance.getStackUnderMouse(container, mouseX, mouseY) private def hoveredStack0(container: GuiContainer, mouseX: Int, mouseY: Int) = null: ItemStack // TODO NEI LayoutManager.instance.getStackUnderMouse(container, mouseX, mouseY)
def hide(block: Block): Unit = if (Mods.NotEnoughItems.isAvailable) hiddenItems += (() => new ItemStack(block))
def hide(item: Delegate): Unit = if (Mods.NotEnoughItems.isAvailable) hiddenItems += (() => item.createItemStack())
} }