Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b82df25c75 | |||
| cc9b33b473 | |||
| 5496b746ea | |||
| f80f623ccf | |||
| cba6c5500f | |||
| bc8268af94 | |||
| 297cd16702 | |||
| 41711e50b9 | |||
| 2bfb8b75e8 | |||
| 58e96aa3de | |||
| 4f07b63b13 | |||
| 905dd6c888 | |||
| ab7f35a9ee |
@@ -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 );
|
||||
|
||||
}
|
||||
@@ -26,5 +26,5 @@ package appeng.api.config;
|
||||
|
||||
public enum SearchBoxMode
|
||||
{
|
||||
AUTOSEARCH, MANUAL_SEARCH, JEI_AUTOSEARCH, JEI_MANUAL_SEARCH
|
||||
AUTOSEARCH, AUTOSEARCH_KEEP, MANUAL_SEARCH, MANUAL_SEARCH_KEEP, JEI_AUTOSEARCH, JEI_AUTOSEARCH_KEEP, JEI_MANUAL_SEARCH, JEI_MANUAL_SEARCH_KEEP
|
||||
}
|
||||
|
||||
@@ -33,29 +33,53 @@ public enum Settings
|
||||
{
|
||||
LEVEL_EMITTER_MODE( EnumSet.allOf( LevelEmitterMode.class ) ),
|
||||
|
||||
REDSTONE_EMITTER( EnumSet.of( RedstoneMode.HIGH_SIGNAL, RedstoneMode.LOW_SIGNAL ) ), REDSTONE_CONTROLLED( EnumSet.allOf( RedstoneMode.class ) ),
|
||||
REDSTONE_EMITTER( EnumSet.of( RedstoneMode.HIGH_SIGNAL, RedstoneMode.LOW_SIGNAL ) ),
|
||||
|
||||
REDSTONE_CONTROLLED( EnumSet.allOf( RedstoneMode.class ) ),
|
||||
|
||||
CONDENSER_OUTPUT( EnumSet.allOf( CondenserOutput.class ) ),
|
||||
|
||||
POWER_UNITS( EnumSet.allOf( PowerUnits.class ) ), ACCESS( EnumSet.of( AccessRestriction.READ_WRITE, AccessRestriction.READ, AccessRestriction.WRITE ) ),
|
||||
POWER_UNITS( EnumSet.allOf( PowerUnits.class ) ),
|
||||
|
||||
SORT_DIRECTION( EnumSet.allOf( SortDir.class ) ), SORT_BY( EnumSet.allOf( SortOrder.class ) ),
|
||||
ACCESS( EnumSet.of( AccessRestriction.READ_WRITE, AccessRestriction.READ, AccessRestriction.WRITE ) ),
|
||||
|
||||
SEARCH_TOOLTIPS( EnumSet.of( YesNo.YES, YesNo.NO ) ), VIEW_MODE( EnumSet.allOf( ViewItems.class ) ), SEARCH_MODE( EnumSet.allOf( SearchBoxMode.class ) ),
|
||||
SORT_DIRECTION( EnumSet.allOf( SortDir.class ) ),
|
||||
|
||||
ACTIONS( EnumSet.allOf( ActionItems.class ) ), IO_DIRECTION( EnumSet.of( RelativeDirection.LEFT, RelativeDirection.RIGHT ) ),
|
||||
SORT_BY( EnumSet.allOf( SortOrder.class ) ),
|
||||
|
||||
BLOCK( EnumSet.of( YesNo.YES, YesNo.NO ) ), OPERATION_MODE( EnumSet.allOf( OperationMode.class ) ),
|
||||
SEARCH_TOOLTIPS( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||
|
||||
FULLNESS_MODE( EnumSet.allOf( FullnessMode.class ) ), CRAFT_ONLY( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||
VIEW_MODE( EnumSet.allOf( ViewItems.class ) ),
|
||||
|
||||
FUZZY_MODE( EnumSet.allOf( FuzzyMode.class ) ), LEVEL_TYPE( EnumSet.allOf( LevelType.class ) ),
|
||||
SEARCH_MODE( EnumSet.allOf( SearchBoxMode.class ) ),
|
||||
|
||||
TERMINAL_STYLE( EnumSet.of( TerminalStyle.TALL, TerminalStyle.SMALL ) ), COPY_MODE( EnumSet.allOf( CopyMode.class ) ),
|
||||
ACTIONS( EnumSet.allOf( ActionItems.class ) ),
|
||||
|
||||
INTERFACE_TERMINAL( EnumSet.of( YesNo.YES, YesNo.NO ) ), CRAFT_VIA_REDSTONE( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||
IO_DIRECTION( EnumSet.of( RelativeDirection.LEFT, RelativeDirection.RIGHT ) ),
|
||||
|
||||
STORAGE_FILTER( EnumSet.allOf( StorageFilter.class ) ), PLACE_BLOCK( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||
BLOCK( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||
|
||||
OPERATION_MODE( EnumSet.allOf( OperationMode.class ) ),
|
||||
|
||||
FULLNESS_MODE( EnumSet.allOf( FullnessMode.class ) ),
|
||||
|
||||
CRAFT_ONLY( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||
|
||||
FUZZY_MODE( EnumSet.allOf( FuzzyMode.class ) ),
|
||||
|
||||
LEVEL_TYPE( EnumSet.allOf( LevelType.class ) ),
|
||||
|
||||
TERMINAL_STYLE( EnumSet.of( TerminalStyle.TALL, TerminalStyle.SMALL ) ),
|
||||
|
||||
COPY_MODE( EnumSet.allOf( CopyMode.class ) ),
|
||||
|
||||
INTERFACE_TERMINAL( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||
|
||||
CRAFT_VIA_REDSTONE( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||
|
||||
STORAGE_FILTER( EnumSet.allOf( StorageFilter.class ) ),
|
||||
|
||||
PLACE_BLOCK( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||
|
||||
SCHEDULING_MODE( EnumSet.allOf( SchedulingMode.class ) );
|
||||
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -100,14 +100,12 @@ public abstract class AEBaseBlock extends Block
|
||||
return new BlockStateContainer( this, this.getAEStates() );
|
||||
}
|
||||
|
||||
@SuppressWarnings( "deprecation" )
|
||||
@Override
|
||||
public final boolean isNormalCube( IBlockState state )
|
||||
{
|
||||
return this.isFullSize() && this.isOpaque();
|
||||
}
|
||||
|
||||
@SuppressWarnings( "deprecation" )
|
||||
@Override
|
||||
public AxisAlignedBB getBoundingBox( IBlockState state, IBlockAccess source, BlockPos pos )
|
||||
{
|
||||
@@ -226,7 +224,6 @@ public abstract class AEBaseBlock extends Block
|
||||
return super.getSelectedBoundingBox( state, w, pos );
|
||||
}
|
||||
|
||||
@SuppressWarnings( "deprecation" )
|
||||
@Override
|
||||
public final boolean isOpaqueCube( IBlockState state )
|
||||
{
|
||||
@@ -281,14 +278,12 @@ public abstract class AEBaseBlock extends Block
|
||||
return super.collisionRayTrace( state, w, pos, a, b );
|
||||
}
|
||||
|
||||
@SuppressWarnings( "deprecation" )
|
||||
@Override
|
||||
public boolean hasComparatorInputOverride( IBlockState state )
|
||||
{
|
||||
return this.isInventory();
|
||||
}
|
||||
|
||||
@SuppressWarnings( "deprecation" )
|
||||
@Override
|
||||
public int getComparatorInputOverride( IBlockState state, final World worldIn, final BlockPos pos )
|
||||
{
|
||||
|
||||
@@ -67,7 +67,6 @@ public class AEBaseItemBlock extends ItemBlock
|
||||
|
||||
@Override
|
||||
@SideOnly( Side.CLIENT )
|
||||
@SuppressWarnings( "unchecked" )
|
||||
public final void addInformation( final ItemStack itemStack, final World world, final List<String> toolTip, final ITooltipFlag advancedTooltips )
|
||||
{
|
||||
this.addCheckedInformation( itemStack, world, toolTip, advancedTooltips );
|
||||
|
||||
@@ -37,13 +37,17 @@ import net.minecraft.init.SoundEvents;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.SoundCategory;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.Explosion;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.common.registry.EntityRegistry;
|
||||
|
||||
import appeng.block.AEBaseBlock;
|
||||
import appeng.core.AppEng;
|
||||
import appeng.entity.EntityIds;
|
||||
import appeng.entity.EntityTinyTNTPrimed;
|
||||
import appeng.helpers.ICustomCollision;
|
||||
|
||||
@@ -54,15 +58,24 @@ public class BlockTinyTNT extends AEBaseBlock implements ICustomCollision
|
||||
public BlockTinyTNT()
|
||||
{
|
||||
super( Material.TNT );
|
||||
this.setLightOpacity( 1 );
|
||||
|
||||
this.boundingBox = new AxisAlignedBB( 0.25f, 0.0f, 0.25f, 0.75f, 0.5f, 0.75f );
|
||||
this.setFullSize( this.setOpaque( false ) );
|
||||
|
||||
this.setLightOpacity( 2 );
|
||||
this.setFullSize( false );
|
||||
this.setOpaque( false );
|
||||
|
||||
this.setSoundType( SoundType.GROUND );
|
||||
this.setHardness( 0F );
|
||||
|
||||
// TODO: 1.11
|
||||
// EntityRegistry.registerModEntity( EntityTinyTNTPrimed.class, "EntityTinyTNTPrimed", EntityIds.get(
|
||||
// EntityTinyTNTPrimed.class ), AppEng.instance(), 16, 4, true );
|
||||
EntityRegistry.registerModEntity( new ResourceLocation( AppEng.MOD_ID, EntityTinyTNTPrimed.class.getName() ), EntityTinyTNTPrimed.class,
|
||||
"EntityTinyTNTPrimed", EntityIds.get( EntityTinyTNTPrimed.class ), AppEng.instance(), 16, 4, true );
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFullCube( IBlockState state )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -97,7 +97,6 @@ public class BlockController extends AEBaseTileBlock
|
||||
* controllers and the network state of this controller (offline, online, conflicted). This is used to
|
||||
* get a rudimentary connected texture feel for the controller based on how it is placed.
|
||||
*/
|
||||
@SuppressWarnings( "deprecation" )
|
||||
@Override
|
||||
public IBlockState getActualState( IBlockState state, IBlockAccess world, BlockPos pos )
|
||||
{
|
||||
@@ -160,7 +159,6 @@ public class BlockController extends AEBaseTileBlock
|
||||
return state.getValue( CONTROLLER_STATE ).ordinal();
|
||||
}
|
||||
|
||||
@SuppressWarnings( "deprecation" )
|
||||
@Override
|
||||
public IBlockState getStateFromMeta( final int meta )
|
||||
{
|
||||
@@ -174,7 +172,6 @@ public class BlockController extends AEBaseTileBlock
|
||||
return BlockRenderLayer.CUTOUT;
|
||||
}
|
||||
|
||||
@SuppressWarnings( "deprecation" )
|
||||
@Override
|
||||
public void neighborChanged( IBlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos )
|
||||
{
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* This file is part of Applied Energistics 2.
|
||||
* Copyright (c) 2013 - 2017, AlgorithmX2, All rights reserved.
|
||||
*
|
||||
* Applied Energistics 2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Applied Energistics 2 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
|
||||
*/
|
||||
|
||||
package appeng.bootstrap;
|
||||
|
||||
|
||||
import net.minecraft.advancements.ICriterionInstance;
|
||||
import net.minecraft.advancements.ICriterionTrigger;
|
||||
|
||||
|
||||
@FunctionalInterface
|
||||
public interface ICriterionTriggerRegistry
|
||||
{
|
||||
void register( ICriterionTrigger<? extends ICriterionInstance> trigger );
|
||||
}
|
||||
@@ -140,7 +140,6 @@ public abstract class AEBaseGui extends GuiContainer
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings( "unchecked" )
|
||||
private List<Slot> getInventorySlots()
|
||||
{
|
||||
return this.inventorySlots.inventorySlots;
|
||||
|
||||
@@ -120,7 +120,6 @@ public abstract class AEBaseMEGui extends AEBaseGui
|
||||
ITooltipFlag.TooltipFlags tooltipFlag = this.mc.gameSettings.advancedItemTooltips ? ITooltipFlag.TooltipFlags.ADVANCED : ITooltipFlag.TooltipFlags.NORMAL;
|
||||
if( myStack != null )
|
||||
{
|
||||
@SuppressWarnings( "unchecked" )
|
||||
final List<String> currentToolTip = stack.getTooltip( this.mc.player, tooltipFlag );
|
||||
|
||||
if( myStack.getStackSize() > BigNumber || ( myStack.getStackSize() > 1 && stack.isItemDamaged() ) )
|
||||
|
||||
@@ -292,6 +292,7 @@ public class GuiMEMonitorable extends AEBaseMEGui implements ISortSource, IConfi
|
||||
this.buttonList.add(
|
||||
this.searchBoxSettings = new GuiImgButton( this.guiLeft - 18, offset, Settings.SEARCH_MODE, AEConfig.instance().getConfigManager().getSetting(
|
||||
Settings.SEARCH_MODE ) ) );
|
||||
|
||||
offset += 20;
|
||||
|
||||
if( !( this instanceof GuiMEPortableCell ) || this instanceof GuiWirelessTerm )
|
||||
@@ -315,16 +316,22 @@ public class GuiMEMonitorable extends AEBaseMEGui implements ISortSource, IConfi
|
||||
this.craftingStatusBtn.setHideEdge( 13 );
|
||||
}
|
||||
|
||||
final Enum setting = AEConfig.instance().getConfigManager().getSetting( Settings.SEARCH_MODE );
|
||||
this.searchField.setFocused( SearchBoxMode.AUTOSEARCH == setting || SearchBoxMode.JEI_AUTOSEARCH == setting );
|
||||
this.searchField.setCanLoseFocus( SearchBoxMode.MANUAL_SEARCH == setting || SearchBoxMode.JEI_MANUAL_SEARCH == setting );
|
||||
final Enum searchModeSetting = AEConfig.instance().getConfigManager().getSetting( Settings.SEARCH_MODE );
|
||||
|
||||
if( setting == SearchBoxMode.JEI_AUTOSEARCH || setting == SearchBoxMode.JEI_MANUAL_SEARCH )
|
||||
final boolean isAutoFocus = SearchBoxMode.AUTOSEARCH == searchModeSetting || SearchBoxMode.JEI_AUTOSEARCH == searchModeSetting || SearchBoxMode.AUTOSEARCH_KEEP == searchModeSetting || SearchBoxMode.JEI_AUTOSEARCH_KEEP == searchModeSetting;
|
||||
final boolean isManualFocus = SearchBoxMode.MANUAL_SEARCH == searchModeSetting || SearchBoxMode.JEI_MANUAL_SEARCH == searchModeSetting || SearchBoxMode.MANUAL_SEARCH_KEEP == searchModeSetting || SearchBoxMode.JEI_MANUAL_SEARCH_KEEP == searchModeSetting;
|
||||
final boolean isKeepFilter = SearchBoxMode.AUTOSEARCH_KEEP == searchModeSetting || SearchBoxMode.JEI_AUTOSEARCH_KEEP == searchModeSetting || SearchBoxMode.MANUAL_SEARCH_KEEP == searchModeSetting || SearchBoxMode.JEI_MANUAL_SEARCH_KEEP == searchModeSetting;
|
||||
final boolean isJEIEnabled = SearchBoxMode.JEI_AUTOSEARCH == searchModeSetting || SearchBoxMode.JEI_MANUAL_SEARCH == searchModeSetting;
|
||||
|
||||
this.searchField.setFocused( isAutoFocus );
|
||||
this.searchField.setCanLoseFocus( isManualFocus );
|
||||
|
||||
if( isJEIEnabled )
|
||||
{
|
||||
memoryText = Integrations.jei().getSearchText();
|
||||
}
|
||||
|
||||
if( memoryText != null && !memoryText.isEmpty() )
|
||||
if( isKeepFilter && memoryText != null && !memoryText.isEmpty() )
|
||||
{
|
||||
this.searchField.setText( memoryText );
|
||||
this.searchField.selectAll();
|
||||
@@ -359,6 +366,7 @@ public class GuiMEMonitorable extends AEBaseMEGui implements ISortSource, IConfi
|
||||
|
||||
craftingGridOffsetX -= 25;
|
||||
craftingGridOffsetY -= 6;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -110,6 +110,13 @@ public class GuiImgButton extends GuiButton implements ITooltip
|
||||
this.registerApp( 16 * 2 + 5, Settings.SEARCH_MODE, SearchBoxMode.JEI_AUTOSEARCH, ButtonToolTips.SearchMode, ButtonToolTips.SearchMode_JEIAuto );
|
||||
this.registerApp( 16 * 2 + 6, Settings.SEARCH_MODE, SearchBoxMode.JEI_MANUAL_SEARCH, ButtonToolTips.SearchMode,
|
||||
ButtonToolTips.SearchMode_JEIStandard );
|
||||
this.registerApp( 16 * 2 + 7, Settings.SEARCH_MODE, SearchBoxMode.AUTOSEARCH_KEEP, ButtonToolTips.SearchMode, ButtonToolTips.SearchMode_AutoKeep );
|
||||
this.registerApp( 16 * 2 + 8, Settings.SEARCH_MODE, SearchBoxMode.MANUAL_SEARCH_KEEP, ButtonToolTips.SearchMode,
|
||||
ButtonToolTips.SearchMode_StandardKeep );
|
||||
this.registerApp( 16 * 2 + 9, Settings.SEARCH_MODE, SearchBoxMode.JEI_AUTOSEARCH_KEEP, ButtonToolTips.SearchMode,
|
||||
ButtonToolTips.SearchMode_JEIAutoKeep );
|
||||
this.registerApp( 16 * 2 + 10, Settings.SEARCH_MODE, SearchBoxMode.JEI_MANUAL_SEARCH_KEEP, ButtonToolTips.SearchMode,
|
||||
ButtonToolTips.SearchMode_JEIStandardKeep );
|
||||
|
||||
this.registerApp( 16 * 5 + 3, Settings.LEVEL_TYPE, LevelType.ENERGY_LEVEL, ButtonToolTips.LevelType, ButtonToolTips.LevelType_Energy );
|
||||
this.registerApp( 16 * 4 + 3, Settings.LEVEL_TYPE, LevelType.ITEM_LEVEL, ButtonToolTips.LevelType, ButtonToolTips.LevelType_Item );
|
||||
|
||||
@@ -112,14 +112,13 @@ public class ItemRepo
|
||||
|
||||
final Enum viewMode = this.sortSrc.getSortDisplay();
|
||||
final Enum searchMode = AEConfig.instance().getConfigManager().getSetting( Settings.SEARCH_MODE );
|
||||
if( searchMode == SearchBoxMode.JEI_AUTOSEARCH || searchMode == SearchBoxMode.JEI_MANUAL_SEARCH )
|
||||
if( searchMode == SearchBoxMode.JEI_AUTOSEARCH || searchMode == SearchBoxMode.JEI_MANUAL_SEARCH || searchMode == SearchBoxMode.JEI_AUTOSEARCH_KEEP || searchMode == SearchBoxMode.JEI_MANUAL_SEARCH_KEEP )
|
||||
{
|
||||
this.updateJEI( this.searchString );
|
||||
}
|
||||
|
||||
this.innerSearch = this.searchString;
|
||||
final boolean terminalSearchToolTips = AEConfig.instance().getConfigManager().getSetting( Settings.SEARCH_TOOLTIPS ) != YesNo.NO;
|
||||
// boolean terminalSearchMods = Configuration.INSTANCE.settings.getSetting( Settings.SEARCH_MODS ) != YesNo.NO;
|
||||
|
||||
boolean searchMod = false;
|
||||
if( this.innerSearch.startsWith( "@" ) )
|
||||
|
||||
@@ -168,6 +168,8 @@ public class CableBusBakedModel implements IBakedModel
|
||||
return firstType == AECableType.DENSE_COVERED && secondType == AECableType.DENSE_COVERED;
|
||||
case DENSE_SMART:
|
||||
return firstType == AECableType.DENSE_SMART && secondType == AECableType.DENSE_SMART;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -208,6 +210,8 @@ public class CableBusBakedModel implements IBakedModel
|
||||
case DENSE_SMART:
|
||||
this.cableBuilder.addStraightDenseSmartConnection( facing, cableColor, renderState.getChannelsOnSide().get( facing ), quadsOut );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return; // Don't render the other form of connection
|
||||
@@ -237,6 +241,8 @@ public class CableBusBakedModel implements IBakedModel
|
||||
case DENSE_SMART:
|
||||
// Dense cables do not render connections to parts since none can be attached
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -265,6 +271,8 @@ public class CableBusBakedModel implements IBakedModel
|
||||
case DENSE_SMART:
|
||||
this.cableBuilder.addDenseSmartConnection( facing, cableColor, connectionType, cableBusAdjacent, channels, quadsOut );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@ public abstract class AEBaseContainer extends Container
|
||||
final NBTTagCompound data = CompressedStreamTools.readCompressed( new ByteArrayInputStream( buffer ) );
|
||||
if( data != null )
|
||||
{
|
||||
this.setTargetStack( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createStack( new ItemStack( data ) ) );
|
||||
this.setTargetStack( AEItemStack.fromNBT( data ) );
|
||||
}
|
||||
}
|
||||
catch( final IOException e )
|
||||
@@ -1108,7 +1108,8 @@ public abstract class AEBaseContainer extends Container
|
||||
{
|
||||
try
|
||||
{
|
||||
NetworkHandler.instance().sendTo( new PacketInventoryAction( InventoryAction.UPDATE_HAND, 0, AEItemStack.fromItemStack( p.inventory.getItemStack() ) ),
|
||||
NetworkHandler.instance().sendTo(
|
||||
new PacketInventoryAction( InventoryAction.UPDATE_HAND, 0, AEItemStack.fromItemStack( p.inventory.getItemStack() ) ),
|
||||
p );
|
||||
}
|
||||
catch( final IOException e )
|
||||
|
||||
@@ -51,6 +51,7 @@ import appeng.core.crash.CrashInfo;
|
||||
import appeng.core.crash.IntegrationCrashEnhancement;
|
||||
import appeng.core.crash.ModCrashEnhancement;
|
||||
import appeng.core.features.AEFeature;
|
||||
import appeng.core.stats.AdvancementTriggers;
|
||||
import appeng.core.sync.GuiBridge;
|
||||
import appeng.core.sync.network.NetworkHandler;
|
||||
import appeng.core.worlddata.WorldData;
|
||||
@@ -141,6 +142,11 @@ public final class AppEng
|
||||
return this.registration.storageDimensionID;
|
||||
}
|
||||
|
||||
public AdvancementTriggers getAdvancementTriggers()
|
||||
{
|
||||
return this.registration.advancementTriggers;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
private void preInit( final FMLPreInitializationEvent event )
|
||||
{
|
||||
|
||||
@@ -20,6 +20,8 @@ package appeng.core;
|
||||
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -27,6 +29,9 @@ import javax.annotation.Nonnull;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
import net.minecraft.advancements.CriteriaTriggers;
|
||||
import net.minecraft.advancements.ICriterionInstance;
|
||||
import net.minecraft.advancements.ICriterionTrigger;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.ItemMeshDefinition;
|
||||
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
|
||||
@@ -49,6 +54,7 @@ import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
|
||||
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import net.minecraftforge.fml.relauncher.ReflectionHelper;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import net.minecraftforge.registries.IForgeRegistry;
|
||||
@@ -72,6 +78,7 @@ import appeng.api.networking.storage.IStorageGrid;
|
||||
import appeng.api.networking.ticking.ITickManager;
|
||||
import appeng.api.parts.IPartHelper;
|
||||
import appeng.api.recipes.IRecipeHandler;
|
||||
import appeng.bootstrap.ICriterionTriggerRegistry;
|
||||
import appeng.bootstrap.IModelRegistry;
|
||||
import appeng.bootstrap.components.IBlockRegistrationComponent;
|
||||
import appeng.bootstrap.components.IInitComponent;
|
||||
@@ -88,7 +95,9 @@ import appeng.core.features.registries.cell.BasicCellHandler;
|
||||
import appeng.core.features.registries.cell.CreativeCellHandler;
|
||||
import appeng.core.localization.GuiText;
|
||||
import appeng.core.localization.PlayerMessages;
|
||||
import appeng.core.stats.PlayerStatsRegistration;
|
||||
import appeng.core.stats.AdvancementTriggers;
|
||||
import appeng.core.stats.PartItemPredicate;
|
||||
import appeng.core.stats.Stats;
|
||||
import appeng.core.worlddata.SpatialDimensionManager;
|
||||
import appeng.hooks.TickHandler;
|
||||
import appeng.items.materials.ItemMaterial;
|
||||
@@ -131,6 +140,7 @@ final class Registration
|
||||
DimensionType storageDimensionType;
|
||||
int storageDimensionID;
|
||||
Biome storageBiome;
|
||||
AdvancementTriggers advancementTriggers;
|
||||
|
||||
private File recipeDirectory;
|
||||
private CustomRecipeConfig customRecipeConfig;
|
||||
@@ -286,9 +296,9 @@ final class Registration
|
||||
registries.matterCannon().registerAmmo( ammoStack, weight );
|
||||
} );
|
||||
|
||||
final PlayerStatsRegistration registration = new PlayerStatsRegistration( MinecraftForge.EVENT_BUS, AEConfig.instance() );
|
||||
registration.registerAchievementHandlers();
|
||||
registration.registerAchievements();
|
||||
PartItemPredicate.register();
|
||||
Stats.register();
|
||||
this.advancementTriggers = new AdvancementTriggers( new CriterionTrigggerRegistry() );
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
@@ -581,4 +591,29 @@ final class Registration
|
||||
}
|
||||
}
|
||||
|
||||
private static class CriterionTrigggerRegistry implements ICriterionTriggerRegistry
|
||||
{
|
||||
private Method method;
|
||||
|
||||
CriterionTrigggerRegistry()
|
||||
{
|
||||
this.method = ReflectionHelper.findMethod( CriteriaTriggers.class, "register", "func_192118_a", ICriterionTrigger.class );
|
||||
method.setAccessible( true );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register( ICriterionTrigger<? extends ICriterionInstance> trigger )
|
||||
{
|
||||
try
|
||||
{
|
||||
method.invoke( null, trigger );
|
||||
}
|
||||
catch( IllegalAccessException | IllegalArgumentException | InvocationTargetException e )
|
||||
{
|
||||
AELog.debug( e );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ package appeng.core.api;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
import appeng.api.exceptions.FailedConnection;
|
||||
import appeng.api.exceptions.FailedConnectionException;
|
||||
import appeng.api.networking.IGridBlock;
|
||||
import appeng.api.networking.IGridConnection;
|
||||
import appeng.api.networking.IGridHelper;
|
||||
@@ -54,7 +54,7 @@ public class ApiGrid implements IGridHelper
|
||||
}
|
||||
|
||||
@Override
|
||||
public IGridConnection createGridConnection( final IGridNode a, final IGridNode b ) throws FailedConnection
|
||||
public IGridConnection createGridConnection( final IGridNode a, final IGridNode b ) throws FailedConnectionException
|
||||
{
|
||||
Preconditions.checkNotNull( a );
|
||||
Preconditions.checkNotNull( b );
|
||||
|
||||
@@ -343,7 +343,7 @@ public final class ApiItems implements IItems
|
||||
@Override
|
||||
public IItemDefinition chargedStaff()
|
||||
{
|
||||
return this.memoryCard;
|
||||
return this.chargedStaff;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ package appeng.core.api.definitions;
|
||||
|
||||
import appeng.api.definitions.IItemDefinition;
|
||||
import appeng.api.definitions.IParts;
|
||||
import appeng.api.exceptions.MissingDefinition;
|
||||
import appeng.api.exceptions.MissingDefinitionException;
|
||||
import appeng.api.util.AEColor;
|
||||
import appeng.api.util.AEColoredItemDefinition;
|
||||
import appeng.bootstrap.FeatureFactory;
|
||||
@@ -180,28 +180,28 @@ public final class ApiParts implements IParts
|
||||
@Override
|
||||
public AEColoredItemDefinition lumenCableSmart()
|
||||
{
|
||||
throw new MissingDefinition( "Lumen Smart Cable has yet to be implemented." );
|
||||
throw new MissingDefinitionException( "Lumen Smart Cable has yet to be implemented." );
|
||||
// return this.lumenCableSmart;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AEColoredItemDefinition lumenCableCovered()
|
||||
{
|
||||
throw new MissingDefinition( "Lumen Covered Cable has yet to be implemented." );
|
||||
throw new MissingDefinitionException( "Lumen Covered Cable has yet to be implemented." );
|
||||
// return this.lumenCableCovered;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AEColoredItemDefinition lumenCableGlass()
|
||||
{
|
||||
throw new MissingDefinition( "Lumen Glass Cable has yet to be implemented." );
|
||||
throw new MissingDefinitionException( "Lumen Glass Cable has yet to be implemented." );
|
||||
// return this.lumenCableGlass;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AEColoredItemDefinition lumenDenseCableSmart()
|
||||
{
|
||||
throw new MissingDefinition( "Lumen Dense Cable has yet to be implemented." );
|
||||
throw new MissingDefinitionException( "Lumen Dense Cable has yet to be implemented." );
|
||||
// return this.lumenCableDense;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ import appeng.api.storage.IMEInventoryHandler;
|
||||
import appeng.api.storage.ISaveProvider;
|
||||
import appeng.api.storage.IStorageChannel;
|
||||
import appeng.api.storage.channels.IItemStorageChannel;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
import appeng.api.util.AEPartLocation;
|
||||
import appeng.core.sync.GuiBridge;
|
||||
import appeng.me.storage.CellInventory;
|
||||
@@ -50,7 +51,7 @@ public class BasicCellHandler implements ICellHandler
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMEInventoryHandler getCellInventory( final ItemStack is, final ISaveProvider container, final IStorageChannel channel )
|
||||
public <T extends IAEStack<T>> IMEInventoryHandler<T> getCellInventory( final ItemStack is, final ISaveProvider container, final IStorageChannel<T> channel )
|
||||
{
|
||||
if( channel == AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) )
|
||||
{
|
||||
|
||||
@@ -29,6 +29,7 @@ import appeng.api.storage.ICellRegistry;
|
||||
import appeng.api.storage.IMEInventoryHandler;
|
||||
import appeng.api.storage.ISaveProvider;
|
||||
import appeng.api.storage.IStorageChannel;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
|
||||
|
||||
public class CellRegistry implements ICellRegistry
|
||||
@@ -85,7 +86,7 @@ public class CellRegistry implements ICellRegistry
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMEInventoryHandler getCellInventory( final ItemStack is, final ISaveProvider container, final IStorageChannel chan )
|
||||
public <T extends IAEStack<T>> IMEInventoryHandler<T> getCellInventory( final ItemStack is, final ISaveProvider container, final IStorageChannel<T> chan )
|
||||
{
|
||||
if( is.isEmpty() )
|
||||
{
|
||||
|
||||
@@ -64,11 +64,15 @@ public enum ButtonToolTips
|
||||
|
||||
TransferToStorageCell,
|
||||
ToggleSortDirection,
|
||||
SearchMode_Auto,
|
||||
|
||||
SearchMode_Auto,
|
||||
SearchMode_Standard,
|
||||
SearchMode_JEIAuto,
|
||||
SearchMode_JEIStandard,
|
||||
SearchMode_AutoKeep,
|
||||
SearchMode_StandardKeep,
|
||||
SearchMode_JEIAutoKeep,
|
||||
SearchMode_JEIStandardKeep,
|
||||
|
||||
SearchMode,
|
||||
ItemName,
|
||||
@@ -137,7 +141,11 @@ public enum ButtonToolTips
|
||||
SchedulingMode,
|
||||
SchedulingModeDefault,
|
||||
SchedulingModeRoundRobin,
|
||||
SchedulingModeRandom;
|
||||
SchedulingModeRandom,
|
||||
|
||||
FilterMode,
|
||||
FilterModeKeep,
|
||||
FilterModeClear;
|
||||
|
||||
private final String root;
|
||||
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
/*
|
||||
* This file is part of Applied Energistics 2.
|
||||
* Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
|
||||
*
|
||||
* Applied Energistics 2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Applied Energistics 2 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
|
||||
*/
|
||||
|
||||
package appeng.core.stats;
|
||||
|
||||
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.gameevent.PlayerEvent;
|
||||
|
||||
import appeng.util.Platform;
|
||||
|
||||
|
||||
/**
|
||||
* handles the achievement when an {@link net.minecraft.item.Item} is crafted by a player.
|
||||
* The achievement is only added if its a real {@link net.minecraft.entity.player.EntityPlayer}.
|
||||
*
|
||||
* @author thatsIch
|
||||
* @since rv2
|
||||
*/
|
||||
public class AchievementCraftingHandler
|
||||
{
|
||||
private final PlayerDifferentiator differentiator;
|
||||
|
||||
public AchievementCraftingHandler( final PlayerDifferentiator differentiator )
|
||||
{
|
||||
this.differentiator = differentiator;
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onPlayerCraftingEvent( final PlayerEvent.ItemCraftedEvent event )
|
||||
{
|
||||
if( this.differentiator.isNoPlayer( event.player ) || event.crafting.isEmpty() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for( final Achievements achievement : Achievements.values() )
|
||||
{
|
||||
switch( achievement.getType() )
|
||||
{
|
||||
case Craft:
|
||||
if( Platform.itemComparisons().isSameItem( achievement.getStack(), event.crafting ) )
|
||||
{
|
||||
achievement.addToPlayer( event.player );
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case CraftItem:
|
||||
if( achievement.getStack() != null && achievement.getStack().getItem().getClass() == event.crafting.getItem().getClass() )
|
||||
{
|
||||
achievement.addToPlayer( event.player );
|
||||
return;
|
||||
}
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
/*
|
||||
* This file is part of Applied Energistics 2.
|
||||
* Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
|
||||
*
|
||||
* Applied Energistics 2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Applied Energistics 2 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
|
||||
*/
|
||||
|
||||
package appeng.core.stats;
|
||||
|
||||
|
||||
/**
|
||||
* Hierarchy of the AE2 achievements
|
||||
*
|
||||
* @author thatsIch
|
||||
* @since rv2
|
||||
*/
|
||||
public class AchievementHierarchy
|
||||
{
|
||||
/**
|
||||
* Setup hierarchy through assigning parents.
|
||||
*/
|
||||
void registerAchievementHierarchy()
|
||||
{
|
||||
// Achievements.Presses.setParent( Achievements.Compass );
|
||||
//
|
||||
// Achievements.Fluix.setParent( Achievements.ChargedQuartz );
|
||||
//
|
||||
// Achievements.Charger.setParent( Achievements.Fluix );
|
||||
//
|
||||
// Achievements.CrystalGrowthAccelerator.setParent( Achievements.Charger );
|
||||
//
|
||||
// Achievements.GlassCable.setParent( Achievements.Charger );
|
||||
//
|
||||
// Achievements.SpatialIOExplorer.setParent( Achievements.SpatialIO );
|
||||
//
|
||||
// Achievements.IOPort.setParent( Achievements.StorageCell );
|
||||
//
|
||||
// Achievements.PatternTerminal.setParent( Achievements.CraftingTerminal );
|
||||
//
|
||||
// Achievements.Controller.setParent( Achievements.Networking1 );
|
||||
//
|
||||
// Achievements.Networking2.setParent( Achievements.Controller );
|
||||
//
|
||||
// Achievements.Networking3.setParent( Achievements.Networking2 );
|
||||
//
|
||||
// Achievements.P2P.setParent( Achievements.Controller );
|
||||
//
|
||||
// Achievements.Recursive.setParent( Achievements.Controller );
|
||||
}
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
/*
|
||||
* This file is part of Applied Energistics 2.
|
||||
* Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
|
||||
*
|
||||
* Applied Energistics 2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Applied Energistics 2 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
|
||||
*/
|
||||
|
||||
package appeng.core.stats;
|
||||
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.gameevent.PlayerEvent;
|
||||
|
||||
import appeng.util.Platform;
|
||||
|
||||
|
||||
/**
|
||||
* handles the achievement when an {@link net.minecraft.item.Item} is picked up by a player.
|
||||
* The achievement is only added if its a real {@link net.minecraft.entity.player.EntityPlayer}.
|
||||
*
|
||||
* @author thatsIch
|
||||
* @since rv2
|
||||
*/
|
||||
public class AchievementPickupHandler
|
||||
{
|
||||
private final PlayerDifferentiator differentiator;
|
||||
|
||||
public AchievementPickupHandler( final PlayerDifferentiator differentiator )
|
||||
{
|
||||
this.differentiator = differentiator;
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onItemPickUp( final PlayerEvent.ItemPickupEvent event )
|
||||
{
|
||||
if( this.differentiator.isNoPlayer( event.player ) || event.pickedUp == null || event.pickedUp.getItem().isEmpty() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final ItemStack is = event.pickedUp.getItem();
|
||||
|
||||
for( final Achievements achievement : Achievements.values() )
|
||||
{
|
||||
if( achievement.getType() == AchievementType.Pickup && Platform.itemComparisons().isSameItem( achievement.getStack(), is ) )
|
||||
{
|
||||
achievement.addToPlayer( event.player );
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,173 +0,0 @@
|
||||
/*
|
||||
* This file is part of Applied Energistics 2.
|
||||
* Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
|
||||
*
|
||||
* Applied Energistics 2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Applied Energistics 2 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
|
||||
*/
|
||||
|
||||
package appeng.core.stats;
|
||||
|
||||
|
||||
import net.minecraft.advancements.Advancement;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.definitions.IItemDefinition;
|
||||
import appeng.api.util.AEColor;
|
||||
import appeng.api.util.AEColoredItemDefinition;
|
||||
|
||||
|
||||
public enum Achievements
|
||||
{
|
||||
// done
|
||||
Compass( -2, -4, AEApi.instance().definitions().blocks().skyCompass(), AchievementType.Craft ),
|
||||
|
||||
// done
|
||||
Presses( -2, -2, AEApi.instance().definitions().materials().logicProcessorPress(), AchievementType.Custom ),
|
||||
|
||||
// done
|
||||
SpatialIO( -4, -4, AEApi.instance().definitions().blocks().spatialIOPort(), AchievementType.Craft ),
|
||||
|
||||
// done
|
||||
SpatialIOExplorer( -4, -2, AEApi.instance().definitions().items().spatialCell128(), AchievementType.Custom ),
|
||||
|
||||
// done
|
||||
StorageCell( -6, -4, AEApi.instance().definitions().items().cell64k(), AchievementType.CraftItem ),
|
||||
|
||||
// done
|
||||
IOPort( -6, -2, AEApi.instance().definitions().blocks().iOPort(), AchievementType.Craft ),
|
||||
|
||||
// done
|
||||
CraftingTerminal( -8, -4, AEApi.instance().definitions().parts().craftingTerminal(), AchievementType.Craft ),
|
||||
|
||||
// done
|
||||
PatternTerminal( -8, -2, AEApi.instance().definitions().parts().patternTerminal(), AchievementType.Craft ),
|
||||
|
||||
// done
|
||||
ChargedQuartz( 0, -4, AEApi.instance().definitions().materials().certusQuartzCrystalCharged(), AchievementType.Pickup ),
|
||||
|
||||
// done
|
||||
Fluix( 0, -2, AEApi.instance().definitions().materials().fluixCrystal(), AchievementType.Pickup ),
|
||||
|
||||
// done
|
||||
Charger( 0, 0, AEApi.instance().definitions().blocks().charger(), AchievementType.Craft ),
|
||||
|
||||
// done
|
||||
CrystalGrowthAccelerator( -2, 0, AEApi.instance().definitions().blocks().quartzGrowthAccelerator(), AchievementType.Craft ),
|
||||
|
||||
// done
|
||||
GlassCable( 2, 0, AEApi.instance().definitions().parts().cableGlass(), AchievementType.Craft ),
|
||||
|
||||
// done
|
||||
Networking1( 4, -6, AEApi.instance().definitions().parts().cableCovered(), AchievementType.Custom ),
|
||||
|
||||
// done
|
||||
Controller( 4, -4, AEApi.instance().definitions().blocks().controller(), AchievementType.Craft ),
|
||||
|
||||
// done
|
||||
Networking2( 4, 0, AEApi.instance().definitions().parts().cableSmart(), AchievementType.Custom ),
|
||||
|
||||
// done
|
||||
Networking3( 4, 2, AEApi.instance().definitions().parts().cableDenseSmart(), AchievementType.Custom ),
|
||||
|
||||
// done
|
||||
P2P( 2, -2, AEApi.instance().definitions().parts().p2PTunnelME(), AchievementType.Craft ),
|
||||
|
||||
// done
|
||||
Recursive( 6, -2, AEApi.instance().definitions().blocks().iface(), AchievementType.Craft ),
|
||||
|
||||
// done
|
||||
CraftingCPU( 6, 0, AEApi.instance().definitions().blocks().craftingStorage64k(), AchievementType.CraftItem ),
|
||||
|
||||
// done
|
||||
Facade( 6, 2, AEApi.instance().definitions().items().facade(), AchievementType.CraftItem ),
|
||||
|
||||
// done
|
||||
NetworkTool( 8, 0, AEApi.instance().definitions().items().networkTool(), AchievementType.Craft ),
|
||||
|
||||
// done
|
||||
PortableCell( 8, 2, AEApi.instance().definitions().items().portableCell(), AchievementType.Craft ),
|
||||
|
||||
// done
|
||||
StorageBus( 10, 0, AEApi.instance().definitions().parts().storageBus(), AchievementType.Craft ),
|
||||
|
||||
// done
|
||||
QNB( 10, 2, AEApi.instance().definitions().blocks().quantumLink(), AchievementType.Craft );
|
||||
|
||||
private final ItemStack stack;
|
||||
private final AchievementType type;
|
||||
private final int x;
|
||||
private final int y;
|
||||
|
||||
private Advancement parent;
|
||||
private Advancement stat;
|
||||
|
||||
Achievements( final int x, final int y, final AEColoredItemDefinition which, final AchievementType type )
|
||||
{
|
||||
this.stack = ( which != null ) ? which.stack( AEColor.TRANSPARENT, 1 ) : ItemStack.EMPTY;
|
||||
this.type = type;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
Achievements( final int x, final int y, final IItemDefinition which, final AchievementType type )
|
||||
{
|
||||
this.stack = which.maybeStack( 1 ).orElse( ItemStack.EMPTY );
|
||||
this.type = type;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
Achievements( final int x, final int y, final ItemStack which, final AchievementType type )
|
||||
{
|
||||
this.stack = which;
|
||||
this.type = type;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
void setParent( final Achievements parent )
|
||||
{
|
||||
this.parent = parent.getAchievement();
|
||||
}
|
||||
|
||||
public Advancement getAchievement()
|
||||
{
|
||||
// if( this.stat == null && !this.getStack().isEmpty() )
|
||||
// {
|
||||
// this.stat = new Advancement( "achievement.ae2." + this.name(), "ae2." + this.name(), this.x, this.y,
|
||||
// this.getStack(), this.parent );
|
||||
// this.stat.registerStat();
|
||||
// }
|
||||
|
||||
return this.stat;
|
||||
}
|
||||
|
||||
public void addToPlayer( final EntityPlayer player )
|
||||
{
|
||||
// player.addStat( this.getAchievement(), 1 );
|
||||
}
|
||||
|
||||
AchievementType getType()
|
||||
{
|
||||
return this.type;
|
||||
}
|
||||
|
||||
ItemStack getStack()
|
||||
{
|
||||
return this.stack;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* This file is part of Applied Energistics 2.
|
||||
* Copyright (c) 2013 - 2017, AlgorithmX2, All rights reserved.
|
||||
*
|
||||
* Applied Energistics 2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Applied Energistics 2 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
|
||||
*/
|
||||
|
||||
package appeng.core.stats;
|
||||
|
||||
|
||||
import appeng.bootstrap.ICriterionTriggerRegistry;
|
||||
|
||||
|
||||
public class AdvancementTriggers
|
||||
{
|
||||
private AppEngAdvancementTrigger networkApprentice = new AppEngAdvancementTrigger( "network_apprentice" );
|
||||
private AppEngAdvancementTrigger networkEngineer = new AppEngAdvancementTrigger( "network_engineer" );
|
||||
private AppEngAdvancementTrigger networkAdmin = new AppEngAdvancementTrigger( "network_admin" );
|
||||
private AppEngAdvancementTrigger spatialExplorer = new AppEngAdvancementTrigger( "spatial_explorer" );
|
||||
|
||||
public AdvancementTriggers( ICriterionTriggerRegistry registry )
|
||||
{
|
||||
registry.register( networkApprentice );
|
||||
registry.register( networkEngineer );
|
||||
registry.register( networkAdmin );
|
||||
registry.register( spatialExplorer );
|
||||
}
|
||||
|
||||
public IAdvancementTrigger getNetworkApprentice()
|
||||
{
|
||||
return this.networkApprentice;
|
||||
}
|
||||
|
||||
public IAdvancementTrigger getNetworkEngineer()
|
||||
{
|
||||
return this.networkEngineer;
|
||||
}
|
||||
|
||||
public IAdvancementTrigger getNetworkAdmin()
|
||||
{
|
||||
return this.networkAdmin;
|
||||
}
|
||||
|
||||
public IAdvancementTrigger getSpatialExplorer()
|
||||
{
|
||||
return this.spatialExplorer;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,174 @@
|
||||
/*
|
||||
* This file is part of Applied Energistics 2.
|
||||
* Copyright (c) 2013 - 2017, AlgorithmX2, All rights reserved.
|
||||
*
|
||||
* Applied Energistics 2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Applied Energistics 2 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
|
||||
*/
|
||||
|
||||
package appeng.core.stats;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
import net.minecraft.advancements.ICriterionTrigger;
|
||||
import net.minecraft.advancements.PlayerAdvancements;
|
||||
import net.minecraft.advancements.critereon.AbstractCriterionInstance;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import appeng.core.AppEng;
|
||||
|
||||
|
||||
public class AppEngAdvancementTrigger implements ICriterionTrigger<AppEngAdvancementTrigger.Instance>, IAdvancementTrigger
|
||||
{
|
||||
private final ResourceLocation ID;
|
||||
private final Map<PlayerAdvancements, AppEngAdvancementTrigger.Listeners> listeners = new HashMap<>();
|
||||
|
||||
public AppEngAdvancementTrigger( String parString )
|
||||
{
|
||||
super();
|
||||
ID = new ResourceLocation( AppEng.MOD_ID, parString );
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getId()
|
||||
{
|
||||
return ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addListener( PlayerAdvancements playerAdvancementsIn, ICriterionTrigger.Listener<AppEngAdvancementTrigger.Instance> listener )
|
||||
{
|
||||
AppEngAdvancementTrigger.Listeners l = this.listeners.get( playerAdvancementsIn );
|
||||
|
||||
if( l == null )
|
||||
{
|
||||
l = new AppEngAdvancementTrigger.Listeners( playerAdvancementsIn );
|
||||
this.listeners.put( playerAdvancementsIn, l );
|
||||
}
|
||||
|
||||
l.add( listener );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeListener( PlayerAdvancements playerAdvancementsIn, ICriterionTrigger.Listener<AppEngAdvancementTrigger.Instance> listener )
|
||||
{
|
||||
AppEngAdvancementTrigger.Listeners l = this.listeners.get( playerAdvancementsIn );
|
||||
|
||||
if( l != null )
|
||||
{
|
||||
l.remove( listener );
|
||||
|
||||
if( l.isEmpty() )
|
||||
{
|
||||
this.listeners.remove( playerAdvancementsIn );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAllListeners( PlayerAdvancements playerAdvancementsIn )
|
||||
{
|
||||
this.listeners.remove( playerAdvancementsIn );
|
||||
}
|
||||
|
||||
@Override
|
||||
public AppEngAdvancementTrigger.Instance deserializeInstance( JsonObject json, JsonDeserializationContext context )
|
||||
{
|
||||
return new AppEngAdvancementTrigger.Instance( this.getId() );
|
||||
}
|
||||
|
||||
public void trigger( EntityPlayerMP parPlayer )
|
||||
{
|
||||
AppEngAdvancementTrigger.Listeners l = this.listeners.get( parPlayer.getAdvancements() );
|
||||
|
||||
if( l != null )
|
||||
{
|
||||
l.trigger( parPlayer );
|
||||
}
|
||||
}
|
||||
|
||||
public static class Instance extends AbstractCriterionInstance
|
||||
{
|
||||
public Instance( ResourceLocation parID )
|
||||
{
|
||||
super( parID );
|
||||
}
|
||||
|
||||
public boolean test()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
static class Listeners
|
||||
{
|
||||
private final PlayerAdvancements playerAdvancements;
|
||||
private final Set<ICriterionTrigger.Listener<AppEngAdvancementTrigger.Instance>> listeners = new HashSet<>();
|
||||
|
||||
Listeners( PlayerAdvancements playerAdvancementsIn )
|
||||
{
|
||||
this.playerAdvancements = playerAdvancementsIn;
|
||||
}
|
||||
|
||||
public boolean isEmpty()
|
||||
{
|
||||
return this.listeners.isEmpty();
|
||||
}
|
||||
|
||||
public void add( ICriterionTrigger.Listener<AppEngAdvancementTrigger.Instance> listener )
|
||||
{
|
||||
this.listeners.add( listener );
|
||||
}
|
||||
|
||||
public void remove( ICriterionTrigger.Listener<AppEngAdvancementTrigger.Instance> listener )
|
||||
{
|
||||
this.listeners.remove( listener );
|
||||
}
|
||||
|
||||
public void trigger( EntityPlayerMP player )
|
||||
{
|
||||
List<ICriterionTrigger.Listener<AppEngAdvancementTrigger.Instance>> list = null;
|
||||
|
||||
for( ICriterionTrigger.Listener<AppEngAdvancementTrigger.Instance> listener : this.listeners )
|
||||
{
|
||||
if( listener.getCriterionInstance().test() )
|
||||
{
|
||||
if( list == null )
|
||||
{
|
||||
list = new ArrayList<>();
|
||||
}
|
||||
|
||||
list.add( listener );
|
||||
}
|
||||
}
|
||||
|
||||
if( list != null )
|
||||
{
|
||||
for( ICriterionTrigger.Listener<AppEngAdvancementTrigger.Instance> l : list )
|
||||
{
|
||||
l.grantCriterion( this.playerAdvancements );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+7
-5
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* This file is part of Applied Energistics 2.
|
||||
* Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
|
||||
* Copyright (c) 2013 - 2017, AlgorithmX2, All rights reserved.
|
||||
*
|
||||
* Applied Energistics 2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
@@ -19,9 +19,11 @@
|
||||
package appeng.core.stats;
|
||||
|
||||
|
||||
public enum AchievementType
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
|
||||
|
||||
@FunctionalInterface
|
||||
public interface IAdvancementTrigger
|
||||
{
|
||||
|
||||
Craft, CraftItem, Pickup, Custom
|
||||
|
||||
void trigger( EntityPlayerMP parPlayer );
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* This file is part of Applied Energistics 2.
|
||||
* Copyright (c) 2013 - 2017, AlgorithmX2, All rights reserved.
|
||||
*
|
||||
* Applied Energistics 2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Applied Energistics 2 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
|
||||
*/
|
||||
|
||||
package appeng.core.stats;
|
||||
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
import net.minecraft.advancements.critereon.ItemPredicate;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.JsonUtils;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.advancements.critereon.ItemPredicates;
|
||||
|
||||
import appeng.core.AppEng;
|
||||
import appeng.items.parts.ItemPart;
|
||||
import appeng.items.parts.PartType;
|
||||
|
||||
|
||||
public class PartItemPredicate extends ItemPredicate
|
||||
{
|
||||
private final PartType partType;
|
||||
|
||||
public PartItemPredicate( String partName )
|
||||
{
|
||||
this.partType = PartType.valueOf( partName.toUpperCase() );
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test( ItemStack item )
|
||||
{
|
||||
if( ItemPart.instance != null && item.getItem() == ItemPart.instance )
|
||||
{
|
||||
return ItemPart.instance.getTypeByStack( item ) == this.partType;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static ItemPredicate deserialize( JsonObject jsonobject )
|
||||
{
|
||||
if( jsonobject.has( "part" ) )
|
||||
{
|
||||
return new PartItemPredicate( JsonUtils.getString( jsonobject, "part" ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
return ItemPredicate.ANY;
|
||||
}
|
||||
}
|
||||
|
||||
public static void register()
|
||||
{
|
||||
ItemPredicates.register( new ResourceLocation( AppEng.MOD_ID, "part" ), PartItemPredicate::deserialize );
|
||||
}
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* This file is part of Applied Energistics 2.
|
||||
* Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
|
||||
*
|
||||
* Applied Energistics 2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Applied Energistics 2 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
|
||||
*/
|
||||
|
||||
package appeng.core.stats;
|
||||
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraftforge.common.util.FakePlayer;
|
||||
|
||||
|
||||
/**
|
||||
* Can differentiate if a {@link net.minecraft.entity.player.EntityPlayer} is a real player or not
|
||||
*
|
||||
* @author thatsIch
|
||||
* @since rv2
|
||||
*/
|
||||
public class PlayerDifferentiator
|
||||
{
|
||||
/**
|
||||
* Can determine if an {@link net.minecraft.entity.player.EntityPlayer} is not a real player.
|
||||
* This is based on if the
|
||||
*
|
||||
* @param player is:
|
||||
* - null
|
||||
* - dead
|
||||
* - fake
|
||||
*
|
||||
* @param player to be checked player
|
||||
*
|
||||
* @return true if
|
||||
* @param player is not a real player
|
||||
*/
|
||||
boolean isNoPlayer( final EntityPlayer player )
|
||||
{
|
||||
return player == null || player.isDead || player instanceof FakePlayer;
|
||||
}
|
||||
}
|
||||
@@ -1,115 +0,0 @@
|
||||
/*
|
||||
* This file is part of Applied Energistics 2.
|
||||
* Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
|
||||
*
|
||||
* Applied Energistics 2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Applied Energistics 2 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
|
||||
*/
|
||||
|
||||
package appeng.core.stats;
|
||||
|
||||
|
||||
import net.minecraftforge.fml.common.eventhandler.EventBus;
|
||||
|
||||
import appeng.core.AEConfig;
|
||||
import appeng.core.features.AEFeature;
|
||||
|
||||
|
||||
/**
|
||||
* Registers any items a player is picking up or is crafting.
|
||||
* Registered items are added to the player stats.
|
||||
* This will only happen if the {@link AEFeature#ACHIEVEMENTS} feature is enabled.
|
||||
*/
|
||||
public class PlayerStatsRegistration
|
||||
{
|
||||
/**
|
||||
* {@link net.minecraftforge.fml.common.eventhandler.EventBus} to which the handlers might get posted to depending
|
||||
* if the feature is enabled
|
||||
*/
|
||||
private final EventBus bus;
|
||||
|
||||
/**
|
||||
* is true if the {@link appeng.core.features.AEFeature#ACHIEVEMENTS} is enabled in the
|
||||
*
|
||||
* @param config
|
||||
*/
|
||||
private final boolean isAchievementFeatureEnabled;
|
||||
|
||||
/**
|
||||
* Constructs this with an {@link net.minecraftforge.fml.common.eventhandler.EventBus} and
|
||||
* {@link appeng.core.AEConfig}.
|
||||
*
|
||||
* @param bus {@see #bus}
|
||||
* @param config {@link appeng.core.AEConfig} which is used to determine if the
|
||||
* {@link appeng.core.features.AEFeature#ACHIEVEMENTS} is enabled
|
||||
*/
|
||||
public PlayerStatsRegistration( final EventBus bus, final AEConfig config )
|
||||
{
|
||||
this.bus = bus;
|
||||
this.isAchievementFeatureEnabled = config.isFeatureEnabled( AEFeature.ACHIEVEMENTS );
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the {@link appeng.core.stats.AchievementCraftingHandler} and
|
||||
* {@link appeng.core.stats.AchievementPickupHandler} to the {@link #bus} if {@link #isAchievementFeatureEnabled} is
|
||||
* true.
|
||||
*/
|
||||
public void registerAchievementHandlers()
|
||||
{
|
||||
if( this.isAchievementFeatureEnabled )
|
||||
{
|
||||
final PlayerDifferentiator differentiator = new PlayerDifferentiator();
|
||||
final AchievementCraftingHandler craftingHandler = new AchievementCraftingHandler( differentiator );
|
||||
final AchievementPickupHandler pickupHandler = new AchievementPickupHandler( differentiator );
|
||||
|
||||
this.bus.register( craftingHandler );
|
||||
this.bus.register( pickupHandler );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the {@link appeng.core.stats.AchievementHierarchy} and adds all {@link appeng.core.stats.Achievements}
|
||||
* to a new {@link net.minecraft.advancements.Advancement}.
|
||||
*/
|
||||
public void registerAchievements()
|
||||
{
|
||||
if( this.isAchievementFeatureEnabled )
|
||||
{
|
||||
final AchievementHierarchy hierarchy = new AchievementHierarchy();
|
||||
hierarchy.registerAchievementHierarchy();
|
||||
|
||||
for( final Stats s : Stats.values() )
|
||||
{
|
||||
s.getStat();
|
||||
}
|
||||
|
||||
/**
|
||||
* register
|
||||
*/
|
||||
// final ArrayList<Achievement> list = new ArrayList<Achievement>();
|
||||
//
|
||||
// for( final Achievements a : Achievements.values() )
|
||||
// {
|
||||
// final Achievement ach = a.getAchievement();
|
||||
// if( ach != null )
|
||||
// {
|
||||
// list.add( ach );
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// final AchievementPage ae2AchievementPage = new AchievementPage( "Applied Energistics 2", list.toArray(
|
||||
// new Achievement[list.size()] ) );
|
||||
// AchievementPage.registerAchievementPage( ae2AchievementPage );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -44,18 +44,18 @@ public enum Stats
|
||||
|
||||
public void addToPlayer( final EntityPlayer player, final int howMany )
|
||||
{
|
||||
player.addStat( this.getStat(), howMany );
|
||||
player.addStat( this.stat, howMany );
|
||||
}
|
||||
|
||||
StatBasic getStat()
|
||||
public static void register()
|
||||
{
|
||||
if( this.stat == null )
|
||||
for( final Stats s : Stats.values() )
|
||||
{
|
||||
this.stat = new StatBasic( "stat.ae2." + this.name(), new TextComponentTranslation( "stat.ae2." + this.name() ) );
|
||||
this.stat.registerStat();
|
||||
if( s.stat == null )
|
||||
{
|
||||
s.stat = new StatBasic( "stat.ae2." + s.name(), new TextComponentTranslation( "stat.ae2." + s.name() ) );
|
||||
s.stat.registerStat();
|
||||
}
|
||||
}
|
||||
|
||||
return this.stat;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -20,13 +20,9 @@ package appeng.core.sync;
|
||||
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
@@ -36,8 +32,6 @@ import net.minecraftforge.fml.relauncher.ReflectionHelper;
|
||||
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.config.SecurityPermissions;
|
||||
import appeng.api.definitions.IComparableDefinition;
|
||||
import appeng.api.definitions.IMaterials;
|
||||
import appeng.api.exceptions.AppEngException;
|
||||
import appeng.api.features.IWirelessTermHandler;
|
||||
import appeng.api.implementations.IUpgradeableHost;
|
||||
@@ -92,7 +86,6 @@ import appeng.container.implementations.ContainerUpgradeable;
|
||||
import appeng.container.implementations.ContainerVibrationChamber;
|
||||
import appeng.container.implementations.ContainerWireless;
|
||||
import appeng.container.implementations.ContainerWirelessTerm;
|
||||
import appeng.core.stats.Achievements;
|
||||
import appeng.helpers.IInterfaceHost;
|
||||
import appeng.helpers.IPriorityHost;
|
||||
import appeng.helpers.WirelessTerminalGuiObject;
|
||||
@@ -356,27 +349,7 @@ public enum GuiBridge implements IGuiHandler
|
||||
.typeName( tE ) + " )" );
|
||||
}
|
||||
|
||||
final Object o = target.newInstance( inventory, tE );
|
||||
|
||||
/**
|
||||
* triggers achievement when the player sees presses.
|
||||
*/
|
||||
if( o instanceof AEBaseContainer )
|
||||
{
|
||||
final AEBaseContainer bc = (AEBaseContainer) o;
|
||||
for( final Object so : bc.inventorySlots )
|
||||
{
|
||||
if( so instanceof Slot )
|
||||
{
|
||||
final ItemStack is = ( (Slot) so ).getStack();
|
||||
|
||||
final IMaterials materials = AEApi.instance().definitions().materials();
|
||||
this.addPressAchievementToPlayer( is, materials, inventory.player );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return o;
|
||||
return target.newInstance( inventory, tE );
|
||||
}
|
||||
catch( final Throwable t )
|
||||
{
|
||||
@@ -410,26 +383,6 @@ public enum GuiBridge implements IGuiHandler
|
||||
return inventory.getClass().getName();
|
||||
}
|
||||
|
||||
private void addPressAchievementToPlayer( final ItemStack newItem, final IMaterials possibleMaterials, final EntityPlayer player )
|
||||
{
|
||||
final IComparableDefinition logic = possibleMaterials.logicProcessorPress();
|
||||
final IComparableDefinition eng = possibleMaterials.engProcessorPress();
|
||||
final IComparableDefinition calc = possibleMaterials.calcProcessorPress();
|
||||
final IComparableDefinition silicon = possibleMaterials.siliconPress();
|
||||
|
||||
final List<IComparableDefinition> presses = Lists.newArrayList( logic, eng, calc, silicon );
|
||||
|
||||
for( final IComparableDefinition press : presses )
|
||||
{
|
||||
if( press.isSameAs( newItem ) )
|
||||
{
|
||||
Achievements.Presses.addToPlayer( player );
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getClientGuiElement( final int ordinal, final EntityPlayer player, final World w, final int x, final int y, final int z )
|
||||
{
|
||||
|
||||
@@ -23,28 +23,24 @@ import java.util.Random;
|
||||
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.RayTraceResult;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.exceptions.MissingDefinition;
|
||||
import appeng.api.exceptions.MissingDefinitionException;
|
||||
import appeng.client.render.effects.ChargedOreFX;
|
||||
import appeng.core.AEConfig;
|
||||
import appeng.core.AppEng;
|
||||
|
||||
|
||||
public final class BlockChargedQuartzOre extends BlockQuartzOre
|
||||
public class BlockChargedQuartzOre extends BlockQuartzOre
|
||||
{
|
||||
|
||||
public BlockChargedQuartzOre()
|
||||
{
|
||||
this.setBoostBrightnessLow( 2 );
|
||||
this.setBoostBrightnessHigh( 5 );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped( final IBlockState state, final Random rand, final int fortune )
|
||||
{
|
||||
@@ -53,7 +49,7 @@ public final class BlockChargedQuartzOre extends BlockQuartzOre
|
||||
.materials()
|
||||
.certusQuartzCrystalCharged()
|
||||
.maybeItem()
|
||||
.orElseThrow( () -> new MissingDefinition( "Tried to access charged certus quartz crystal, even though they are disabled" ) );
|
||||
.orElseThrow( () -> new MissingDefinitionException( "Tried to access charged certus quartz crystal, even though they are disabled" ) );
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -64,10 +60,21 @@ public final class BlockChargedQuartzOre extends BlockQuartzOre
|
||||
.materials()
|
||||
.certusQuartzCrystalCharged()
|
||||
.maybeStack( 1 )
|
||||
.orElseThrow( () -> new MissingDefinition( "Tried to access charged certus quartz crystal, even though they are disabled" ) )
|
||||
.orElseThrow( () -> new MissingDefinitionException( "Tried to access charged certus quartz crystal, even though they are disabled" ) )
|
||||
.getItemDamage();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getPickBlock( IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player )
|
||||
{
|
||||
return AEApi.instance()
|
||||
.definitions()
|
||||
.blocks()
|
||||
.quartzOreCharged()
|
||||
.maybeStack( 1 )
|
||||
.orElseThrow( () -> new MissingDefinitionException( "Tried to access charged certus quartz ore, even though they are disabled" ) );
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly( Side.CLIENT )
|
||||
public void randomDisplayTick( final IBlockState state, final World w, final BlockPos pos, final Random r )
|
||||
|
||||
@@ -27,28 +27,20 @@ import net.minecraft.item.Item;
|
||||
import net.minecraft.util.BlockRenderLayer;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.exceptions.MissingDefinition;
|
||||
import appeng.api.exceptions.MissingDefinitionException;
|
||||
import appeng.block.AEBaseBlock;
|
||||
|
||||
|
||||
public class BlockQuartzOre extends AEBaseBlock
|
||||
{
|
||||
private int boostBrightnessLow;
|
||||
private int boostBrightnessHigh;
|
||||
private boolean enhanceBrightness;
|
||||
|
||||
public BlockQuartzOre()
|
||||
{
|
||||
super( Material.ROCK );
|
||||
this.setHardness( 3.0F );
|
||||
this.setResistance( 5.0F );
|
||||
this.boostBrightnessLow = 0;
|
||||
this.boostBrightnessHigh = 1;
|
||||
this.enhanceBrightness = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -58,76 +50,7 @@ public class BlockQuartzOre extends AEBaseBlock
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLightValue( final IBlockState state, final IBlockAccess worldIn, final BlockPos pos )
|
||||
{
|
||||
int j1 = super.getLightValue( state, worldIn, pos );
|
||||
if( this.enhanceBrightness )
|
||||
{
|
||||
j1 = Math.max( j1 >> 20, j1 >> 4 );
|
||||
|
||||
if( j1 > 4 )
|
||||
{
|
||||
j1 += this.boostBrightnessHigh;
|
||||
}
|
||||
else
|
||||
{
|
||||
j1 += this.boostBrightnessLow;
|
||||
}
|
||||
|
||||
if( j1 > 15 )
|
||||
{
|
||||
j1 = 15;
|
||||
}
|
||||
return j1 << 20 | j1 << 4;
|
||||
}
|
||||
return j1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int quantityDropped( final Random rand )
|
||||
{
|
||||
return 1 + rand.nextInt( 2 );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped( final IBlockState state, /* is null */
|
||||
final Random rand, final int fortune )
|
||||
{
|
||||
return AEApi.instance()
|
||||
.definitions()
|
||||
.materials()
|
||||
.certusQuartzCrystal()
|
||||
.maybeItem()
|
||||
.orElseThrow( () -> new MissingDefinition( "Tried to access certus quartz crystal, even though they are disabled" ) );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dropBlockAsItemWithChance( final World w, final BlockPos pos, final IBlockState state, final float chance, final int fortune )
|
||||
{
|
||||
super.dropBlockAsItemWithChance( w, pos, state, chance, fortune );
|
||||
|
||||
if( this.getItemDropped( state, w.rand, fortune ) != Item.getItemFromBlock( this ) )
|
||||
{
|
||||
final int xp = MathHelper.getInt( w.rand, 2, 5 );
|
||||
|
||||
this.dropXpOnBlockBreak( w, pos, xp );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int damageDropped( final IBlockState state )
|
||||
{
|
||||
return AEApi.instance()
|
||||
.definitions()
|
||||
.materials()
|
||||
.certusQuartzCrystal()
|
||||
.maybeStack( 1 )
|
||||
.orElseThrow( () -> new MissingDefinition( "Tried to access certus quartz crystal, even though they are disabled" ) )
|
||||
.getItemDamage();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int quantityDroppedWithBonus( final int fortune, final Random rand )
|
||||
public int quantityDropped( IBlockState state, int fortune, Random rand )
|
||||
{
|
||||
if( fortune > 0 && Item.getItemFromBlock( this ) != this.getItemDropped( null, rand, fortune ) )
|
||||
{
|
||||
@@ -146,18 +69,45 @@ public class BlockQuartzOre extends AEBaseBlock
|
||||
}
|
||||
}
|
||||
|
||||
void setBoostBrightnessLow( final int boostBrightnessLow )
|
||||
@Override
|
||||
public int quantityDropped( final Random rand )
|
||||
{
|
||||
this.boostBrightnessLow = boostBrightnessLow;
|
||||
return 1 + rand.nextInt( 2 );
|
||||
}
|
||||
|
||||
void setBoostBrightnessHigh( final int boostBrightnessHigh )
|
||||
@Override
|
||||
public void dropBlockAsItemWithChance( final World w, final BlockPos pos, final IBlockState state, final float chance, final int fortune )
|
||||
{
|
||||
this.boostBrightnessHigh = boostBrightnessHigh;
|
||||
super.dropBlockAsItemWithChance( w, pos, state, chance, fortune );
|
||||
|
||||
if( this.getItemDropped( state, w.rand, fortune ) != Item.getItemFromBlock( this ) )
|
||||
{
|
||||
final int xp = MathHelper.getInt( w.rand, 2, 5 );
|
||||
|
||||
this.dropXpOnBlockBreak( w, pos, xp );
|
||||
}
|
||||
}
|
||||
|
||||
public void setEnhanceBrightness( final boolean enhanceBrightness )
|
||||
@Override
|
||||
public Item getItemDropped( final IBlockState state, final Random rand, final int fortune )
|
||||
{
|
||||
this.enhanceBrightness = enhanceBrightness;
|
||||
return AEApi.instance()
|
||||
.definitions()
|
||||
.materials()
|
||||
.certusQuartzCrystal()
|
||||
.maybeItem()
|
||||
.orElseThrow( () -> new MissingDefinitionException( "Tried to access certus quartz crystal, even though they are disabled" ) );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int damageDropped( final IBlockState state )
|
||||
{
|
||||
return AEApi.instance()
|
||||
.definitions()
|
||||
.materials()
|
||||
.certusQuartzCrystal()
|
||||
.maybeStack( 1 )
|
||||
.orElseThrow( () -> new MissingDefinitionException( "Tried to access certus quartz crystal, even though they are disabled" ) )
|
||||
.getItemDamage();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,6 @@ public abstract class AEBaseEntityItem extends EntityItem
|
||||
super( world, x, y, z, stack );
|
||||
}
|
||||
|
||||
@SuppressWarnings( "unchecked" )
|
||||
protected List<Entity> getCheckedEntitiesWithinAABBExcludingEntity( final AxisAlignedBB region )
|
||||
{
|
||||
return this.world.getEntitiesWithinAABBExcludingEntity( this, region );
|
||||
|
||||
@@ -22,7 +22,7 @@ package appeng.integration;
|
||||
import net.minecraftforge.fml.common.Loader;
|
||||
import net.minecraftforge.fml.common.ModAPIManager;
|
||||
|
||||
import appeng.api.exceptions.ModNotInstalled;
|
||||
import appeng.api.exceptions.ModNotInstalledException;
|
||||
import appeng.core.AEConfig;
|
||||
import appeng.core.AELog;
|
||||
|
||||
@@ -96,7 +96,7 @@ final class IntegrationNode
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new ModNotInstalled( this.modID );
|
||||
throw new ModNotInstalledException( this.modID );
|
||||
}
|
||||
|
||||
this.mod.preInit();
|
||||
@@ -130,7 +130,7 @@ final class IntegrationNode
|
||||
if( this.getState() == IntegrationStage.FAILED )
|
||||
{
|
||||
AELog.info( this.displayName + " - Integration Disabled" );
|
||||
if( !( this.exception instanceof ModNotInstalled ) )
|
||||
if( !( this.exception instanceof ModNotInstalledException ) )
|
||||
{
|
||||
AELog.integration( this.exception );
|
||||
}
|
||||
|
||||
@@ -29,8 +29,8 @@ import net.minecraft.item.ItemStack;
|
||||
import mezz.jei.api.ingredients.IIngredients;
|
||||
import mezz.jei.api.recipe.wrapper.IShapedCraftingRecipeWrapper;
|
||||
|
||||
import appeng.api.exceptions.MissingIngredientError;
|
||||
import appeng.api.exceptions.RegistrationError;
|
||||
import appeng.api.exceptions.MissingIngredientException;
|
||||
import appeng.api.exceptions.RegistrationException;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
import appeng.core.AEConfig;
|
||||
import appeng.recipes.game.ShapedRecipe;
|
||||
@@ -72,7 +72,7 @@ class ShapedRecipeWrapper implements IShapedCraftingRecipeWrapper
|
||||
ItemStack[] is = ing.getItemStackSet();
|
||||
slotList = useSingleItems ? Platform.findPreferred( is ) : Arrays.asList( is );
|
||||
}
|
||||
catch( final RegistrationError | MissingIngredientError ignored )
|
||||
catch( final RegistrationException | MissingIngredientException ignored )
|
||||
{
|
||||
}
|
||||
in.add( slotList );
|
||||
|
||||
@@ -29,8 +29,8 @@ import net.minecraft.item.ItemStack;
|
||||
import mezz.jei.api.ingredients.IIngredients;
|
||||
import mezz.jei.api.recipe.IRecipeWrapper;
|
||||
|
||||
import appeng.api.exceptions.MissingIngredientError;
|
||||
import appeng.api.exceptions.RegistrationError;
|
||||
import appeng.api.exceptions.MissingIngredientException;
|
||||
import appeng.api.exceptions.RegistrationException;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
import appeng.recipes.game.ShapelessRecipe;
|
||||
|
||||
@@ -60,7 +60,7 @@ class ShapelessRecipeWrapper implements IRecipeWrapper
|
||||
{
|
||||
inputs.add( Lists.newArrayList( ingredient.getItemStackSet() ) );
|
||||
}
|
||||
catch( RegistrationError | MissingIngredientError registrationError )
|
||||
catch( RegistrationException | MissingIngredientException registrationError )
|
||||
{
|
||||
throw new RuntimeException( "Unable to register recipe with JEI" );
|
||||
}
|
||||
|
||||
@@ -55,7 +55,6 @@ public abstract class AEBaseItem extends Item
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings( "unchecked" )
|
||||
public final void getSubItems( final CreativeTabs creativeTab, final NonNullList<ItemStack> itemStacks )
|
||||
{
|
||||
if( this.isInCreativeTab( creativeTab ) )
|
||||
|
||||
@@ -33,12 +33,12 @@ import appeng.api.implementations.guiobjects.IPortableCell;
|
||||
import appeng.api.implementations.items.IAEItemPowerStorage;
|
||||
import appeng.api.storage.IMEMonitor;
|
||||
import appeng.api.storage.IStorageChannel;
|
||||
import appeng.api.storage.MEMonitorHandler;
|
||||
import appeng.api.storage.channels.IItemStorageChannel;
|
||||
import appeng.api.storage.data.IAEItemStack;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
import appeng.api.util.IConfigManager;
|
||||
import appeng.container.interfaces.IInventorySlotAware;
|
||||
import appeng.me.helpers.MEMonitorHandler;
|
||||
import appeng.me.storage.CellInventory;
|
||||
import appeng.util.ConfigManager;
|
||||
import appeng.util.IConfigManagerHost;
|
||||
|
||||
@@ -45,7 +45,7 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.property.IExtendedBlockState;
|
||||
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.exceptions.MissingDefinition;
|
||||
import appeng.api.exceptions.MissingDefinitionException;
|
||||
import appeng.api.parts.IAlphaPassItem;
|
||||
import appeng.api.util.AEPartLocation;
|
||||
import appeng.core.AELog;
|
||||
@@ -318,7 +318,7 @@ public class ItemFacade extends AEBaseItem implements IFacadeItem, IAlphaPassIte
|
||||
.items()
|
||||
.facade()
|
||||
.maybeStack( 1 )
|
||||
.orElseThrow( () -> new MissingDefinition( "Tried to create a facade, while facades are being deactivated." ) );
|
||||
.orElseThrow( () -> new MissingDefinitionException( "Tried to create a facade, while facades are being deactivated." ) );
|
||||
|
||||
// Convert back to a registry name...
|
||||
Item item = Item.REGISTRY.getObjectById( ids[0] );
|
||||
|
||||
@@ -39,7 +39,7 @@ import net.minecraftforge.items.IItemHandler;
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.config.FuzzyMode;
|
||||
import appeng.api.config.IncludeExclude;
|
||||
import appeng.api.exceptions.MissingDefinition;
|
||||
import appeng.api.exceptions.MissingDefinitionException;
|
||||
import appeng.api.implementations.items.IItemGroup;
|
||||
import appeng.api.implementations.items.IStorageCell;
|
||||
import appeng.api.implementations.items.IUpgradeModule;
|
||||
@@ -303,7 +303,7 @@ public final class ItemBasicStorageCell extends AEBaseItem implements IStorageCe
|
||||
.materials()
|
||||
.emptyStorageCell()
|
||||
.maybeStack( 1 )
|
||||
.orElseThrow( () -> new MissingDefinition( "Tried to use empty storage cells while basic storage cells are defined." ) );
|
||||
.orElseThrow( () -> new MissingDefinitionException( "Tried to use empty storage cells while basic storage cells are defined." ) );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -23,7 +23,7 @@ import java.util.Arrays;
|
||||
import java.util.EnumSet;
|
||||
|
||||
import appeng.api.exceptions.ExistingConnectionException;
|
||||
import appeng.api.exceptions.FailedConnection;
|
||||
import appeng.api.exceptions.FailedConnectionException;
|
||||
import appeng.api.exceptions.NullNodeConnectionException;
|
||||
import appeng.api.exceptions.SecurityConnectionException;
|
||||
import appeng.api.networking.GridFlags;
|
||||
@@ -54,7 +54,7 @@ public class GridConnection implements IGridConnection, IPathItem
|
||||
private AEPartLocation fromAtoB;
|
||||
private GridNode sideB;
|
||||
|
||||
public GridConnection( final IGridNode aNode, final IGridNode bNode, final AEPartLocation fromAtoB ) throws FailedConnection
|
||||
public GridConnection( final IGridNode aNode, final IGridNode bNode, final AEPartLocation fromAtoB ) throws FailedConnectionException
|
||||
{
|
||||
|
||||
final GridNode a = (GridNode) aNode;
|
||||
|
||||
@@ -32,7 +32,7 @@ import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import appeng.api.exceptions.FailedConnection;
|
||||
import appeng.api.exceptions.FailedConnectionException;
|
||||
import appeng.api.networking.GridFlags;
|
||||
import appeng.api.networking.GridNotification;
|
||||
import appeng.api.networking.IGrid;
|
||||
@@ -457,7 +457,7 @@ public class GridNode implements IGridNode, IPathItem
|
||||
{
|
||||
new GridConnection( node, this, f.getOpposite() );
|
||||
}
|
||||
catch( final FailedConnection e )
|
||||
catch( final FailedConnectionException e )
|
||||
{
|
||||
TickHandler.INSTANCE.addCallable( node.getWorld(), new MachineSecurityBreak( this ) );
|
||||
|
||||
@@ -484,7 +484,7 @@ public class GridNode implements IGridNode, IPathItem
|
||||
{
|
||||
new GridConnection( node, this, f.getOpposite() );
|
||||
}
|
||||
catch( final FailedConnection e )
|
||||
catch( final FailedConnectionException e )
|
||||
{
|
||||
TickHandler.INSTANCE.addCallable( node.getWorld(), new MachineSecurityBreak( this ) );
|
||||
|
||||
|
||||
+1
-1
@@ -379,7 +379,7 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<IMEInventoryHandler> getCellArray( final IStorageChannel channel )
|
||||
public List<IMEInventoryHandler> getCellArray( final IStorageChannel<?> channel )
|
||||
{
|
||||
final List<IMEInventoryHandler> list = new ArrayList<>( 1 );
|
||||
|
||||
|
||||
+1
-1
@@ -276,7 +276,7 @@ public class GridStorageCache implements IStorageGrid
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postAlterationOfStoredItems( final IStorageChannel chan, final Iterable<? extends IAEStack> input, final IActionSource src )
|
||||
public void postAlterationOfStoredItems( final IStorageChannel<?> chan, final Iterable<? extends IAEStack<?>> input, final IActionSource src )
|
||||
{
|
||||
this.storageMonitors.get( chan ).postChange( true, (Iterable) input, src );
|
||||
}
|
||||
|
||||
+17
-14
@@ -26,6 +26,10 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.networking.GridFlags;
|
||||
import appeng.api.networking.IGrid;
|
||||
import appeng.api.networking.IGridBlock;
|
||||
@@ -43,8 +47,9 @@ import appeng.api.networking.pathing.IPathingGrid;
|
||||
import appeng.api.util.AEPartLocation;
|
||||
import appeng.api.util.DimensionalCoord;
|
||||
import appeng.core.AEConfig;
|
||||
import appeng.core.AppEng;
|
||||
import appeng.core.features.AEFeature;
|
||||
import appeng.core.stats.Achievements;
|
||||
import appeng.core.stats.IAdvancementTrigger;
|
||||
import appeng.me.GridConnection;
|
||||
import appeng.me.GridNode;
|
||||
import appeng.me.pathfinding.AdHocChannelUpdater;
|
||||
@@ -340,26 +345,24 @@ public class PathGridCache implements IPathingGrid
|
||||
{
|
||||
if( this.lastChannels != this.getChannelsInUse() && AEConfig.instance().isFeatureEnabled( AEFeature.CHANNELS ) )
|
||||
{
|
||||
final Achievements currentBracket = this.getAchievementBracket( this.getChannelsInUse() );
|
||||
final Achievements lastBracket = this.getAchievementBracket( this.lastChannels );
|
||||
final IAdvancementTrigger currentBracket = this.getAchievementBracket( this.getChannelsInUse() );
|
||||
final IAdvancementTrigger lastBracket = this.getAchievementBracket( this.lastChannels );
|
||||
if( currentBracket != lastBracket && currentBracket != null )
|
||||
{
|
||||
final Set<Integer> players = new HashSet<>();
|
||||
for( final IGridNode n : this.requireChannels )
|
||||
{
|
||||
players.add( n.getPlayerID() );
|
||||
EntityPlayer player = AEApi.instance().registries().players().findPlayer( n.getPlayerID() );
|
||||
if( player instanceof EntityPlayerMP )
|
||||
{
|
||||
currentBracket.trigger( (EntityPlayerMP) player );
|
||||
}
|
||||
}
|
||||
|
||||
// for( final int id : players )
|
||||
// {
|
||||
// Platform.addStat( id, currentBracket.getAchievement() );
|
||||
// }
|
||||
}
|
||||
}
|
||||
this.lastChannels = this.getChannelsInUse();
|
||||
}
|
||||
|
||||
private Achievements getAchievementBracket( final int ch )
|
||||
private IAdvancementTrigger getAchievementBracket( final int ch )
|
||||
{
|
||||
if( ch < 8 )
|
||||
{
|
||||
@@ -368,15 +371,15 @@ public class PathGridCache implements IPathingGrid
|
||||
|
||||
if( ch < 128 )
|
||||
{
|
||||
return Achievements.Networking1;
|
||||
return AppEng.instance().getAdvancementTriggers().getNetworkApprentice();
|
||||
}
|
||||
|
||||
if( ch < 2048 )
|
||||
{
|
||||
return Achievements.Networking2;
|
||||
return AppEng.instance().getAdvancementTriggers().getNetworkEngineer();
|
||||
}
|
||||
|
||||
return Achievements.Networking3;
|
||||
return AppEng.instance().getAdvancementTriggers().getNetworkAdmin();
|
||||
}
|
||||
|
||||
@MENetworkEventSubscribe
|
||||
|
||||
@@ -32,7 +32,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.events.LocatableEventAnnounce;
|
||||
import appeng.api.events.LocatableEventAnnounce.LocatableEvent;
|
||||
import appeng.api.exceptions.FailedConnection;
|
||||
import appeng.api.exceptions.FailedConnectionException;
|
||||
import appeng.api.features.ILocatable;
|
||||
import appeng.api.networking.IGridHost;
|
||||
import appeng.api.networking.IGridNode;
|
||||
@@ -158,7 +158,7 @@ public class QuantumCluster implements ILocatable, IAECluster
|
||||
sideA.connection = sideB.connection = new ConnectionWrapper( AEApi.instance().grid().createGridConnection( sideA.getNode(),
|
||||
sideB.getNode() ) );
|
||||
}
|
||||
catch( final FailedConnection e )
|
||||
catch( final FailedConnectionException e )
|
||||
{
|
||||
// :(
|
||||
}
|
||||
|
||||
+6
-4
@@ -21,7 +21,7 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package appeng.api.storage;
|
||||
package appeng.me.helpers;
|
||||
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -33,6 +33,10 @@ 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.IMEInventoryHandler;
|
||||
import appeng.api.storage.IMEMonitor;
|
||||
import appeng.api.storage.IMEMonitorHandlerReceiver;
|
||||
import appeng.api.storage.IStorageChannel;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
import appeng.api.storage.data.IItemList;
|
||||
|
||||
@@ -42,11 +46,9 @@ import appeng.api.storage.data.IItemList;
|
||||
* listeners.
|
||||
*
|
||||
* @param <T>
|
||||
* @deprecated
|
||||
*
|
||||
* TODO: Needs to be redesigned to solve performance issues. Also should not be part of the API as class.
|
||||
* TODO: Needs to be redesigned to solve performance issues.
|
||||
*/
|
||||
@Deprecated
|
||||
public class MEMonitorHandler<T extends IAEStack<T>> implements IMEMonitor<T>
|
||||
{
|
||||
|
||||
@@ -48,7 +48,7 @@ import net.minecraft.world.World;
|
||||
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.config.YesNo;
|
||||
import appeng.api.exceptions.FailedConnection;
|
||||
import appeng.api.exceptions.FailedConnectionException;
|
||||
import appeng.api.implementations.parts.IPartCable;
|
||||
import appeng.api.networking.IGridHost;
|
||||
import appeng.api.networking.IGridNode;
|
||||
@@ -243,7 +243,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I
|
||||
{
|
||||
new GridConnection( cn, sn, AEPartLocation.INTERNAL );
|
||||
}
|
||||
catch( final FailedConnection e )
|
||||
catch( final FailedConnectionException e )
|
||||
{
|
||||
// ekk!
|
||||
|
||||
@@ -294,7 +294,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I
|
||||
{
|
||||
new GridConnection( cn, sn, AEPartLocation.INTERNAL );
|
||||
}
|
||||
catch( final FailedConnection e )
|
||||
catch( final FailedConnectionException e )
|
||||
{
|
||||
// ekk!
|
||||
|
||||
@@ -634,7 +634,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I
|
||||
{
|
||||
AEApi.instance().grid().createGridConnection( cn, sn );
|
||||
}
|
||||
catch( final FailedConnection e )
|
||||
catch( final FailedConnectionException e )
|
||||
{
|
||||
// ekk
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ package appeng.parts.automation;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
@@ -400,11 +401,11 @@ public class PartFormationPlane extends PartUpgradeable implements ICellContaine
|
||||
{
|
||||
if( this.getProxy().isActive() && channel == AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) )
|
||||
{
|
||||
final List<IMEInventoryHandler> Handler = new ArrayList<>( 1 );
|
||||
Handler.add( this.myHandler );
|
||||
return Handler;
|
||||
final List<IMEInventoryHandler> handler = new ArrayList<>( 1 );
|
||||
handler.add( this.myHandler );
|
||||
return handler;
|
||||
}
|
||||
return new ArrayList<>();
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -144,7 +144,10 @@ public abstract class UpgradeInventory extends AppEngInternalInventory implement
|
||||
@Override
|
||||
public void saveChanges()
|
||||
{
|
||||
this.parent.saveChanges();
|
||||
if( this.parent != null )
|
||||
{
|
||||
this.parent.saveChanges();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
package appeng.parts.misc;
|
||||
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@@ -577,7 +576,7 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC
|
||||
return Collections.singletonList( out );
|
||||
}
|
||||
}
|
||||
return Arrays.asList( new IMEInventoryHandler[] {} );
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -33,7 +33,7 @@ import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.exceptions.FailedConnection;
|
||||
import appeng.api.exceptions.FailedConnectionException;
|
||||
import appeng.api.networking.IGridConnection;
|
||||
import appeng.api.networking.IGridNode;
|
||||
import appeng.api.parts.IPartCollisionHelper;
|
||||
@@ -205,7 +205,7 @@ public class PartToggleBus extends PartBasicState
|
||||
{
|
||||
this.connection = AEApi.instance().grid().createGridConnection( this.getProxy().getNode(), this.getOuterProxy().getNode() );
|
||||
}
|
||||
catch( final FailedConnection e )
|
||||
catch( final FailedConnectionException e )
|
||||
{
|
||||
// :(
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumHand;
|
||||
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.exceptions.FailedConnection;
|
||||
import appeng.api.exceptions.FailedConnectionException;
|
||||
import appeng.api.networking.GridFlags;
|
||||
import appeng.api.networking.IGridNode;
|
||||
import appeng.api.networking.ticking.IGridTickable;
|
||||
@@ -243,7 +243,7 @@ public class PartP2PTunnelME extends PartP2PTunnel<PartP2PTunnelME> implements I
|
||||
new TunnelConnection( me, AEApi.instance().grid().createGridConnection( this.outerProxy.getNode(),
|
||||
me.outerProxy.getNode() ) ) );
|
||||
}
|
||||
catch( final FailedConnection e )
|
||||
catch( final FailedConnectionException e )
|
||||
{
|
||||
final TileEntity start = this.getTile();
|
||||
final TileEntity end = me.getTile();
|
||||
|
||||
@@ -28,9 +28,9 @@ import com.google.common.base.Preconditions;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
|
||||
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;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ public class GroupIngredient implements IIngredient
|
||||
private ItemStack[] baked;
|
||||
private boolean isInside = false;
|
||||
|
||||
public GroupIngredient( final String myName, final List<IIngredient> ingredients, final int qty ) throws RecipeError
|
||||
public GroupIngredient( final String myName, final List<IIngredient> ingredients, final int qty ) throws RecipeException
|
||||
{
|
||||
Preconditions.checkNotNull( myName );
|
||||
Preconditions.checkNotNull( ingredients );
|
||||
@@ -57,27 +57,27 @@ public class GroupIngredient implements IIngredient
|
||||
{
|
||||
if( ingredient.isAir() )
|
||||
{
|
||||
throw new RecipeError( "Cannot include air in a group." );
|
||||
throw new RecipeException( "Cannot include air in a group." );
|
||||
}
|
||||
}
|
||||
|
||||
this.ingredients = ingredients;
|
||||
}
|
||||
|
||||
IIngredient copy( final int qty ) throws RecipeError
|
||||
IIngredient copy( final int qty ) throws RecipeException
|
||||
{
|
||||
Preconditions.checkState( qty > 0 );
|
||||
return new GroupIngredient( this.name, this.ingredients, qty );
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getItemStack() throws RegistrationError, MissingIngredientError
|
||||
public ItemStack getItemStack() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
throw new RegistrationError( "Cannot pass group of items to a recipe which desires a single recipe item." );
|
||||
throw new RegistrationException( "Cannot pass group of items to a recipe which desires a single recipe item." );
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack[] getItemStackSet() throws RegistrationError, MissingIngredientError
|
||||
public ItemStack[] getItemStackSet() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
if( this.baked != null )
|
||||
{
|
||||
@@ -99,7 +99,7 @@ public class GroupIngredient implements IIngredient
|
||||
{
|
||||
out.addAll( Arrays.asList( i.getItemStackSet() ) );
|
||||
}
|
||||
catch( final MissingIngredientError mir )
|
||||
catch( final MissingIngredientException mir )
|
||||
{
|
||||
// oh well this is a group!
|
||||
}
|
||||
@@ -112,7 +112,7 @@ public class GroupIngredient implements IIngredient
|
||||
|
||||
if( out.isEmpty() )
|
||||
{
|
||||
throw new MissingIngredientError( this.toString() + " - group could not be resolved to any items." );
|
||||
throw new MissingIngredientException( this.toString() + " - group could not be resolved to any items." );
|
||||
}
|
||||
|
||||
for( final ItemStack is : out )
|
||||
@@ -154,7 +154,7 @@ public class GroupIngredient implements IIngredient
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bake() throws RegistrationError, MissingIngredientError
|
||||
public void bake() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
this.baked = null;
|
||||
this.baked = this.getItemStackSet();
|
||||
|
||||
@@ -31,9 +31,9 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
|
||||
import appeng.api.AEApi;
|
||||
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;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
import appeng.api.recipes.ResolverResult;
|
||||
import appeng.api.recipes.ResolverResultSet;
|
||||
@@ -50,7 +50,7 @@ public class Ingredient implements IIngredient
|
||||
private NBTTagCompound nbt = null;
|
||||
private ItemStack[] baked;
|
||||
|
||||
public Ingredient( final RecipeHandler handler, final String input, final int qty ) throws RecipeError, MissedIngredientSet
|
||||
public Ingredient( final RecipeHandler handler, final String input, final int qty ) throws RecipeException, MissedIngredientSet
|
||||
{
|
||||
Preconditions.checkNotNull( handler );
|
||||
Preconditions.checkNotNull( input );
|
||||
@@ -83,7 +83,7 @@ public class Ingredient implements IIngredient
|
||||
{
|
||||
if( parts.length == 3 )
|
||||
{
|
||||
throw new RecipeError( "Cannot specify meta when using ore dictionary." );
|
||||
throw new RecipeException( "Cannot specify meta when using ore dictionary." );
|
||||
}
|
||||
sel = OreDictionary.WILDCARD_VALUE;
|
||||
}
|
||||
@@ -106,7 +106,7 @@ public class Ingredient implements IIngredient
|
||||
}
|
||||
catch( final IllegalArgumentException e )
|
||||
{
|
||||
throw new RecipeError( tmpName + " is not a valid ae2 item definition." );
|
||||
throw new RecipeException( tmpName + " is not a valid ae2 item definition." );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ public class Ingredient implements IIngredient
|
||||
}
|
||||
catch( final NumberFormatException e )
|
||||
{
|
||||
throw new RecipeError( "Invalid Metadata." );
|
||||
throw new RecipeException( "Invalid Metadata." );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -134,7 +134,7 @@ public class Ingredient implements IIngredient
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RecipeError( input + " : Needs at least Namespace and Name." );
|
||||
throw new RecipeException( input + " : Needs at least Namespace and Name." );
|
||||
}
|
||||
|
||||
handler.getData().knownItem.add( this.toString() );
|
||||
@@ -147,16 +147,16 @@ public class Ingredient implements IIngredient
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getItemStack() throws RegistrationError, MissingIngredientError
|
||||
public ItemStack getItemStack() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
if( this.isAir )
|
||||
{
|
||||
throw new RegistrationError( "Found blank item and expected a real item." );
|
||||
throw new RegistrationException( "Found blank item and expected a real item." );
|
||||
}
|
||||
|
||||
if( this.nameSpace.equalsIgnoreCase( "oreDictionary" ) )
|
||||
{
|
||||
throw new RegistrationError( "Recipe format expected a single item, but got a set of items." );
|
||||
throw new RegistrationException( "Recipe format expected a single item, but got a set of items." );
|
||||
}
|
||||
|
||||
Block blk = Block.getBlockFromName( this.nameSpace + ":" + this.itemName );
|
||||
@@ -195,7 +195,7 @@ public class Ingredient implements IIngredient
|
||||
* instanceof BlockAir)) ) return new ItemStack( (Block) o, qty, meta );
|
||||
*/
|
||||
|
||||
throw new MissingIngredientError( "Unable to find item: " + this.toString() );
|
||||
throw new MissingIngredientException( "Unable to find item: " + this.toString() );
|
||||
}
|
||||
|
||||
private ItemStack makeItemStack( final Item it, final int quantity, final int damageValue, final NBTTagCompound compound )
|
||||
@@ -206,7 +206,7 @@ public class Ingredient implements IIngredient
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack[] getItemStackSet() throws RegistrationError, MissingIngredientError
|
||||
public ItemStack[] getItemStackSet() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
if( this.baked != null )
|
||||
{
|
||||
@@ -228,7 +228,7 @@ public class Ingredient implements IIngredient
|
||||
|
||||
if( set.length == 0 )
|
||||
{
|
||||
throw new MissingIngredientError( this.itemName + " - ore dictionary could not be resolved to any items." );
|
||||
throw new MissingIngredientException( this.itemName + " - ore dictionary could not be resolved to any items." );
|
||||
}
|
||||
|
||||
return set;
|
||||
@@ -268,7 +268,7 @@ public class Ingredient implements IIngredient
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bake() throws RegistrationError, MissingIngredientError
|
||||
public void bake() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
this.baked = null;
|
||||
this.baked = this.getItemStackSet();
|
||||
|
||||
@@ -27,8 +27,8 @@ import com.google.common.base.Preconditions;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
|
||||
import appeng.api.exceptions.MissingIngredientError;
|
||||
import appeng.api.exceptions.RegistrationError;
|
||||
import appeng.api.exceptions.MissingIngredientException;
|
||||
import appeng.api.exceptions.RegistrationException;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
import appeng.api.recipes.ResolverResultSet;
|
||||
|
||||
@@ -55,13 +55,13 @@ public class IngredientSet implements IIngredient
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getItemStack() throws RegistrationError, MissingIngredientError
|
||||
public ItemStack getItemStack() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
throw new RegistrationError( "Cannot pass group of items to a recipe which desires a single recipe item." );
|
||||
throw new RegistrationException( "Cannot pass group of items to a recipe which desires a single recipe item." );
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack[] getItemStackSet() throws RegistrationError, MissingIngredientError
|
||||
public ItemStack[] getItemStackSet() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
if( this.baked != null )
|
||||
{
|
||||
@@ -78,7 +78,7 @@ public class IngredientSet implements IIngredient
|
||||
|
||||
if( out.isEmpty() )
|
||||
{
|
||||
throw new MissingIngredientError( this.toString() + " - group could not be resolved to any items." );
|
||||
throw new MissingIngredientException( this.toString() + " - group could not be resolved to any items." );
|
||||
}
|
||||
|
||||
for( final ItemStack is : out )
|
||||
@@ -120,7 +120,7 @@ public class IngredientSet implements IIngredient
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bake() throws RegistrationError, MissingIngredientError
|
||||
public void bake() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
this.baked = null;
|
||||
this.baked = this.getItemStackSet();
|
||||
|
||||
@@ -47,9 +47,9 @@ import appeng.api.AEApi;
|
||||
import appeng.api.definitions.IBlocks;
|
||||
import appeng.api.definitions.IDefinitions;
|
||||
import appeng.api.definitions.IItems;
|
||||
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;
|
||||
import appeng.api.features.IRecipeHandlerRegistry;
|
||||
import appeng.api.recipes.ICraftHandler;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
@@ -102,7 +102,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
return this.getName( is );
|
||||
}
|
||||
}
|
||||
catch( final RecipeError ignored )
|
||||
catch( final RecipeException ignored )
|
||||
{
|
||||
}
|
||||
catch( final Throwable t )
|
||||
@@ -114,7 +114,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
return i.getNameSpace() + ':' + i.getItemName();
|
||||
}
|
||||
|
||||
private String getName( final ItemStack is ) throws RecipeError
|
||||
private String getName( final ItemStack is ) throws RecipeException
|
||||
{
|
||||
Preconditions.checkNotNull( is );
|
||||
|
||||
@@ -123,7 +123,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
|
||||
if( !id.getResourceDomain().equals( AppEng.MOD_ID ) && !id.getResourceDomain().equals( "minecraft" ) )
|
||||
{
|
||||
throw new RecipeError( "Not applicable for website" );
|
||||
throw new RecipeException( "Not applicable for website" );
|
||||
}
|
||||
|
||||
final IDefinitions definitions = AEApi.instance().definitions();
|
||||
@@ -388,7 +388,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
processed.put( clz, i + 1 );
|
||||
}
|
||||
}
|
||||
catch( final MissingIngredientError e )
|
||||
catch( final MissingIngredientException e )
|
||||
{
|
||||
if( this.data.errorOnMissing )
|
||||
{
|
||||
@@ -403,7 +403,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
}
|
||||
}
|
||||
}
|
||||
catch( final RegistrationError e )
|
||||
catch( final RegistrationException e )
|
||||
{
|
||||
AELog.warn( "Unable to register a recipe: " + e.getMessage() );
|
||||
if( this.data.exceptions )
|
||||
@@ -447,7 +447,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
}
|
||||
}
|
||||
}
|
||||
catch( final RecipeError ignored )
|
||||
catch( final RecipeException ignored )
|
||||
{
|
||||
|
||||
}
|
||||
@@ -455,11 +455,11 @@ public class RecipeHandler implements IRecipeHandler
|
||||
{
|
||||
|
||||
}
|
||||
catch( final RegistrationError ignored )
|
||||
catch( final RegistrationException ignored )
|
||||
{
|
||||
|
||||
}
|
||||
catch( final MissingIngredientError ignored )
|
||||
catch( final MissingIngredientException ignored )
|
||||
{
|
||||
|
||||
}
|
||||
@@ -521,7 +521,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
return this.data;
|
||||
}
|
||||
|
||||
private void processTokens( final IRecipeLoader loader, final String file, final int line ) throws RecipeError
|
||||
private void processTokens( final IRecipeLoader loader, final String file, final int line ) throws RecipeException
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -545,7 +545,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RecipeError( "Alias must have exactly 1 input and 1 output." );
|
||||
throw new RecipeException( "Alias must have exactly 1 input and 1 output." );
|
||||
}
|
||||
}
|
||||
else if( operation.equals( "group" ) )
|
||||
@@ -561,7 +561,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RecipeError( "Group must have exactly 1 output, and 1 or more inputs." );
|
||||
throw new RecipeException( "Group must have exactly 1 output, and 1 or more inputs." );
|
||||
}
|
||||
}
|
||||
else if( operation.equals( "ore" ) )
|
||||
@@ -578,7 +578,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RecipeError( "Group must have exactly 1 output, and 1 or more inputs in a single row." );
|
||||
throw new RecipeException( "Group must have exactly 1 output, and 1 or more inputs in a single row." );
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -598,7 +598,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RecipeError( "Invalid crafting type: " + operation );
|
||||
throw new RecipeException( "Invalid crafting type: " + operation );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -614,7 +614,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RecipeError( "exceptions must be true or false explicitly." );
|
||||
throw new RecipeException( "exceptions must be true or false explicitly." );
|
||||
}
|
||||
}
|
||||
else if( operation.equals( "crash" ) && ( this.tokens.get( 0 ).equals( "true" ) || this.tokens.get( 0 ).equals( "false" ) ) )
|
||||
@@ -625,7 +625,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RecipeError( "crash must be true or false explicitly." );
|
||||
throw new RecipeException( "crash must be true or false explicitly." );
|
||||
}
|
||||
}
|
||||
else if( operation.equals( "erroronmissing" ) )
|
||||
@@ -636,7 +636,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RecipeError( "erroronmissing must be true or false explicitly." );
|
||||
throw new RecipeException( "erroronmissing must be true or false explicitly." );
|
||||
}
|
||||
}
|
||||
else if( operation.equals( "import" ) )
|
||||
@@ -647,16 +647,16 @@ public class RecipeHandler implements IRecipeHandler
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RecipeError( "Import must have exactly 1 input." );
|
||||
throw new RecipeException( "Import must have exactly 1 input." );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RecipeError( operation + ": " + this.tokens.toString() + "; recipe without an output." );
|
||||
throw new RecipeException( operation + ": " + this.tokens.toString() + "; recipe without an output." );
|
||||
}
|
||||
}
|
||||
}
|
||||
catch( final RecipeError e )
|
||||
catch( final RecipeException e )
|
||||
{
|
||||
AELog.warn( "Recipe Error '" + e.getMessage() + "' near line:" + line + " in " + file + " with: " + this.tokens.toString() );
|
||||
if( this.data.exceptions )
|
||||
@@ -672,7 +672,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
this.tokens.clear();
|
||||
}
|
||||
|
||||
private List<List<IIngredient>> parseLines( final Iterable<String> subList ) throws RecipeError
|
||||
private List<List<IIngredient>> parseLines( final Iterable<String> subList ) throws RecipeException
|
||||
{
|
||||
final List<List<IIngredient>> out = new LinkedList<>();
|
||||
List<IIngredient> cList = new LinkedList<>();
|
||||
@@ -686,7 +686,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
{
|
||||
if( hasQty )
|
||||
{
|
||||
throw new RecipeError( "Qty found with no item." );
|
||||
throw new RecipeException( "Qty found with no item." );
|
||||
}
|
||||
if( !cList.isEmpty() )
|
||||
{
|
||||
@@ -700,7 +700,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
{
|
||||
if( hasQty )
|
||||
{
|
||||
throw new RecipeError( "Qty found with no item." );
|
||||
throw new RecipeException( "Qty found with no item." );
|
||||
}
|
||||
hasQty = true;
|
||||
qty = Integer.parseInt( v );
|
||||
@@ -728,7 +728,7 @@ public class RecipeHandler implements IRecipeHandler
|
||||
return out;
|
||||
}
|
||||
|
||||
private IIngredient findIngredient( final String v, final int qty ) throws RecipeError
|
||||
private IIngredient findIngredient( final String v, final int qty ) throws RecipeException
|
||||
{
|
||||
final GroupIngredient gi = this.data.groups.get( v );
|
||||
|
||||
|
||||
@@ -19,10 +19,10 @@
|
||||
package appeng.recipes.game;
|
||||
|
||||
|
||||
import appeng.api.exceptions.RegistrationError;
|
||||
import appeng.api.exceptions.RegistrationException;
|
||||
|
||||
|
||||
public interface IRecipeBakeable
|
||||
{
|
||||
void bake() throws RegistrationError;
|
||||
void bake() throws RegistrationException;
|
||||
}
|
||||
|
||||
@@ -31,8 +31,8 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.ForgeHooks;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
|
||||
import appeng.api.exceptions.MissingIngredientError;
|
||||
import appeng.api.exceptions.RegistrationError;
|
||||
import appeng.api.exceptions.MissingIngredientException;
|
||||
import appeng.api.exceptions.RegistrationException;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
|
||||
|
||||
@@ -228,11 +228,11 @@ public class ShapedRecipe extends net.minecraftforge.registries.IForgeRegistryEn
|
||||
matched = matched || this.checkItemEquals( item, slot );
|
||||
}
|
||||
}
|
||||
catch( final RegistrationError e )
|
||||
catch( final RegistrationException e )
|
||||
{
|
||||
// :P
|
||||
}
|
||||
catch( final MissingIngredientError e )
|
||||
catch( final MissingIngredientException e )
|
||||
{
|
||||
// :P
|
||||
}
|
||||
@@ -309,7 +309,7 @@ public class ShapedRecipe extends net.minecraftforge.registries.IForgeRegistryEn
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bake() throws RegistrationError
|
||||
public void bake() throws RegistrationException
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -322,7 +322,7 @@ public class ShapedRecipe extends net.minecraftforge.registries.IForgeRegistryEn
|
||||
}
|
||||
}
|
||||
}
|
||||
catch( final MissingIngredientError err )
|
||||
catch( final MissingIngredientException err )
|
||||
{
|
||||
this.disable = true;
|
||||
}
|
||||
|
||||
@@ -29,8 +29,8 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.ForgeHooks;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
|
||||
import appeng.api.exceptions.MissingIngredientError;
|
||||
import appeng.api.exceptions.RegistrationError;
|
||||
import appeng.api.exceptions.MissingIngredientException;
|
||||
import appeng.api.exceptions.RegistrationException;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
|
||||
|
||||
@@ -100,11 +100,11 @@ public class ShapelessRecipe extends net.minecraftforge.registries.IForgeRegistr
|
||||
match = match || this.checkItemEquals( item, slot );
|
||||
}
|
||||
}
|
||||
catch( final RegistrationError e )
|
||||
catch( final RegistrationException e )
|
||||
{
|
||||
// :P
|
||||
}
|
||||
catch( final MissingIngredientError e )
|
||||
catch( final MissingIngredientException e )
|
||||
{
|
||||
// :P
|
||||
}
|
||||
@@ -164,7 +164,7 @@ public class ShapelessRecipe extends net.minecraftforge.registries.IForgeRegistr
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bake() throws RegistrationError
|
||||
public void bake() throws RegistrationException
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -177,7 +177,7 @@ public class ShapelessRecipe extends net.minecraftforge.registries.IForgeRegistr
|
||||
}
|
||||
}
|
||||
}
|
||||
catch( final MissingIngredientError e )
|
||||
catch( final MissingIngredientException e )
|
||||
{
|
||||
this.disable = true;
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@ import java.util.List;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
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;
|
||||
import appeng.api.recipes.ICraftHandler;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
import appeng.core.AELog;
|
||||
@@ -42,7 +42,7 @@ public class Crusher implements ICraftHandler, IWebsiteSerializer
|
||||
private IIngredient[] pro_output;
|
||||
|
||||
@Override
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeError
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeException
|
||||
{
|
||||
if( input.size() == 1 && output.size() == 1 )
|
||||
{
|
||||
@@ -54,11 +54,11 @@ public class Crusher implements ICraftHandler, IWebsiteSerializer
|
||||
return;
|
||||
}
|
||||
}
|
||||
throw new RecipeError( "Crusher must have a single input, and single output." );
|
||||
throw new RecipeException( "Crusher must have a single input, and single output." );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register() throws RegistrationError, MissingIngredientError
|
||||
public void register() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
final IRC rc = Integrations.rc();
|
||||
for( final ItemStack is : this.pro_input.getItemStackSet() )
|
||||
@@ -81,7 +81,7 @@ public class Crusher implements ICraftHandler, IWebsiteSerializer
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canCraft( final ItemStack output ) throws RegistrationError, MissingIngredientError
|
||||
public boolean canCraft( final ItemStack output ) throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
return Platform.itemComparisons().isSameItem( this.pro_output[0].getItemStack(), output );
|
||||
}
|
||||
|
||||
@@ -24,9 +24,9 @@ import java.util.List;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import appeng.api.AEApi;
|
||||
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;
|
||||
import appeng.api.features.IGrinderRecipe;
|
||||
import appeng.api.features.IGrinderRecipeBuilder;
|
||||
import appeng.api.features.IGrinderRegistry;
|
||||
@@ -43,7 +43,7 @@ public class Grind implements ICraftHandler, IWebsiteSerializer
|
||||
private IIngredient[] pro_output;
|
||||
|
||||
@Override
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeError
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeException
|
||||
{
|
||||
if( input.size() == 1 && output.size() == 1 )
|
||||
{
|
||||
@@ -55,11 +55,11 @@ public class Grind implements ICraftHandler, IWebsiteSerializer
|
||||
return;
|
||||
}
|
||||
}
|
||||
throw new RecipeError( "Grind must have a single input, and single output." );
|
||||
throw new RecipeException( "Grind must have a single input, and single output." );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register() throws RegistrationError, MissingIngredientError
|
||||
public void register() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
for( final ItemStack is : this.pro_input.getItemStackSet() )
|
||||
{
|
||||
@@ -81,7 +81,7 @@ public class Grind implements ICraftHandler, IWebsiteSerializer
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canCraft( final ItemStack output ) throws RegistrationError, MissingIngredientError
|
||||
public boolean canCraft( final ItemStack output ) throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
return Platform.itemComparisons().isSameItem( this.pro_output[0].getItemStack(), output );
|
||||
}
|
||||
|
||||
@@ -25,9 +25,9 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraftforge.fml.common.event.FMLInterModComms;
|
||||
|
||||
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;
|
||||
import appeng.api.recipes.ICraftHandler;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
import appeng.core.AELog;
|
||||
@@ -42,7 +42,7 @@ public class HCCrusher implements ICraftHandler, IWebsiteSerializer
|
||||
private IIngredient[] pro_output;
|
||||
|
||||
@Override
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeError
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeException
|
||||
{
|
||||
if( input.size() == 1 && output.size() == 1 )
|
||||
{
|
||||
@@ -54,11 +54,11 @@ public class HCCrusher implements ICraftHandler, IWebsiteSerializer
|
||||
return;
|
||||
}
|
||||
}
|
||||
throw new RecipeError( "Crusher must have a single input, and single output." );
|
||||
throw new RecipeException( "Crusher must have a single input, and single output." );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register() throws RegistrationError, MissingIngredientError
|
||||
public void register() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
for( final ItemStack beginStack : this.pro_input.getItemStackSet() )
|
||||
{
|
||||
@@ -94,7 +94,7 @@ public class HCCrusher implements ICraftHandler, IWebsiteSerializer
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canCraft( final ItemStack output ) throws RegistrationError, MissingIngredientError
|
||||
public boolean canCraft( final ItemStack output ) throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
return Platform.itemComparisons().isSameItem( this.pro_output[0].getItemStack(), output );
|
||||
}
|
||||
|
||||
@@ -21,8 +21,8 @@ package appeng.recipes.handlers;
|
||||
|
||||
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;
|
||||
import appeng.recipes.RecipeHandler;
|
||||
|
||||
|
||||
@@ -31,5 +31,5 @@ public interface IWebsiteSerializer
|
||||
|
||||
String getPattern( RecipeHandler han );
|
||||
|
||||
boolean canCraft( ItemStack output ) throws RegistrationError, MissingIngredientError;
|
||||
boolean canCraft( ItemStack output ) throws RegistrationException, MissingIngredientException;
|
||||
}
|
||||
|
||||
@@ -26,8 +26,8 @@ import java.util.List;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.exceptions.MissingIngredientError;
|
||||
import appeng.api.exceptions.RegistrationError;
|
||||
import appeng.api.exceptions.MissingIngredientException;
|
||||
import appeng.api.exceptions.RegistrationException;
|
||||
import appeng.api.features.IInscriberRecipeBuilder;
|
||||
import appeng.api.features.InscriberProcessType;
|
||||
|
||||
@@ -43,7 +43,7 @@ import appeng.api.features.InscriberProcessType;
|
||||
public final class Inscribe extends InscriberProcess
|
||||
{
|
||||
@Override
|
||||
public void register() throws RegistrationError, MissingIngredientError
|
||||
public void register() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
if( this.getImprintable() == null )
|
||||
{
|
||||
|
||||
@@ -25,9 +25,9 @@ import javax.annotation.Nullable;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
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;
|
||||
import appeng.api.recipes.ICraftHandler;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
import appeng.recipes.RecipeHandler;
|
||||
@@ -57,7 +57,7 @@ public abstract class InscriberProcess implements ICraftHandler, IWebsiteSeriali
|
||||
private IIngredient output;
|
||||
|
||||
@Override
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeError
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeException
|
||||
{
|
||||
if( output.size() == 1 && output.get( 0 ).size() == 1 )
|
||||
{
|
||||
@@ -76,17 +76,17 @@ public abstract class InscriberProcess implements ICraftHandler, IWebsiteSeriali
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RecipeError( "Inscriber recipes cannot have rows, and must have more then one input." );
|
||||
throw new RecipeException( "Inscriber recipes cannot have rows, and must have more then one input." );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RecipeError( "Inscriber recipes must produce a single output." );
|
||||
throw new RecipeException( "Inscriber recipes must produce a single output." );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canCraft( final ItemStack reqOutput ) throws RegistrationError, MissingIngredientError
|
||||
public boolean canCraft( final ItemStack reqOutput ) throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
return this.output != null && Platform.itemComparisons().isSameItem( this.output.getItemStack(), reqOutput );
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@ import java.util.List;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
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;
|
||||
import appeng.api.recipes.ICraftHandler;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
import appeng.core.AELog;
|
||||
@@ -42,7 +42,7 @@ public class Macerator implements ICraftHandler, IWebsiteSerializer
|
||||
private IIngredient[] pro_output;
|
||||
|
||||
@Override
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeError
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeException
|
||||
{
|
||||
if( input.size() == 1 && output.size() == 1 )
|
||||
{
|
||||
@@ -54,11 +54,11 @@ public class Macerator implements ICraftHandler, IWebsiteSerializer
|
||||
return;
|
||||
}
|
||||
}
|
||||
throw new RecipeError( "Grind must have a single input, and single output." );
|
||||
throw new RecipeException( "Grind must have a single input, and single output." );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register() throws RegistrationError, MissingIngredientError
|
||||
public void register() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
IIC2 ic2 = Integrations.ic2();
|
||||
for( final ItemStack is : this.pro_input.getItemStackSet() )
|
||||
@@ -81,7 +81,7 @@ public class Macerator implements ICraftHandler, IWebsiteSerializer
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canCraft( final ItemStack output ) throws RegistrationError, MissingIngredientError
|
||||
public boolean canCraft( final ItemStack output ) throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
return Platform.itemComparisons().isSameItem( this.pro_output[0].getItemStack(), output );
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@ import java.util.List;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
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;
|
||||
import appeng.api.recipes.ICraftHandler;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
import appeng.core.AELog;
|
||||
@@ -42,7 +42,7 @@ public class MekCrusher implements ICraftHandler, IWebsiteSerializer
|
||||
private IIngredient[] pro_output;
|
||||
|
||||
@Override
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeError
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeException
|
||||
{
|
||||
if( input.size() == 1 && output.size() == 1 )
|
||||
{
|
||||
@@ -55,11 +55,11 @@ public class MekCrusher implements ICraftHandler, IWebsiteSerializer
|
||||
}
|
||||
}
|
||||
|
||||
throw new RecipeError( "MekCrusher must have a single input, and single output." );
|
||||
throw new RecipeException( "MekCrusher must have a single input, and single output." );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register() throws RegistrationError, MissingIngredientError
|
||||
public void register() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
IMekanism mekanism = Integrations.mekanism();
|
||||
for( final ItemStack is : this.pro_input.getItemStackSet() )
|
||||
@@ -82,7 +82,7 @@ public class MekCrusher implements ICraftHandler, IWebsiteSerializer
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canCraft( final ItemStack output ) throws RegistrationError, MissingIngredientError
|
||||
public boolean canCraft( final ItemStack output ) throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
return Platform.itemComparisons().isSameItem( this.pro_output[0].getItemStack(), output );
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@ import java.util.List;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
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;
|
||||
import appeng.api.recipes.ICraftHandler;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
import appeng.core.AELog;
|
||||
@@ -42,7 +42,7 @@ public class MekEnrichment implements ICraftHandler, IWebsiteSerializer
|
||||
private IIngredient[] pro_output;
|
||||
|
||||
@Override
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeError
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeException
|
||||
{
|
||||
if( input.size() == 1 && output.size() == 1 )
|
||||
{
|
||||
@@ -54,11 +54,11 @@ public class MekEnrichment implements ICraftHandler, IWebsiteSerializer
|
||||
return;
|
||||
}
|
||||
}
|
||||
throw new RecipeError( "MekCrusher must have a single input, and single output." );
|
||||
throw new RecipeException( "MekCrusher must have a single input, and single output." );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register() throws RegistrationError, MissingIngredientError
|
||||
public void register() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
IMekanism mekanism = Integrations.mekanism();
|
||||
for( final ItemStack is : this.pro_input.getItemStackSet() )
|
||||
@@ -81,7 +81,7 @@ public class MekEnrichment implements ICraftHandler, IWebsiteSerializer
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canCraft( final ItemStack output ) throws RegistrationError, MissingIngredientError
|
||||
public boolean canCraft( final ItemStack output ) throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
return Platform.itemComparisons().isSameItem( this.pro_output[0].getItemStack(), output );
|
||||
}
|
||||
|
||||
@@ -24,9 +24,9 @@ import java.util.List;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
|
||||
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;
|
||||
import appeng.api.recipes.ICraftHandler;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
|
||||
@@ -44,13 +44,13 @@ public class OreRegistration implements ICraftHandler
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeError
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeException
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register() throws RegistrationError, MissingIngredientError
|
||||
public void register() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
for( final IIngredient i : this.inputs )
|
||||
{
|
||||
|
||||
@@ -26,8 +26,8 @@ import java.util.List;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.exceptions.MissingIngredientError;
|
||||
import appeng.api.exceptions.RegistrationError;
|
||||
import appeng.api.exceptions.MissingIngredientException;
|
||||
import appeng.api.exceptions.RegistrationException;
|
||||
import appeng.api.features.IInscriberRecipe;
|
||||
import appeng.api.features.IInscriberRecipeBuilder;
|
||||
import appeng.api.features.InscriberProcessType;
|
||||
@@ -44,7 +44,7 @@ import appeng.api.features.InscriberProcessType;
|
||||
public final class Press extends InscriberProcess
|
||||
{
|
||||
@Override
|
||||
public void register() throws RegistrationError, MissingIngredientError
|
||||
public void register() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
if( this.getImprintable() == null )
|
||||
{
|
||||
|
||||
@@ -25,9 +25,9 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraftforge.fml.common.event.FMLInterModComms;
|
||||
|
||||
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;
|
||||
import appeng.api.recipes.ICraftHandler;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
import appeng.recipes.RecipeHandler;
|
||||
@@ -41,7 +41,7 @@ public class Pulverizer implements ICraftHandler, IWebsiteSerializer
|
||||
private IIngredient[] pro_output;
|
||||
|
||||
@Override
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeError
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeException
|
||||
{
|
||||
if( input.size() == 1 && output.size() == 1 )
|
||||
{
|
||||
@@ -53,11 +53,11 @@ public class Pulverizer implements ICraftHandler, IWebsiteSerializer
|
||||
return;
|
||||
}
|
||||
}
|
||||
throw new RecipeError( "Grind must have a single input, and single output." );
|
||||
throw new RecipeException( "Grind must have a single input, and single output." );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register() throws RegistrationError, MissingIngredientError
|
||||
public void register() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
final NBTTagCompound toSend = new NBTTagCompound();
|
||||
toSend.setInteger( "energy", 800 );
|
||||
@@ -80,7 +80,7 @@ public class Pulverizer implements ICraftHandler, IWebsiteSerializer
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canCraft( final ItemStack output ) throws RegistrationError, MissingIngredientError
|
||||
public boolean canCraft( final ItemStack output ) throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
return Platform.itemComparisons().isSameItem( this.pro_output[0].getItemStack(), output );
|
||||
}
|
||||
|
||||
@@ -24,9 +24,9 @@ import java.util.List;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
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;
|
||||
import appeng.api.recipes.ICraftHandler;
|
||||
import appeng.api.recipes.IIngredient;
|
||||
import appeng.core.AELog;
|
||||
@@ -43,7 +43,7 @@ public class Shaped implements ICraftHandler, IWebsiteSerializer
|
||||
private int cols;
|
||||
|
||||
@Override
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeError
|
||||
public void setup( final List<List<IIngredient>> input, final List<List<IIngredient>> output ) throws RecipeException
|
||||
{
|
||||
if( output.size() == 1 && output.get( 0 ).size() == 1 )
|
||||
{
|
||||
@@ -57,7 +57,7 @@ public class Shaped implements ICraftHandler, IWebsiteSerializer
|
||||
{
|
||||
if( anInput.size() != this.cols )
|
||||
{
|
||||
throw new RecipeError( "all rows in a shaped crafting recipe must contain the same number of ingredients." );
|
||||
throw new RecipeException( "all rows in a shaped crafting recipe must contain the same number of ingredients." );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,22 +66,22 @@ public class Shaped implements ICraftHandler, IWebsiteSerializer
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RecipeError( "Crafting recipes must have 1-3 columns." );
|
||||
throw new RecipeException( "Crafting recipes must have 1-3 columns." );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RecipeError( "shaped crafting recipes must have 1-3 rows." );
|
||||
throw new RecipeException( "shaped crafting recipes must have 1-3 rows." );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RecipeError( "Crafting must produce a single output." );
|
||||
throw new RecipeException( "Crafting must produce a single output." );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register() throws RegistrationError, MissingIngredientError
|
||||
public void register() throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
char first = 'A';
|
||||
final List<Object> args = new ArrayList<>();
|
||||
@@ -117,7 +117,7 @@ public class Shaped implements ICraftHandler, IWebsiteSerializer
|
||||
catch( final Throwable e )
|
||||
{
|
||||
AELog.debug( e );
|
||||
throw new RegistrationError( "Error while adding shaped recipe." );
|
||||
throw new RegistrationException( "Error while adding shaped recipe." );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,7 +149,7 @@ public class Shaped implements ICraftHandler, IWebsiteSerializer
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canCraft( final ItemStack reqOutput ) throws RegistrationError, MissingIngredientError
|
||||
public boolean canCraft( final ItemStack reqOutput ) throws RegistrationException, MissingIngredientException
|
||||
{
|
||||
for( int y = 0; y < this.rows; y++ )
|
||||
{
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user