Merge pull request #24 from repo-alt/master-MC1.7.10

fixed AE network iterator being unsafe
This commit is contained in:
repo-alt 2021-01-11 21:49:39 +03:00 committed by GitHub
commit 05c702c0d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 6 deletions

View File

@ -115,6 +115,9 @@ repositories {
name 'UsrvDE'
url "http://jenkins.usrv.eu:8081/nexus/content/repositories/releases/"
}
maven {
url "http://downloads.gtnewhorizons.com/Mods_for_Jenkins/"
}
}
configurations {

View File

@ -1,9 +1,9 @@
minecraft.version=1.7.10
forge.version=10.13.4.1614-1.7.10
oc.version=1.7.5.8-GTNH
oc.version=1.7.5.9-GTNH
ae2.version=rv2-beta-26
ae2.version=rv3-beta-31
bc.version=7.0.9
bloodmagic.cf=2223/203
bloodmagic.version=1.3.0a-1

View File

@ -1,11 +1,14 @@
package li.cil.oc.integration.appeng
import java.lang
import appeng.api.AEApi
import appeng.api.config.Actionable
import appeng.api.networking.crafting.ICraftingLink
import appeng.api.networking.crafting.ICraftingRequester
import appeng.api.networking.security.IActionHost
import appeng.api.networking.security.MachineSource
import appeng.api.networking.security.{BaseActionSource, IActionHost, MachineSource}
import appeng.api.networking.storage.IBaseMonitor
import appeng.api.storage.IMEMonitorHandlerReceiver
import appeng.api.storage.data.{IAEItemStack, IItemList}
import appeng.me.helpers.IGridProxyable
import appeng.util.item.AEItemStack
@ -315,9 +318,11 @@ object NetworkControl {
}
}
class NetworkContents(var controller: TileEntity with IGridProxyable) extends AbstractValue
class NetworkContents(var controller: TileEntity with IGridProxyable) extends AbstractValue with IMEMonitorHandlerReceiver[IAEItemStack]
{
def this() = this(null)
if (controller != null)
controller.getProxy.getStorage.getItemInventory.addListener(this, null)
var items : IItemList[IAEItemStack] = null
var i : java.util.Iterator[IAEItemStack] = null
var index = 0
@ -350,8 +355,11 @@ object NetworkControl {
index = nbt.getInteger("index")
EventHandler.scheduleServer(() => {
val tileEntity = DimensionManager.getWorld(dimension).getTileEntity(x, y, z)
if (tileEntity != null && tileEntity.isInstanceOf[TileEntity with IGridProxyable])
if (tileEntity != null && tileEntity.isInstanceOf[TileEntity with IGridProxyable]) {
controller = tileEntity.asInstanceOf[TileEntity with IGridProxyable]
if (controller!= null)
controller.getProxy.getStorage.getItemInventory.addListener(this, null)
}
})
}
}
@ -365,6 +373,18 @@ object NetworkControl {
nbt.setInteger("z", controller.zCoord)
}
}
var valid = true
def dispose(context: Nothing): Unit = {
valid = false
}
override def isValid(verificationToken: Any): Boolean = valid
override def onListUpdate(): Unit = {
this.items = null
}
override def postChange(monitor: IBaseMonitor[IAEItemStack], change: lang.Iterable[IAEItemStack], actionSource: BaseActionSource): Unit = {
this.items = null
}
}
def aeCraftItem(aeItem: IAEItemStack, tile: TileEntity with IGridProxyable): IAEItemStack = {
val patterns = tile.getProxy.getCrafting.getCraftingFor(aeItem, null, 0, tile.getWorldObj)