API cleanups (#3155)
* Remove obsolete api and fix some warning * Move MEMonitorHandler to internal code and fix some warnings * Rename exceptions to conform to naming scheme
This commit is contained in:
@@ -26,8 +26,8 @@ package appeng.api;
|
||||
|
||||
import appeng.api.definitions.IDefinitions;
|
||||
import appeng.api.features.IRegistryContainer;
|
||||
import appeng.api.networking.IGridNode;
|
||||
import appeng.api.networking.IGridHelper;
|
||||
import appeng.api.networking.IGridNode;
|
||||
import appeng.api.parts.IPartHelper;
|
||||
import appeng.api.storage.IStorageHelper;
|
||||
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
/*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2013 AlgorithmX2
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package appeng.api.client;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.client.renderer.block.model.IBakedModel;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
/**
|
||||
* TODO: Needs to be moved to an internal class. API is only allowed to contain interfaces and/or data.
|
||||
*
|
||||
* @deprecated
|
||||
*/
|
||||
@Deprecated
|
||||
public class BakingPipeline<F, T> implements BakingPipelineElement<F, T>
|
||||
{
|
||||
|
||||
private final ImmutableList<BakingPipelineElement<?, ?>> pipeline;
|
||||
|
||||
public BakingPipeline( BakingPipelineElement<?, ?>... pipeline )
|
||||
{
|
||||
this.pipeline = ImmutableList.copyOf( pipeline );
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: fix generics
|
||||
*/
|
||||
@Override
|
||||
public List pipe( List things, IBakedModel parent, IBlockState state, EnumFacing side, long rand )
|
||||
{
|
||||
for( BakingPipelineElement pipe : this.pipeline )
|
||||
{
|
||||
things = pipe.pipe( things, parent, state, side, rand );
|
||||
}
|
||||
return things;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
/*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2013 AlgorithmX2
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package appeng.api.client;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.client.renderer.block.model.IBakedModel;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
|
||||
public interface BakingPipelineElement<F, T>
|
||||
{
|
||||
|
||||
public List<T> pipe( List<F> elements, IBakedModel parent, IBlockState state, EnumFacing side, long rand );
|
||||
|
||||
}
|
||||
@@ -21,6 +21,8 @@ package appeng.api.exceptions;
|
||||
|
||||
public class CoreInaccessibleException extends RuntimeException
|
||||
{
|
||||
private static final long serialVersionUID = -7434641554655517242L;
|
||||
|
||||
public CoreInaccessibleException( final String message )
|
||||
{
|
||||
super( message );
|
||||
|
||||
@@ -37,7 +37,7 @@ import appeng.api.networking.IGridNode;
|
||||
* @version rv3
|
||||
* @since rv3
|
||||
*/
|
||||
public class ExistingConnectionException extends FailedConnection
|
||||
public class ExistingConnectionException extends FailedConnectionException
|
||||
{
|
||||
|
||||
private static final long serialVersionUID = 2975450379720353182L;
|
||||
|
||||
+3
-3
@@ -40,16 +40,16 @@ import appeng.api.networking.IGridNode;
|
||||
* @version rv3
|
||||
* @since rv0
|
||||
*/
|
||||
public class FailedConnection extends Exception
|
||||
public class FailedConnectionException extends Exception
|
||||
{
|
||||
|
||||
private static final long serialVersionUID = -2544208090248293753L;
|
||||
|
||||
public FailedConnection()
|
||||
public FailedConnectionException()
|
||||
{
|
||||
}
|
||||
|
||||
public FailedConnection( String message )
|
||||
public FailedConnectionException( String message )
|
||||
{
|
||||
super( message );
|
||||
}
|
||||
+4
-2
@@ -19,9 +19,11 @@
|
||||
package appeng.api.exceptions;
|
||||
|
||||
|
||||
public class MissingDefinition extends RuntimeException
|
||||
public class MissingDefinitionException extends RuntimeException
|
||||
{
|
||||
public MissingDefinition( final String message )
|
||||
private static final long serialVersionUID = -6547396584255825761L;
|
||||
|
||||
public MissingDefinitionException( final String message )
|
||||
{
|
||||
super( message );
|
||||
}
|
||||
+2
-2
@@ -24,12 +24,12 @@
|
||||
package appeng.api.exceptions;
|
||||
|
||||
|
||||
public class MissingIngredientError extends Exception
|
||||
public class MissingIngredientException extends Exception
|
||||
{
|
||||
|
||||
private static final long serialVersionUID = -998858343831371697L;
|
||||
|
||||
public MissingIngredientError( final String n )
|
||||
public MissingIngredientException( final String n )
|
||||
{
|
||||
super( n );
|
||||
}
|
||||
+2
-2
@@ -24,12 +24,12 @@
|
||||
package appeng.api.exceptions;
|
||||
|
||||
|
||||
public class ModNotInstalled extends Exception
|
||||
public class ModNotInstalledException extends Exception
|
||||
{
|
||||
|
||||
private static final long serialVersionUID = -9052435206368425494L;
|
||||
|
||||
public ModNotInstalled( final String t )
|
||||
public ModNotInstalledException( final String t )
|
||||
{
|
||||
super( t );
|
||||
}
|
||||
@@ -34,7 +34,7 @@ package appeng.api.exceptions;
|
||||
* @version rv3
|
||||
* @since rv3
|
||||
*/
|
||||
public class NullNodeConnectionException extends FailedConnection
|
||||
public class NullNodeConnectionException extends FailedConnectionException
|
||||
{
|
||||
|
||||
private static final long serialVersionUID = -2143719383495321764L;
|
||||
|
||||
+2
-2
@@ -24,12 +24,12 @@
|
||||
package appeng.api.exceptions;
|
||||
|
||||
|
||||
public class RecipeError extends Exception
|
||||
public class RecipeException extends Exception
|
||||
{
|
||||
|
||||
private static final long serialVersionUID = -6602870588617670262L;
|
||||
|
||||
public RecipeError( final String n )
|
||||
public RecipeException( final String n )
|
||||
{
|
||||
super( n );
|
||||
}
|
||||
+2
-2
@@ -24,12 +24,12 @@
|
||||
package appeng.api.exceptions;
|
||||
|
||||
|
||||
public class RegistrationError extends Exception
|
||||
public class RegistrationException extends Exception
|
||||
{
|
||||
|
||||
private static final long serialVersionUID = -6602870588617670263L;
|
||||
|
||||
public RegistrationError( final String n )
|
||||
public RegistrationException( final String n )
|
||||
{
|
||||
super( n );
|
||||
}
|
||||
@@ -34,7 +34,7 @@ package appeng.api.exceptions;
|
||||
* @version rv3
|
||||
* @since rv3
|
||||
*/
|
||||
public class SecurityConnectionException extends FailedConnection
|
||||
public class SecurityConnectionException extends FailedConnectionException
|
||||
{
|
||||
private static final long serialVersionUID = 5048714900434215426L;
|
||||
private static final String DEFAULT_MESSAGE = "Connection failed due to different security realms.";
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
package appeng.api.networking;
|
||||
|
||||
|
||||
import appeng.api.exceptions.FailedConnection;
|
||||
import appeng.api.exceptions.FailedConnectionException;
|
||||
|
||||
|
||||
/**
|
||||
@@ -57,8 +57,8 @@ public interface IGridHelper
|
||||
* @param a to be connected gridnode
|
||||
* @param b to be connected gridnode
|
||||
*
|
||||
* @throws appeng.api.exceptions.FailedConnection
|
||||
* @throws appeng.api.exceptions.FailedConnectionException
|
||||
*/
|
||||
IGridConnection createGridConnection( IGridNode a, IGridNode b ) throws FailedConnection;
|
||||
IGridConnection createGridConnection( IGridNode a, IGridNode b ) throws FailedConnectionException;
|
||||
|
||||
}
|
||||
@@ -28,7 +28,7 @@ import appeng.api.storage.IMEMonitorHandlerReceiver;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
|
||||
|
||||
public interface IBaseMonitor<T extends IAEStack>
|
||||
public interface IBaseMonitor<T extends IAEStack<T>>
|
||||
{
|
||||
|
||||
/**
|
||||
|
||||
@@ -50,5 +50,5 @@ public interface IStackWatcherHost
|
||||
* @param src action source
|
||||
* @param chan storage channel
|
||||
*/
|
||||
void onStackChange( IItemList o, IAEStack fullStack, IAEStack diffStack, IActionSource src, IStorageChannel chan );
|
||||
void onStackChange( IItemList<?> o, IAEStack<?> fullStack, IAEStack<?> diffStack, IActionSource src, IStorageChannel<?> chan );
|
||||
}
|
||||
|
||||
@@ -29,8 +29,8 @@ import appeng.api.networking.IGridHost;
|
||||
import appeng.api.networking.security.IActionSource;
|
||||
import appeng.api.storage.ICellContainer;
|
||||
import appeng.api.storage.ICellProvider;
|
||||
import appeng.api.storage.IStorageMonitorable;
|
||||
import appeng.api.storage.IStorageChannel;
|
||||
import appeng.api.storage.IStorageMonitorable;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ public interface IStorageGrid extends IGridCache, IStorageMonitorable
|
||||
*
|
||||
* @param input injected items
|
||||
*/
|
||||
void postAlterationOfStoredItems( IStorageChannel chan, Iterable<? extends IAEStack> input, IActionSource src );
|
||||
void postAlterationOfStoredItems( IStorageChannel<?> chan, Iterable<? extends IAEStack<?>> input, IActionSource src );
|
||||
|
||||
/**
|
||||
* Used to add a cell provider to the storage system
|
||||
|
||||
@@ -26,9 +26,9 @@ package appeng.api.recipes;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import appeng.api.exceptions.MissingIngredientError;
|
||||
import appeng.api.exceptions.RecipeError;
|
||||
import appeng.api.exceptions.RegistrationError;
|
||||
import appeng.api.exceptions.MissingIngredientException;
|
||||
import appeng.api.exceptions.RecipeException;
|
||||
import appeng.api.exceptions.RegistrationException;
|
||||
|
||||
|
||||
public interface ICraftHandler
|
||||
@@ -40,15 +40,15 @@ public interface ICraftHandler
|
||||
* @param input parsed inputs
|
||||
* @param output parsed outputs
|
||||
*
|
||||
* @throws RecipeError
|
||||
* @throws RecipeException
|
||||
*/
|
||||
void setup( List<List<IIngredient>> input, List<List<IIngredient>> output ) throws RecipeError;
|
||||
void setup( List<List<IIngredient>> input, List<List<IIngredient>> output ) throws RecipeException;
|
||||
|
||||
/**
|
||||
* called when all recipes are parsed, and your required to register your recipe.
|
||||
*
|
||||
* @throws RegistrationError
|
||||
* @throws MissingIngredientError
|
||||
* @throws RegistrationException
|
||||
* @throws MissingIngredientException
|
||||
*/
|
||||
void register() throws RegistrationError, MissingIngredientError;
|
||||
void register() throws RegistrationException, MissingIngredientException;
|
||||
}
|
||||
|
||||
@@ -26,8 +26,8 @@ package appeng.api.recipes;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import appeng.api.exceptions.MissingIngredientError;
|
||||
import appeng.api.exceptions.RegistrationError;
|
||||
import appeng.api.exceptions.MissingIngredientException;
|
||||
import appeng.api.exceptions.RegistrationException;
|
||||
|
||||
|
||||
public interface IIngredient
|
||||
@@ -39,10 +39,10 @@ public interface IIngredient
|
||||
*
|
||||
* @return a single ItemStack for the recipe handler.
|
||||
*
|
||||
* @throws RegistrationError
|
||||
* @throws MissingIngredientError
|
||||
* @throws RegistrationException
|
||||
* @throws MissingIngredientException
|
||||
*/
|
||||
ItemStack getItemStack() throws RegistrationError, MissingIngredientError;
|
||||
ItemStack getItemStack() throws RegistrationException, MissingIngredientException;
|
||||
|
||||
/**
|
||||
* Acquire a list of all the input stacks for the current recipe, this is for handlers that support
|
||||
@@ -50,10 +50,10 @@ public interface IIngredient
|
||||
*
|
||||
* @return an array of ItemStacks for the recipe handler.
|
||||
*
|
||||
* @throws RegistrationError
|
||||
* @throws MissingIngredientError
|
||||
* @throws RegistrationException
|
||||
* @throws MissingIngredientException
|
||||
*/
|
||||
ItemStack[] getItemStackSet() throws RegistrationError, MissingIngredientError;
|
||||
ItemStack[] getItemStackSet() throws RegistrationException, MissingIngredientException;
|
||||
|
||||
/**
|
||||
* If you wish to support air, you must test before getting the ItemStack, or ItemStackSet
|
||||
@@ -85,8 +85,8 @@ public interface IIngredient
|
||||
/**
|
||||
* Bakes the lists in for faster runtime look-ups.
|
||||
*
|
||||
* @throws MissingIngredientError
|
||||
* @throws RegistrationError
|
||||
* @throws MissingIngredientException
|
||||
* @throws RegistrationException
|
||||
*/
|
||||
void bake() throws RegistrationError, MissingIngredientError;
|
||||
void bake() throws RegistrationException, MissingIngredientException;
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ public interface ICellProvider
|
||||
*
|
||||
* @return a valid list of handlers, NEVER NULL
|
||||
*/
|
||||
List<IMEInventoryHandler> getCellArray( IStorageChannel channel );
|
||||
List<IMEInventoryHandler> getCellArray( IStorageChannel<?> channel );
|
||||
|
||||
/**
|
||||
* the storage's priority.
|
||||
|
||||
@@ -29,7 +29,7 @@ import appeng.api.networking.storage.IBaseMonitor;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
|
||||
|
||||
public interface IMEMonitorHandlerReceiver<StackType extends IAEStack>
|
||||
public interface IMEMonitorHandlerReceiver<T extends IAEStack<T>>
|
||||
{
|
||||
|
||||
/**
|
||||
@@ -46,7 +46,7 @@ public interface IMEMonitorHandlerReceiver<StackType extends IAEStack>
|
||||
*
|
||||
* @param change done change
|
||||
*/
|
||||
void postChange( IBaseMonitor<StackType> monitor, Iterable<StackType> change, IActionSource actionSource );
|
||||
void postChange( IBaseMonitor<T> monitor, Iterable<T> change, IActionSource actionSource );
|
||||
|
||||
/**
|
||||
* called when the list updates its contents, this is mostly for handling power events.
|
||||
|
||||
@@ -27,5 +27,5 @@ package appeng.api.storage;
|
||||
public interface ISaveProvider
|
||||
{
|
||||
|
||||
void saveChanges( IMEInventory cellInventory );
|
||||
void saveChanges( IMEInventory<?> cellInventory );
|
||||
}
|
||||
|
||||
@@ -1,219 +0,0 @@
|
||||
/*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2013 AlgorithmX2
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package appeng.api.storage;
|
||||
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import appeng.api.config.AccessRestriction;
|
||||
import appeng.api.config.Actionable;
|
||||
import appeng.api.networking.security.IActionSource;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
import appeng.api.storage.data.IItemList;
|
||||
|
||||
|
||||
/**
|
||||
* Common implementation of a simple class that monitors injection/extraction of a inventory to send events to a list of
|
||||
* listeners.
|
||||
*
|
||||
* @param <T>
|
||||
* @deprecated
|
||||
*
|
||||
* TODO: Needs to be redesigned to solve performance issues. Also should not be part of the API as class.
|
||||
*/
|
||||
@Deprecated
|
||||
public class MEMonitorHandler<T extends IAEStack<T>> implements IMEMonitor<T>
|
||||
{
|
||||
|
||||
private final IMEInventoryHandler<T> internalHandler;
|
||||
private final IItemList<T> cachedList;
|
||||
private final HashMap<IMEMonitorHandlerReceiver<T>, Object> listeners = new HashMap<>();
|
||||
|
||||
protected boolean hasChanged = true;
|
||||
|
||||
public MEMonitorHandler( final IMEInventoryHandler<T> t )
|
||||
{
|
||||
this.internalHandler = t;
|
||||
this.cachedList = t.getChannel().createList();
|
||||
}
|
||||
|
||||
public MEMonitorHandler( final IMEInventoryHandler<T> t, final IStorageChannel<T> chan )
|
||||
{
|
||||
this.internalHandler = t;
|
||||
this.cachedList = chan.createList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addListener( final IMEMonitorHandlerReceiver<T> l, final Object verificationToken )
|
||||
{
|
||||
this.listeners.put( l, verificationToken );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeListener( final IMEMonitorHandlerReceiver<T> l )
|
||||
{
|
||||
this.listeners.remove( l );
|
||||
}
|
||||
|
||||
@Override
|
||||
public T injectItems( final T input, final Actionable mode, final IActionSource src )
|
||||
{
|
||||
if( mode == Actionable.SIMULATE )
|
||||
{
|
||||
return this.getHandler().injectItems( input, mode, src );
|
||||
}
|
||||
return this.monitorDifference( input.copy(), this.getHandler().injectItems( input, mode, src ), false, src );
|
||||
}
|
||||
|
||||
protected IMEInventoryHandler<T> getHandler()
|
||||
{
|
||||
return this.internalHandler;
|
||||
}
|
||||
|
||||
private T monitorDifference( final T original, final T leftOvers, final boolean extraction, final IActionSource src )
|
||||
{
|
||||
final T diff = original.copy();
|
||||
|
||||
if( extraction )
|
||||
{
|
||||
diff.setStackSize( leftOvers == null ? 0 : -leftOvers.getStackSize() );
|
||||
}
|
||||
else if( leftOvers != null )
|
||||
{
|
||||
diff.decStackSize( leftOvers.getStackSize() );
|
||||
}
|
||||
|
||||
if( diff.getStackSize() != 0 )
|
||||
{
|
||||
this.postChangesToListeners( ImmutableList.of( diff ), src );
|
||||
}
|
||||
|
||||
return leftOvers;
|
||||
}
|
||||
|
||||
protected void postChangesToListeners( final Iterable<T> changes, final IActionSource src )
|
||||
{
|
||||
this.notifyListenersOfChange( changes, src );
|
||||
}
|
||||
|
||||
protected void notifyListenersOfChange( final Iterable<T> diff, final IActionSource src )
|
||||
{
|
||||
this.hasChanged = true;// need to update the cache.
|
||||
final Iterator<Entry<IMEMonitorHandlerReceiver<T>, Object>> i = this.getListeners();
|
||||
while( i.hasNext() )
|
||||
{
|
||||
final Entry<IMEMonitorHandlerReceiver<T>, Object> o = i.next();
|
||||
final IMEMonitorHandlerReceiver<T> receiver = o.getKey();
|
||||
if( receiver.isValid( o.getValue() ) )
|
||||
{
|
||||
receiver.postChange( this, diff, src );
|
||||
}
|
||||
else
|
||||
{
|
||||
i.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected Iterator<Entry<IMEMonitorHandlerReceiver<T>, Object>> getListeners()
|
||||
{
|
||||
return this.listeners.entrySet().iterator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public T extractItems( final T request, final Actionable mode, final IActionSource src )
|
||||
{
|
||||
if( mode == Actionable.SIMULATE )
|
||||
{
|
||||
return this.getHandler().extractItems( request, mode, src );
|
||||
}
|
||||
return this.monitorDifference( request.copy(), this.getHandler().extractItems( request, mode, src ), true, src );
|
||||
}
|
||||
|
||||
@Override
|
||||
public IStorageChannel<T> getChannel()
|
||||
{
|
||||
return this.getHandler().getChannel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AccessRestriction getAccess()
|
||||
{
|
||||
return this.getHandler().getAccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemList<T> getStorageList()
|
||||
{
|
||||
if( this.hasChanged )
|
||||
{
|
||||
this.hasChanged = false;
|
||||
this.cachedList.resetStatus();
|
||||
return this.getAvailableItems( this.cachedList );
|
||||
}
|
||||
|
||||
return this.cachedList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPrioritized( final T input )
|
||||
{
|
||||
return this.getHandler().isPrioritized( input );
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canAccept( final T input )
|
||||
{
|
||||
return this.getHandler().canAccept( input );
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemList<T> getAvailableItems( final IItemList<T> out )
|
||||
{
|
||||
return this.getHandler().getAvailableItems( out );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPriority()
|
||||
{
|
||||
return this.getHandler().getPriority();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSlot()
|
||||
{
|
||||
return this.getHandler().getSlot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validForPass( final int i )
|
||||
{
|
||||
return this.getHandler().validForPass( i );
|
||||
}
|
||||
|
||||
}
|
||||
@@ -35,7 +35,7 @@ import appeng.api.config.FuzzyMode;
|
||||
import appeng.api.storage.IStorageChannel;
|
||||
|
||||
|
||||
public interface IAEStack<StackType extends IAEStack<StackType>>
|
||||
public interface IAEStack<T extends IAEStack<T>>
|
||||
{
|
||||
|
||||
/**
|
||||
@@ -43,7 +43,7 @@ public interface IAEStack<StackType extends IAEStack<StackType>>
|
||||
*
|
||||
* @param is added item
|
||||
*/
|
||||
void add( StackType is );
|
||||
void add( T is );
|
||||
|
||||
/**
|
||||
* number of items in the stack.
|
||||
@@ -57,7 +57,7 @@ public interface IAEStack<StackType extends IAEStack<StackType>>
|
||||
*
|
||||
* @param stackSize , ItemStack.stackSize = N
|
||||
*/
|
||||
StackType setStackSize( long stackSize );
|
||||
T setStackSize( long stackSize );
|
||||
|
||||
/**
|
||||
* Same as getStackSize, but for requestable items. ( LP )
|
||||
@@ -71,7 +71,7 @@ public interface IAEStack<StackType extends IAEStack<StackType>>
|
||||
*
|
||||
* @return basically itemStack.stackSize = N but for setStackSize items.
|
||||
*/
|
||||
StackType setCountRequestable( long countRequestable );
|
||||
T setCountRequestable( long countRequestable );
|
||||
|
||||
/**
|
||||
* true, if the item can be crafted.
|
||||
@@ -85,12 +85,12 @@ public interface IAEStack<StackType extends IAEStack<StackType>>
|
||||
*
|
||||
* @param isCraftable can item be crafted
|
||||
*/
|
||||
StackType setCraftable( boolean isCraftable );
|
||||
T setCraftable( boolean isCraftable );
|
||||
|
||||
/**
|
||||
* clears, requestable, craftable, and stack sizes.
|
||||
*/
|
||||
StackType reset();
|
||||
T reset();
|
||||
|
||||
/**
|
||||
* returns true, if the item can be crafted, requested, or extracted.
|
||||
@@ -174,14 +174,14 @@ public interface IAEStack<StackType extends IAEStack<StackType>>
|
||||
*
|
||||
* @return a new Stack, which is copied from the original.
|
||||
*/
|
||||
StackType copy();
|
||||
T copy();
|
||||
|
||||
/**
|
||||
* create an empty stack.
|
||||
*
|
||||
* @return a new stack, which represents an empty copy of the original.
|
||||
*/
|
||||
StackType empty();
|
||||
T empty();
|
||||
|
||||
/**
|
||||
* @return true if the stack is a {@link IAEItemStack}
|
||||
@@ -196,7 +196,7 @@ public interface IAEStack<StackType extends IAEStack<StackType>>
|
||||
/**
|
||||
* @return ITEM or FLUID
|
||||
*/
|
||||
IStorageChannel getChannel();
|
||||
IStorageChannel<T> getChannel();
|
||||
|
||||
/**
|
||||
* Returns itemstack for display and similar purposes. Always has a count of 1.
|
||||
|
||||
Reference in New Issue
Block a user