Fixed Bug: #0641 - Redstone P2P Crash
Fixed an issue where tunnels would de-register if linked a certain way.
This commit is contained in:
Vendored
+10
-3
@@ -62,8 +62,11 @@ public class P2PCache implements IGridCache
|
||||
|
||||
public void updateFreq(PartP2PTunnel t, long NewFreq)
|
||||
{
|
||||
outputs.remove( t.freq, t );
|
||||
inputs.remove( t.freq );
|
||||
if ( outputs.containsValue( t ) )
|
||||
outputs.remove( t.freq, t );
|
||||
|
||||
if ( inputs.containsValue( t ) )
|
||||
inputs.remove( t.freq );
|
||||
|
||||
t.freq = NewFreq;
|
||||
|
||||
@@ -150,7 +153,11 @@ public class P2PCache implements IGridCache
|
||||
if ( in == null )
|
||||
return NullColl;
|
||||
|
||||
return inputs.get( freq ).getCollection( outputs.get( freq ) );
|
||||
TunnelCollection<PartP2PTunnel> out = inputs.get( freq ).getCollection( outputs.get( freq ), c );
|
||||
if ( out == null )
|
||||
return NullColl;
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
public PartP2PTunnel getInput(long freq)
|
||||
|
||||
+10
@@ -34,4 +34,14 @@ public class TunnelCollection<T extends PartP2PTunnel> implements Iterable<T>
|
||||
{
|
||||
return !iterator().hasNext();
|
||||
}
|
||||
|
||||
public boolean matches(Class<? extends PartP2PTunnel> c)
|
||||
{
|
||||
return clz == c;
|
||||
}
|
||||
|
||||
public Class<? extends PartP2PTunnel> getClz()
|
||||
{
|
||||
return clz;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,19 +201,19 @@ public class PartP2PTunnel<T extends PartP2PTunnel> extends PartBasicState
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
|
||||
long newFreq = freq;
|
||||
boolean wasOutput = output;
|
||||
output = false;
|
||||
|
||||
if ( output || freq == 0 )
|
||||
{
|
||||
if ( wasOutput || freq == 0 )
|
||||
newFreq = System.currentTimeMillis();
|
||||
try
|
||||
{
|
||||
proxy.getP2P().updateFreq( this, newFreq );
|
||||
}
|
||||
catch (GridAccessException e)
|
||||
{
|
||||
// :P
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
proxy.getP2P().updateFreq( this, newFreq );
|
||||
}
|
||||
catch (GridAccessException e)
|
||||
{
|
||||
// :P
|
||||
}
|
||||
|
||||
onTunnelConfigChange();
|
||||
@@ -243,10 +243,15 @@ public class PartP2PTunnel<T extends PartP2PTunnel> extends PartBasicState
|
||||
return AEApi.instance().parts().partP2PTunnelME.stack( 1 );
|
||||
}
|
||||
|
||||
public TunnelCollection<T> getCollection(Collection<PartP2PTunnel> collection)
|
||||
public TunnelCollection<T> getCollection(Collection<PartP2PTunnel> collection, Class<? extends PartP2PTunnel> c)
|
||||
{
|
||||
type.setSource( collection );
|
||||
return type;
|
||||
if ( type.matches( c ) )
|
||||
{
|
||||
type.setSource( collection );
|
||||
return type;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public T getInput()
|
||||
|
||||
Reference in New Issue
Block a user