Compare commits

...

41 Commits

Author SHA1 Message Date
thatsIch 817163dbf6 Merge pull request #1240 from bakaxyf/rv2
Update zh_CN.lang
2015-04-08 21:03:31 +02:00
thatsIch d164e279ef Merge pull request #1238 from thatsIch/b-1202-item-count
Fixes #1202: Now 10000x is the limit before being converted to next bigger unit
2015-04-08 15:35:07 +02:00
bakaxyf 4f9b8db6fc Update zh_CN.lang 2015-04-08 12:16:13 +08:00
thatsIch b58c92ebb6 Fixes #1202: Now 10000x items is the limit before being converted to next bigger unit
Added a new method to display a number in a long fashion.
Added respective unit tests for them
2015-04-07 23:46:52 +02:00
yueh 2667b8eac6 Merge pull request #1233 from yueh/fix-1230
Changed to LinkedHashSet to maintain insertion order
2015-04-07 12:50:27 +02:00
yueh 235fad439d Merge pull request #1228 from yueh/fix-1222
Changed the order as WATs are special and needing a position
2015-04-07 12:50:21 +02:00
yueh fcea444041 Changed to LinkedHashSet to maintain insertion order
Fixes #1230
2015-04-07 12:28:45 +02:00
yueh 80f56d4359 Changed the order as WATs are special and needing a position
Fixes #1222
2015-04-07 00:17:55 +02:00
thatsIch f14bfa7d53 Merge pull request #1227 from bakaxyf/rv2
Update zh_CN.lang
2015-04-06 22:42:57 +02:00
bakaxyf a7d55ee520 Update zh_CN.lang 2015-04-07 04:39:19 +08:00
thatsIch 7382897e8e Merge pull request #1225 from thatsIch/b-dev-jar-duplicates
Deobfuscated version for Developers contains no dupes anymore
2015-04-06 20:31:48 +02:00
thatsIch aac2b598ea Merge pull request #1221 from Adaptivity/rv2
Update ru_RU.lang
2015-04-06 20:30:44 +02:00
thatsIch 0f31cd43d2 Deobfuscated version for Developers contains no dupes anymore 2015-04-06 19:42:20 +02:00
yueh 788de6d432 Merge pull request #964 from yueh/fix-889
Fixes #889 possible dupe bug
2015-04-06 15:54:23 +02:00
thatsIch 04a6a683bc Merge pull request #1220 from thatsIch/e-1219-hardcoded-localizations
Fixes #1219: Improved localization options
2015-04-06 15:44:36 +02:00
thatsIch 25e433f7bd Merge pull request #1215 from thatsIch/e-1054-inscriber-api
Closes #1054: Adds an Inscriber API for Developers
2015-04-06 15:44:27 +02:00
Anton fbc44f47c8 Update ru_RU.lang 2015-04-06 16:32:05 +03:00
thatsIch 06bca227d0 Closes #1054: Adds an Inscriber API for Developers 2015-04-06 13:45:27 +02:00
thatsIch 8321a5fe1c Fixes #1219: Improved localization options 2015-04-06 13:37:40 +02:00
yueh 1bb8de3570 Merge pull request #1216 from yueh/cleanup-modifier-order
Modifier are now using a consistent order based on the java conventions
2015-04-06 13:31:21 +02:00
thatsIch 8666937117 Merge pull request #1210 from thatsIch/e-1207-channels
Fixes #1207 → Enables resource packs more fine tuned information in WAILA channel display
2015-04-06 13:09:54 +02:00
yueh eaf57bedf6 Modifier are now using a consistent order based on the java conventions 2015-04-06 00:35:42 +02:00
thatsIch a30ef4679c Fixes #1207 → Enables resource packs more fine tuned information in WAILA channel display 2015-04-05 23:06:31 +02:00
yueh 0ee2ca72ac Merge pull request #1206 from yueh/fix-1068
Stops AEBaseItemBlock from modifying the metadata before placing.
2015-04-05 20:47:31 +02:00
thatsIch 881bb919da Merge pull request #1205 from thatsIch/b-npe-on-random-smashing-button
Fixes NPE on random button smashing
2015-04-05 20:18:10 +02:00
thatsIch 5ecd68d5b6 Merge pull request #1209 from thatsIch/b-integration-with-gradle
Fixes integration bug for Resources between Gradle and IntelliJ, does not affect Eclipse
2015-04-05 20:18:03 +02:00
thatsIch e2d0e5d424 Dont use instance reference for static references 2015-04-05 15:59:23 +02:00
thatsIch e3bf7d63c0 Split one liner declarations 2015-04-05 15:57:37 +02:00
thatsIch 3fedcf273b Remove random semicolons 2015-04-05 15:56:10 +02:00
thatsIch 8042dbb3db Fixes integration bug for Resources between Gradle and IntelliJ, does not affect Eclipse 2015-04-05 15:25:26 +02:00
yueh e7e397c412 Stops AEBaseItemBlock from modifying the metadata before placing. 2015-04-05 14:01:42 +02:00
thatsIch ecc472a692 Fixes NPE on random button smashing 2015-04-05 13:07:19 +02:00
thatsIch 9790d9fd93 Merge pull request #1187 from thatsIch/b-1059-fmp-disables-interfaces
Fixes #1059 FMP like TileEntities are not valid Interface targets anymore
2015-04-04 14:55:21 +02:00
yueh f3f89344b4 Merge pull request #1192 from yueh/fix-1191
Moved AEBaseBlock.setFeature() to the end of any constructor.
2015-04-04 14:40:35 +02:00
thatsIch bac94b67b8 Merge pull request #1199 from thatsIch/b-skychest-invtweaks-interaction
Fixes interaction bug between Sky Stone Chest and Inventory Tweaks
2015-04-04 14:33:06 +02:00
thatsIch ba1afcca38 Merge pull request #1198 from thatsIch/e-1197-ae-vibration
Fixes #1197 Vibration Chamber does produce AE, not ae
2015-04-04 14:32:54 +02:00
thatsIch bb1c341c95 Fixes #1059 FMP Blocks don't disturb the ME Interface identifier 2015-04-04 14:32:17 +02:00
thatsIch 2ef04f1303 Fixes interaction bug between Sky Stone Chest and Inventory Tweaks upon sort via space + click 2015-04-04 12:56:42 +02:00
thatsIch 632d048ee2 Fixes #1197 Vibration Chamber does produce AE, not ae 2015-04-04 12:26:15 +02:00
yueh adea6b3dec Moved AEBaseBlock.setFeature() to the end of any constructor.
Otherwise it can cause a registration of incomplete blocks, like missing
subtypes.
2015-04-04 01:31:51 +02:00
yueh 5416ea2365 Fixes 889 possible dupe bug
Adds a hotfix to prevent duping with portable cells.
Should possibly fix the NPE crash with switching slots on laggy servers.
2015-04-03 17:23:17 +02:00
202 changed files with 1696 additions and 640 deletions
+1
View File
@@ -22,6 +22,7 @@ apply from: 'gradle/scripts/propertyloader.gradle'
apply from: 'gradle/scripts/dependencies.gradle' apply from: 'gradle/scripts/dependencies.gradle'
apply from: 'gradle/scripts/artifacts.gradle' apply from: 'gradle/scripts/artifacts.gradle'
apply from: 'gradle/scripts/autoinstallruntime.gradle' apply from: 'gradle/scripts/autoinstallruntime.gradle'
apply from: 'gradle/scripts/integration.gradle'
buildscript { buildscript {
repositories { repositories {
+7
View File
@@ -0,0 +1,7 @@
apply plugin: 'idea'
idea {
module {
inheritOutputDirs = true
}
}
@@ -29,8 +29,8 @@ public enum FuzzyMode
// Note that percentage damaged, is the inverse of percentage durability. // Note that percentage damaged, is the inverse of percentage durability.
IGNORE_ALL( -1 ), PERCENT_99( 0 ), PERCENT_75( 25 ), PERCENT_50( 50 ), PERCENT_25( 75 ); IGNORE_ALL( -1 ), PERCENT_99( 0 ), PERCENT_75( 25 ), PERCENT_50( 50 ), PERCENT_25( 75 );
final public float breakPoint; public final float breakPoint;
final public float percentage; public final float percentage;
FuzzyMode( float p ) FuzzyMode( float p )
{ {
@@ -35,7 +35,7 @@ public enum PowerUnits
/** /**
* unlocalized name for the power unit. * unlocalized name for the power unit.
*/ */
final public String unlocalizedName; public final String unlocalizedName;
/** /**
* please do not edit this value, it is set when AE loads its config files. * please do not edit this value, it is set when AE loads its config files.
*/ */
@@ -57,7 +57,7 @@ public enum SecurityPermissions
*/ */
SECURITY; SECURITY;
final private String unlocalizedName = "gui.appliedenergistics2.security." + this.name().toLowerCase(); private final String unlocalizedName = "gui.appliedenergistics2.security." + this.name().toLowerCase();
public String getUnlocalizedName() public String getUnlocalizedName()
{ {
@@ -37,8 +37,8 @@ import appeng.api.features.ILocatable;
public class LocatableEventAnnounce extends Event public class LocatableEventAnnounce extends Event
{ {
final public ILocatable target; public final ILocatable target;
final public LocatableEvent change; public final LocatableEvent change;
public LocatableEventAnnounce( ILocatable o, LocatableEvent ev ) public LocatableEventAnnounce( ILocatable o, LocatableEvent ev )
{ {
@@ -0,0 +1,65 @@
package appeng.api.features;
import java.util.List;
import javax.annotation.Nonnull;
import net.minecraft.item.ItemStack;
import com.google.common.base.Optional;
/**
* Registration Records for {@link IInscriberRegistry}
*
* You have to pay attention though, that recipes are not mirrored,
* where the top and bottom slots are switching places.
*
* This is applied on runtime.
*
* @author thatsIch
* @version rv2
* @since rv2
*/
public interface IInscriberRecipe
{
/**
* the current inputs
*
* @return inputs the inscriber will accept
*/
@Nonnull
List<ItemStack> getInputs();
/**
* gets the current output
*
* @return output that the recipe will produce
*/
@Nonnull
ItemStack getOutput();
/**
* gets the top optional
*
* @return item which is used top
*/
@Nonnull
Optional<ItemStack> getTopOptional();
/**
* gets the bottom optional
*
* @return item which is used bottom
*/
@Nonnull
Optional<ItemStack> getBottomOptional();
/**
* type of inscriber process
*
* @return type of process the inscriber is doing
*/
@Nonnull
InscriberProcessType getProcessType();
}
@@ -0,0 +1,88 @@
package appeng.api.features;
import java.util.Collection;
import javax.annotation.Nonnull;
import net.minecraft.item.ItemStack;
/**
* Builder for an inscriber recipe
*
* @author thatsIch
* @version rv2
* @since rv2
*/
public interface IInscriberRecipeBuilder
{
/**
* Creates an inscriber recipe with inputs.
* Needs to be invoked.
*
* @param inputs new inputs for the recipe
*
* @return currently used builder
*/
@Nonnull
IInscriberRecipeBuilder withInputs( @Nonnull Collection<ItemStack> inputs );
/**
* Creates an inscriber recipe with output.
* Needs to be invoked.
*
* @param output new output for the recipe
*
* @return currently used builder
*/
@Nonnull
IInscriberRecipeBuilder withOutput( @Nonnull ItemStack output );
/**
* Creates an inscriber recipe with top.
* Either this or bot needs to be invoked.
*
* @param topOptional new top for the recipe
*
* @return currently used builder
*/
@Nonnull
IInscriberRecipeBuilder withTopOptional( @Nonnull ItemStack topOptional );
/**
* Creates an inscriber recipe with bot.
* Either this or top needs to be invoked.
*
* @param bottomOptional new bot for the recipe
*
* @return currently used builder
*/
@Nonnull
IInscriberRecipeBuilder withBottomOptional( @Nonnull ItemStack bottomOptional );
/**
* Creates an inscriber recipe with type.
* Needs to be invoked.
*
* @param type new type for the recipe
*
* @return currently used builder
*/
@Nonnull
IInscriberRecipeBuilder withProcessType( @Nonnull InscriberProcessType type );
/**
* Finalizes the process of making the recipe.
* Needs to be invoked to fetch inscriber recipe.
*
* @return legal inscriber recipe
*
* @throws IllegalStateException when input is not defined
* @throws IllegalStateException when input has no size
* @throws IllegalStateException when output is not defined
* @throws IllegalStateException when both optionals are not defined
* @throws IllegalStateException when process type is not defined
*/
@Nonnull
IInscriberRecipe build();
}
@@ -0,0 +1,69 @@
package appeng.api.features;
import java.util.List;
import java.util.Set;
import javax.annotation.Nonnull;
import net.minecraft.item.ItemStack;
/**
* Lets you manipulate Inscriber Recipes, by adding or editing existing ones.
*
* @author thatsIch
* @version rv2
* @since rv2
*/
public interface IInscriberRegistry
{
/**
* Current list of registered recipes, you can modify this if you want too.
* Will never contain a null recipe
*
* @return currentlyRegisteredRecipes
*/
@Nonnull
List<IInscriberRecipe> getRecipes();
/**
* Optional items which are used in the top or bottom slot
*
* @return set of all optional items
*/
@Nonnull
Set<ItemStack> getOptionals();
/**
* Get all registered items which are valid inputs
*
* @return set of all input items
*/
@Nonnull
Set<ItemStack> getInputs();
/**
* Extensible way to create an inscriber recipe
*
* @return builder for inscriber recipes
*/
@Nonnull
IInscriberRecipeBuilder builder();
/**
* add a new recipe the easy way, duplicates will not be added.
* Added recipes will be automatically added to the optionals and inputs.
*
* @param recipe new recipe
*
* @throws IllegalArgumentException if null is added
*/
void addRecipe( IInscriberRecipe recipe );
/**
* Removes a recipe from the registry
*
* @param toBeRemovedRecipe to be removed recipe, can be null, makes just no sense
*/
void removeRecipe( IInscriberRecipe toBeRemovedRecipe );
}
@@ -30,6 +30,12 @@ import appeng.api.storage.ICellRegistry;
import appeng.api.storage.IExternalStorageRegistry; import appeng.api.storage.IExternalStorageRegistry;
/**
* @author AlgorithmX2
* @author thatsIch
* @version rv2
* @since rv0
*/
public interface IRegistryContainer public interface IRegistryContainer
{ {
@@ -69,6 +75,11 @@ public interface IRegistryContainer
*/ */
IGrinderRegistry grinder(); IGrinderRegistry grinder();
/**
* Manage inscriber recipes via API
*/
IInscriberRegistry inscriber();
/** /**
* get access to the locatable registry * get access to the locatable registry
*/ */
@@ -0,0 +1,15 @@
package appeng.api.features;
public enum InscriberProcessType
{
/**
* uses the optionals as catalyst
*/
Inscribe,
/**
* spends the optionals
*/
Press
}
@@ -30,9 +30,9 @@ import net.minecraft.nbt.NBTTagCompound;
public class ResolverResult public class ResolverResult
{ {
final public String itemName; public final String itemName;
final public int damageValue; public final int damageValue;
final public NBTTagCompound compound; public final NBTTagCompound compound;
public ResolverResult( String name, int damage ) public ResolverResult( String name, int damage )
{ {
+4 -4
View File
@@ -77,22 +77,22 @@ public enum AEColor
/** /**
* Unlocalized name for color. * Unlocalized name for color.
*/ */
final public String unlocalizedName; public final String unlocalizedName;
/** /**
* Darkest Variant of the color, nearly black; as a RGB HEX Integer * Darkest Variant of the color, nearly black; as a RGB HEX Integer
*/ */
final public int blackVariant; public final int blackVariant;
/** /**
* The Variant of the color that is used to represent the color normally; as a RGB HEX Integer * The Variant of the color that is used to represent the color normally; as a RGB HEX Integer
*/ */
final public int mediumVariant; public final int mediumVariant;
/** /**
* Lightest Variant of the color, nearly white; as a RGB HEX Integer * Lightest Variant of the color, nearly white; as a RGB HEX Integer
*/ */
final public int whiteVariant; public final int whiteVariant;
AEColor( String unlocalizedName, int blackHex, int medHex, int whiteHex ) AEColor( String unlocalizedName, int blackHex, int medHex, int whiteHex )
{ {
+8 -8
View File
@@ -196,7 +196,7 @@ public class AEBaseBlock extends BlockContainer implements IAEFeature
} }
@Override @Override
final public IFeatureHandler handler() public final IFeatureHandler handler()
{ {
return this.handler; return this.handler;
} }
@@ -279,7 +279,7 @@ public class AEBaseBlock extends BlockContainer implements IAEFeature
@Override @Override
@SideOnly( Side.CLIENT ) @SideOnly( Side.CLIENT )
final public AxisAlignedBB getSelectedBoundingBoxFromPool( World w, int x, int y, int z ) public final AxisAlignedBB getSelectedBoundingBoxFromPool( World w, int x, int y, int z )
{ {
ICustomCollision collisionHandler = null; ICustomCollision collisionHandler = null;
AxisAlignedBB b = null; AxisAlignedBB b = null;
@@ -360,7 +360,7 @@ public class AEBaseBlock extends BlockContainer implements IAEFeature
} }
@Override @Override
final public boolean isOpaqueCube() public final boolean isOpaqueCube()
{ {
return this.isOpaque; return this.isOpaque;
} }
@@ -421,7 +421,7 @@ public class AEBaseBlock extends BlockContainer implements IAEFeature
} }
@Override @Override
final public boolean onBlockActivated( World w, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ ) public final boolean onBlockActivated( World w, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ )
{ {
if( player != null ) if( player != null )
{ {
@@ -566,13 +566,13 @@ public class AEBaseBlock extends BlockContainer implements IAEFeature
} }
@Override @Override
final public boolean isNormalCube( IBlockAccess world, int x, int y, int z ) public final boolean isNormalCube( IBlockAccess world, int x, int y, int z )
{ {
return this.isFullSize; return this.isFullSize;
} }
@Override @Override
final public boolean rotateBlock( World w, int x, int y, int z, ForgeDirection axis ) public final boolean rotateBlock( World w, int x, int y, int z, ForgeDirection axis )
{ {
IOrientable rotatable = null; IOrientable rotatable = null;
@@ -630,7 +630,7 @@ public class AEBaseBlock extends BlockContainer implements IAEFeature
} }
@Override @Override
final public ForgeDirection[] getValidRotations( World w, int x, int y, int z ) public final ForgeDirection[] getValidRotations( World w, int x, int y, int z )
{ {
if( this.hasBlockTileEntity() ) if( this.hasBlockTileEntity() )
{ {
@@ -787,7 +787,7 @@ public class AEBaseBlock extends BlockContainer implements IAEFeature
} }
@Override @Override
final public TileEntity createNewTileEntity( World var1, int var2 ) public final TileEntity createNewTileEntity( World var1, int var2 )
{ {
if( this.hasBlockTileEntity() ) if( this.hasBlockTileEntity() )
{ {
@@ -162,8 +162,6 @@ public class AEBaseItemBlock extends ItemBlock
forward = ForgeDirection.SOUTH; forward = ForgeDirection.SOUTH;
if( up.offsetY == 0 ) if( up.offsetY == 0 )
forward = ForgeDirection.UP; forward = ForgeDirection.UP;
ori.setOrientation( forward, up );
} }
if( !this.blockType.isValidOrientation( w, x, y, z, forward, up ) ) if( !this.blockType.isValidOrientation( w, x, y, z, forward, up ) )
@@ -46,10 +46,10 @@ public class BlockMolecularAssembler extends AEBaseBlock
public BlockMolecularAssembler() public BlockMolecularAssembler()
{ {
super( BlockMolecularAssembler.class, Material.iron ); super( BlockMolecularAssembler.class, Material.iron );
this.setFeature( EnumSet.of( AEFeature.MolecularAssembler ) );
this.setTileEntity( TileMolecularAssembler.class ); this.setTileEntity( TileMolecularAssembler.class );
this.isOpaque = false; this.isOpaque = false;
this.lightOpacity = 1; this.lightOpacity = 1;
this.setFeature( EnumSet.of( AEFeature.MolecularAssembler ) );
} }
@Override @Override
@@ -47,11 +47,11 @@ public class BlockCrank extends AEBaseBlock
public BlockCrank() public BlockCrank()
{ {
super( BlockCrank.class, Material.wood ); super( BlockCrank.class, Material.wood );
this.setFeature( EnumSet.of( AEFeature.GrindStone ) );
this.setTileEntity( TileCrank.class ); this.setTileEntity( TileCrank.class );
this.setLightOpacity( 0 ); this.setLightOpacity( 0 );
this.setHarvestLevel( "axe", 0 ); this.setHarvestLevel( "axe", 0 );
this.isFullSize = this.isOpaque = false; this.isFullSize = this.isOpaque = false;
this.setFeature( EnumSet.of( AEFeature.GrindStone ) );
} }
@Override @Override
@@ -39,9 +39,9 @@ public class BlockGrinder extends AEBaseBlock
public BlockGrinder() public BlockGrinder()
{ {
super( BlockGrinder.class, Material.rock ); super( BlockGrinder.class, Material.rock );
this.setFeature( EnumSet.of( AEFeature.GrindStone ) );
this.setTileEntity( TileGrinder.class ); this.setTileEntity( TileGrinder.class );
this.setHardness( 3.2F ); this.setHardness( 3.2F );
this.setFeature( EnumSet.of( AEFeature.GrindStone ) );
} }
@Override @Override
@@ -39,8 +39,8 @@ public class BlockCellWorkbench extends AEBaseBlock
public BlockCellWorkbench() public BlockCellWorkbench()
{ {
super( BlockCellWorkbench.class, Material.iron ); super( BlockCellWorkbench.class, Material.iron );
this.setFeature( EnumSet.of( AEFeature.StorageCells ) );
this.setTileEntity( TileCellWorkbench.class ); this.setTileEntity( TileCellWorkbench.class );
this.setFeature( EnumSet.of( AEFeature.StorageCells ) );
} }
@Override @Override
@@ -55,10 +55,10 @@ public class BlockCharger extends AEBaseBlock implements ICustomCollision
public BlockCharger() public BlockCharger()
{ {
super( BlockCharger.class, Material.iron ); super( BlockCharger.class, Material.iron );
this.setFeature( EnumSet.of( AEFeature.Core ) );
this.setTileEntity( TileCharger.class ); this.setTileEntity( TileCharger.class );
this.setLightOpacity( 2 ); this.setLightOpacity( 2 );
this.isFullSize = this.isOpaque = false; this.isFullSize = this.isOpaque = false;
this.setFeature( EnumSet.of( AEFeature.Core ) );
} }
@Override @Override
@@ -39,8 +39,8 @@ public class BlockCondenser extends AEBaseBlock
public BlockCondenser() public BlockCondenser()
{ {
super( BlockCondenser.class, Material.iron ); super( BlockCondenser.class, Material.iron );
this.setFeature( EnumSet.of( AEFeature.Core ) );
this.setTileEntity( TileCondenser.class ); this.setTileEntity( TileCondenser.class );
this.setFeature( EnumSet.of( AEFeature.Core ) );
} }
@Override @Override
@@ -41,10 +41,10 @@ public class BlockInscriber extends AEBaseBlock
public BlockInscriber() public BlockInscriber()
{ {
super( BlockInscriber.class, Material.iron ); super( BlockInscriber.class, Material.iron );
this.setFeature( EnumSet.of( AEFeature.Inscriber ) );
this.setTileEntity( TileInscriber.class ); this.setTileEntity( TileInscriber.class );
this.setLightOpacity( 2 ); this.setLightOpacity( 2 );
this.isFullSize = this.isOpaque = false; this.isFullSize = this.isOpaque = false;
this.setFeature( EnumSet.of( AEFeature.Inscriber ) );
} }
@Override @Override
@@ -42,8 +42,8 @@ public class BlockInterface extends AEBaseBlock
public BlockInterface() public BlockInterface()
{ {
super( BlockInterface.class, Material.iron ); super( BlockInterface.class, Material.iron );
this.setFeature( EnumSet.of( AEFeature.Core ) );
this.setTileEntity( TileInterface.class ); this.setTileEntity( TileInterface.class );
this.setFeature( EnumSet.of( AEFeature.Core ) );
} }
@Override @Override
@@ -38,8 +38,8 @@ public class BlockLightDetector extends BlockQuartzTorch
public BlockLightDetector() public BlockLightDetector()
{ {
super( BlockLightDetector.class ); super( BlockLightDetector.class );
this.setFeature( EnumSet.of( AEFeature.LightDetector ) );
this.setTileEntity( TileLightDetector.class ); this.setTileEntity( TileLightDetector.class );
this.setFeature( EnumSet.of( AEFeature.LightDetector ) );
} }
@Override @Override
@@ -50,11 +50,11 @@ public class BlockPaint extends AEBaseBlock
public BlockPaint() public BlockPaint()
{ {
super( BlockPaint.class, new MaterialLiquid( MapColor.airColor ) ); super( BlockPaint.class, new MaterialLiquid( MapColor.airColor ) );
this.setFeature( EnumSet.of( AEFeature.PaintBalls ) );
this.setTileEntity( TilePaint.class ); this.setTileEntity( TilePaint.class );
this.setLightOpacity( 0 ); this.setLightOpacity( 0 );
this.isFullSize = false; this.isFullSize = false;
this.isOpaque = false; this.isOpaque = false;
this.setFeature( EnumSet.of( AEFeature.PaintBalls ) );
} }
@Override @Override
@@ -53,8 +53,8 @@ public class BlockQuartzGrowthAccelerator extends AEBaseBlock implements IOrient
{ {
super( BlockQuartzGrowthAccelerator.class, Material.rock ); super( BlockQuartzGrowthAccelerator.class, Material.rock );
this.setStepSound( Block.soundTypeMetal ); this.setStepSound( Block.soundTypeMetal );
this.setFeature( EnumSet.of( AEFeature.Core ) );
this.setTileEntity( TileQuartzGrowthAccelerator.class ); this.setTileEntity( TileQuartzGrowthAccelerator.class );
this.setFeature( EnumSet.of( AEFeature.Core ) );
} }
@Override @Override
@@ -55,8 +55,8 @@ public class BlockQuartzTorch extends AEBaseBlock implements IOrientableBlock, I
public BlockQuartzTorch() public BlockQuartzTorch()
{ {
this( BlockQuartzTorch.class ); this( BlockQuartzTorch.class );
this.setFeature( EnumSet.of( AEFeature.DecorativeLights ) );
this.setLightLevel( 0.9375F ); this.setLightLevel( 0.9375F );
this.setFeature( EnumSet.of( AEFeature.DecorativeLights ) );
} }
protected BlockQuartzTorch( Class which ) protected BlockQuartzTorch( Class which )
@@ -41,8 +41,8 @@ public class BlockSecurity extends AEBaseBlock
public BlockSecurity() public BlockSecurity()
{ {
super( BlockSecurity.class, Material.iron ); super( BlockSecurity.class, Material.iron );
this.setFeature( EnumSet.of( AEFeature.Security ) );
this.setTileEntity( TileSecurity.class ); this.setTileEntity( TileSecurity.class );
this.setFeature( EnumSet.of( AEFeature.Security ) );
} }
@Override @Override
@@ -50,10 +50,10 @@ public class BlockSkyCompass extends AEBaseBlock implements ICustomCollision
public BlockSkyCompass() public BlockSkyCompass()
{ {
super( BlockSkyCompass.class, Material.iron ); super( BlockSkyCompass.class, Material.iron );
this.setFeature( EnumSet.of( AEFeature.MeteoriteCompass ) );
this.setTileEntity( TileSkyCompass.class ); this.setTileEntity( TileSkyCompass.class );
this.isOpaque = this.isFullSize = false; this.isOpaque = this.isFullSize = false;
this.lightOpacity = 0; this.lightOpacity = 0;
this.setFeature( EnumSet.of( AEFeature.MeteoriteCompass ) );
} }
@Override @Override
@@ -59,12 +59,12 @@ public class BlockTinyTNT extends AEBaseBlock implements ICustomCollision
public BlockTinyTNT() public BlockTinyTNT()
{ {
super( BlockTinyTNT.class, Material.tnt ); super( BlockTinyTNT.class, Material.tnt );
this.setFeature( EnumSet.of( AEFeature.TinyTNT ) );
this.setLightOpacity( 1 ); this.setLightOpacity( 1 );
this.setBlockBounds( 0.25f, 0.0f, 0.25f, 0.75f, 0.5f, 0.75f ); this.setBlockBounds( 0.25f, 0.0f, 0.25f, 0.75f, 0.5f, 0.75f );
this.isFullSize = this.isOpaque = false; this.isFullSize = this.isOpaque = false;
this.setStepSound( soundTypeGrass ); this.setStepSound( soundTypeGrass );
this.setHardness( 0F ); this.setHardness( 0F );
this.setFeature( EnumSet.of( AEFeature.TinyTNT ) );
EntityRegistry.registerModEntity( EntityTinyTNTPrimed.class, "EntityTinyTNTPrimed", EntityIds.TINY_TNT, AppEng.instance, 16, 4, true ); EntityRegistry.registerModEntity( EntityTinyTNTPrimed.class, "EntityTinyTNTPrimed", EntityIds.TINY_TNT, AppEng.instance, 16, 4, true );
} }
@@ -45,9 +45,9 @@ public class BlockVibrationChamber extends AEBaseBlock
public BlockVibrationChamber() public BlockVibrationChamber()
{ {
super( BlockVibrationChamber.class, Material.iron ); super( BlockVibrationChamber.class, Material.iron );
this.setFeature( EnumSet.of( AEFeature.PowerGen ) );
this.setTileEntity( TileVibrationChamber.class ); this.setTileEntity( TileVibrationChamber.class );
this.setHardness( 4.2F ); this.setHardness( 4.2F );
this.setFeature( EnumSet.of( AEFeature.PowerGen ) );
} }
@Override @Override
@@ -81,8 +81,8 @@ public class BlockCableBus extends AEBaseBlock implements IRedNetConnection
{ {
private static final ICableBusContainer NULL_CABLE_BUS = new NullCableBusContainer(); private static final ICableBusContainer NULL_CABLE_BUS = new NullCableBusContainer();
static public Class<? extends TileEntity> noTesrTile; public static Class<? extends TileEntity> noTesrTile;
static public Class<? extends TileEntity> tesrTile; public static Class<? extends TileEntity> tesrTile;
/** /**
* Immibis MB Support. * Immibis MB Support.
*/ */
@@ -92,9 +92,9 @@ public class BlockCableBus extends AEBaseBlock implements IRedNetConnection
public BlockCableBus() public BlockCableBus()
{ {
super( BlockCableBus.class, AEGlassMaterial.INSTANCE ); super( BlockCableBus.class, AEGlassMaterial.INSTANCE );
this.setFeature( EnumSet.of( AEFeature.Core ) );
this.setLightOpacity( 0 ); this.setLightOpacity( 0 );
this.isFullSize = this.isOpaque = false; this.isFullSize = this.isOpaque = false;
this.setFeature( EnumSet.of( AEFeature.Core ) );
} }
@Override @Override
@@ -38,9 +38,9 @@ public class BlockController extends AEBaseBlock
public BlockController() public BlockController()
{ {
super( BlockController.class, Material.iron ); super( BlockController.class, Material.iron );
this.setFeature( EnumSet.of( AEFeature.Channels ) );
this.setTileEntity( TileController.class ); this.setTileEntity( TileController.class );
this.setHardness( 6 ); this.setHardness( 6 );
this.setFeature( EnumSet.of( AEFeature.Channels ) );
} }
@Override @Override
@@ -33,7 +33,7 @@ public class BlockCreativeEnergyCell extends AEBaseBlock
public BlockCreativeEnergyCell() public BlockCreativeEnergyCell()
{ {
super( BlockCreativeEnergyCell.class, AEGlassMaterial.INSTANCE ); super( BlockCreativeEnergyCell.class, AEGlassMaterial.INSTANCE );
this.setFeature( EnumSet.of( AEFeature.Creative ) );
this.setTileEntity( TileCreativeEnergyCell.class ); this.setTileEntity( TileCreativeEnergyCell.class );
this.setFeature( EnumSet.of( AEFeature.Creative ) );
} }
} }
@@ -34,8 +34,8 @@ public class BlockDenseEnergyCell extends BlockEnergyCell
public BlockDenseEnergyCell() public BlockDenseEnergyCell()
{ {
super( BlockDenseEnergyCell.class ); super( BlockDenseEnergyCell.class );
this.setFeature( EnumSet.of( AEFeature.DenseEnergyCells ) );
this.setTileEntity( TileDenseEnergyCell.class ); this.setTileEntity( TileDenseEnergyCell.class );
this.setFeature( EnumSet.of( AEFeature.DenseEnergyCells ) );
} }
@Override @Override
@@ -34,7 +34,7 @@ public class BlockEnergyAcceptor extends AEBaseBlock
public BlockEnergyAcceptor() public BlockEnergyAcceptor()
{ {
super( BlockEnergyAcceptor.class, Material.iron ); super( BlockEnergyAcceptor.class, Material.iron );
this.setFeature( EnumSet.of( AEFeature.Core ) );
this.setTileEntity( TileEnergyAcceptor.class ); this.setTileEntity( TileEnergyAcceptor.class );
this.setFeature( EnumSet.of( AEFeature.Core ) );
} }
} }
@@ -49,8 +49,8 @@ public class BlockEnergyCell extends AEBaseBlock
public BlockEnergyCell() public BlockEnergyCell()
{ {
this( BlockEnergyCell.class ); this( BlockEnergyCell.class );
this.setFeature( EnumSet.of( AEFeature.Core ) );
this.setTileEntity( TileEnergyCell.class ); this.setTileEntity( TileEnergyCell.class );
this.setFeature( EnumSet.of( AEFeature.Core ) );
} }
public BlockEnergyCell( Class c ) public BlockEnergyCell( Class c )
@@ -46,11 +46,11 @@ public class BlockWireless extends AEBaseBlock implements ICustomCollision
public BlockWireless() public BlockWireless()
{ {
super( BlockWireless.class, AEGlassMaterial.INSTANCE ); super( BlockWireless.class, AEGlassMaterial.INSTANCE );
this.setFeature( EnumSet.of( AEFeature.Core, AEFeature.WirelessAccessTerminal ) );
this.setTileEntity( TileWireless.class ); this.setTileEntity( TileWireless.class );
this.setLightOpacity( 0 ); this.setLightOpacity( 0 );
this.isFullSize = false; this.isFullSize = false;
this.isOpaque = false; this.isOpaque = false;
this.setFeature( EnumSet.of( AEFeature.Core, AEFeature.WirelessAccessTerminal ) );
} }
@Override @Override
@@ -53,12 +53,12 @@ public class BlockQuantumLinkChamber extends AEBaseBlock implements ICustomColli
public BlockQuantumLinkChamber() public BlockQuantumLinkChamber()
{ {
super( BlockQuantumLinkChamber.class, AEGlassMaterial.INSTANCE ); super( BlockQuantumLinkChamber.class, AEGlassMaterial.INSTANCE );
this.setFeature( EnumSet.of( AEFeature.QuantumNetworkBridge ) );
this.setTileEntity( TileQuantumBridge.class ); this.setTileEntity( TileQuantumBridge.class );
float shave = 2.0f / 16.0f; float shave = 2.0f / 16.0f;
this.setBlockBounds( shave, shave, shave, 1.0f - shave, 1.0f - shave, 1.0f - shave ); this.setBlockBounds( shave, shave, shave, 1.0f - shave, 1.0f - shave, 1.0f - shave );
this.setLightOpacity( 0 ); this.setLightOpacity( 0 );
this.isFullSize = this.isOpaque = false; this.isFullSize = this.isOpaque = false;
this.setFeature( EnumSet.of( AEFeature.QuantumNetworkBridge ) );
} }
@Override @Override
@@ -43,12 +43,12 @@ public class BlockQuantumRing extends AEBaseBlock implements ICustomCollision
public BlockQuantumRing() public BlockQuantumRing()
{ {
super( BlockQuantumRing.class, Material.iron ); super( BlockQuantumRing.class, Material.iron );
this.setFeature( EnumSet.of( AEFeature.QuantumNetworkBridge ) );
this.setTileEntity( TileQuantumBridge.class ); this.setTileEntity( TileQuantumBridge.class );
float shave = 2.0f / 16.0f; float shave = 2.0f / 16.0f;
this.setBlockBounds( shave, shave, shave, 1.0f - shave, 1.0f - shave, 1.0f - shave ); this.setBlockBounds( shave, shave, shave, 1.0f - shave, 1.0f - shave, 1.0f - shave );
this.setLightOpacity( 1 ); this.setLightOpacity( 1 );
this.isFullSize = this.isOpaque = false; this.isFullSize = this.isOpaque = false;
this.setFeature( EnumSet.of( AEFeature.QuantumNetworkBridge ) );
} }
@Override @Override
@@ -45,9 +45,9 @@ public class BlockQuartzGlass extends AEBaseBlock
public BlockQuartzGlass( Class c ) public BlockQuartzGlass( Class c )
{ {
super( c, Material.glass ); super( c, Material.glass );
this.setFeature( EnumSet.of( AEFeature.DecorativeQuartzBlocks ) );
this.setLightOpacity( 0 ); this.setLightOpacity( 0 );
this.isOpaque = false; this.isOpaque = false;
this.setFeature( EnumSet.of( AEFeature.DecorativeQuartzBlocks ) );
} }
@Override @Override
@@ -40,9 +40,9 @@ public class BlockQuartzLamp extends BlockQuartzGlass
public BlockQuartzLamp() public BlockQuartzLamp()
{ {
super( BlockQuartzLamp.class ); super( BlockQuartzLamp.class );
this.setFeature( EnumSet.of( AEFeature.DecorativeQuartzBlocks, AEFeature.DecorativeLights ) );
this.setLightLevel( 1.0f ); this.setLightLevel( 1.0f );
this.setBlockTextureName( "BlockQuartzGlass" ); this.setBlockTextureName( "BlockQuartzGlass" );
this.setFeature( EnumSet.of( AEFeature.DecorativeQuartzBlocks, AEFeature.DecorativeLights ) );
} }
@Override @Override
@@ -72,11 +72,12 @@ public class BlockSkyStone extends AEBaseBlock implements IOrientableBlock
public BlockSkyStone() public BlockSkyStone()
{ {
super( BlockSkyStone.class, Material.rock ); super( BlockSkyStone.class, Material.rock );
this.setFeature( EnumSet.of( AEFeature.Core ) );
this.setHardness( 50 ); this.setHardness( 50 );
this.hasSubtypes = true; this.hasSubtypes = true;
this.blockResistance = 150.0f; this.blockResistance = 150.0f;
this.setHarvestLevel( "pickaxe", 3, 0 ); this.setHarvestLevel( "pickaxe", 3, 0 );
this.setFeature( EnumSet.of( AEFeature.Core ) );
MinecraftForge.EVENT_BUS.register( this ); MinecraftForge.EVENT_BUS.register( this );
} }
@@ -53,12 +53,12 @@ public class OreQuartz extends AEBaseBlock
public OreQuartz( Class<? extends OreQuartz> self ) public OreQuartz( Class<? extends OreQuartz> self )
{ {
super( self, Material.rock ); super( self, Material.rock );
this.setFeature( EnumSet.of( AEFeature.Core ) );
this.setHardness( 3.0F ); this.setHardness( 3.0F );
this.setResistance( 5.0F ); this.setResistance( 5.0F );
this.boostBrightnessLow = 0; this.boostBrightnessLow = 0;
this.boostBrightnessHigh = 1; this.boostBrightnessHigh = 1;
this.enhanceBrightness = false; this.enhanceBrightness = false;
this.setFeature( EnumSet.of( AEFeature.Core ) );
} }
@Override @Override
@@ -50,11 +50,11 @@ public class BlockMatrixFrame extends AEBaseBlock implements ICustomCollision
public BlockMatrixFrame() public BlockMatrixFrame()
{ {
super( BlockMatrixFrame.class, Material.anvil ); super( BlockMatrixFrame.class, Material.anvil );
this.setFeature( EnumSet.of( AEFeature.SpatialIO ) );
this.setResistance( 6000000.0F ); this.setResistance( 6000000.0F );
this.setBlockUnbreakable(); this.setBlockUnbreakable();
this.setLightOpacity( 0 ); this.setLightOpacity( 0 );
this.isOpaque = false; this.isOpaque = false;
this.setFeature( EnumSet.of( AEFeature.SpatialIO ) );
} }
@Override @Override
@@ -40,8 +40,8 @@ public class BlockSpatialIOPort extends AEBaseBlock
public BlockSpatialIOPort() public BlockSpatialIOPort()
{ {
super( BlockSpatialIOPort.class, Material.iron ); super( BlockSpatialIOPort.class, Material.iron );
this.setFeature( EnumSet.of( AEFeature.SpatialIO ) );
this.setTileEntity( TileSpatialIOPort.class ); this.setTileEntity( TileSpatialIOPort.class );
this.setFeature( EnumSet.of( AEFeature.SpatialIO ) );
} }
@Override @Override
@@ -39,8 +39,8 @@ public class BlockSpatialPylon extends AEBaseBlock
public BlockSpatialPylon() public BlockSpatialPylon()
{ {
super( BlockSpatialPylon.class, AEGlassMaterial.INSTANCE ); super( BlockSpatialPylon.class, AEGlassMaterial.INSTANCE );
this.setFeature( EnumSet.of( AEFeature.SpatialIO ) );
this.setTileEntity( TileSpatialPylon.class ); this.setTileEntity( TileSpatialPylon.class );
this.setFeature( EnumSet.of( AEFeature.SpatialIO ) );
} }
@Override @Override
@@ -45,8 +45,8 @@ public class BlockChest extends AEBaseBlock
public BlockChest() public BlockChest()
{ {
super( BlockChest.class, Material.iron ); super( BlockChest.class, Material.iron );
this.setFeature( EnumSet.of( AEFeature.StorageCells, AEFeature.MEChest ) );
this.setTileEntity( TileChest.class ); this.setTileEntity( TileChest.class );
this.setFeature( EnumSet.of( AEFeature.StorageCells, AEFeature.MEChest ) );
} }
@Override @Override
@@ -41,8 +41,8 @@ public class BlockDrive extends AEBaseBlock
public BlockDrive() public BlockDrive()
{ {
super( BlockDrive.class, Material.iron ); super( BlockDrive.class, Material.iron );
this.setFeature( EnumSet.of( AEFeature.StorageCells, AEFeature.MEDrive ) );
this.setTileEntity( TileDrive.class ); this.setTileEntity( TileDrive.class );
this.setFeature( EnumSet.of( AEFeature.StorageCells, AEFeature.MEDrive ) );
} }
@Override @Override
@@ -40,8 +40,8 @@ public class BlockIOPort extends AEBaseBlock
public BlockIOPort() public BlockIOPort()
{ {
super( BlockIOPort.class, Material.iron ); super( BlockIOPort.class, Material.iron );
this.setFeature( EnumSet.of( AEFeature.StorageCells, AEFeature.IOPort ) );
this.setTileEntity( TileIOPort.class ); this.setTileEntity( TileIOPort.class );
this.setFeature( EnumSet.of( AEFeature.StorageCells, AEFeature.IOPort ) );
} }
@Override @Override
@@ -58,13 +58,13 @@ public class BlockSkyChest extends AEBaseBlock implements ICustomCollision
public BlockSkyChest() public BlockSkyChest()
{ {
super( BlockSkyChest.class, Material.rock ); super( BlockSkyChest.class, Material.rock );
this.setFeature( EnumSet.of( AEFeature.Core, AEFeature.SkyStoneChests ) );
this.setTileEntity( TileSkyChest.class ); this.setTileEntity( TileSkyChest.class );
this.isOpaque = this.isFullSize = false; this.isOpaque = this.isFullSize = false;
this.lightOpacity = 0; this.lightOpacity = 0;
this.hasSubtypes = true; this.hasSubtypes = true;
this.setHardness( 50 ); this.setHardness( 50 );
this.blockResistance = 150.0f; this.blockResistance = 150.0f;
this.setFeature( EnumSet.of( AEFeature.Core, AEFeature.SkyStoneChests ) );
} }
@Override @Override
@@ -270,7 +270,7 @@ public abstract class AEBaseGui extends GuiContainer
} }
@Override @Override
final protected void drawGuiContainerForegroundLayer( int x, int y ) protected final void drawGuiContainerForegroundLayer( int x, int y )
{ {
int ox = this.guiLeft; // (width - xSize) / 2; int ox = this.guiLeft; // (width - xSize) / 2;
int oy = this.guiTop; // (height - ySize) / 2; int oy = this.guiTop; // (height - ySize) / 2;
@@ -285,7 +285,7 @@ public abstract class AEBaseGui extends GuiContainer
public abstract void drawFG( int offsetX, int offsetY, int mouseX, int mouseY ); public abstract void drawFG( int offsetX, int offsetY, int mouseX, int mouseY );
@Override @Override
final protected void drawGuiContainerBackgroundLayer( float f, int x, int y ) protected final void drawGuiContainerBackgroundLayer( float f, int x, int y )
{ {
int ox = this.guiLeft; // (width - xSize) / 2; int ox = this.guiLeft; // (width - xSize) / 2;
int oy = this.guiTop; // (height - ySize) / 2; int oy = this.guiTop; // (height - ySize) / 2;
@@ -30,6 +30,7 @@ import net.minecraft.item.ItemStack;
import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEItemStack;
import appeng.client.me.SlotME; import appeng.client.me.SlotME;
import appeng.core.AEConfig; import appeng.core.AEConfig;
import appeng.core.localization.ButtonToolTips;
public abstract class AEBaseMEGui extends AEBaseGui public abstract class AEBaseMEGui extends AEBaseGui
@@ -63,14 +64,30 @@ public abstract class AEBaseMEGui extends AEBaseGui
if( myStack != null ) if( myStack != null )
{ {
if( myStack.getStackSize() > BigNumber || ( myStack.getStackSize() > 1 && stack.isItemDamaged() ) ) if( myStack.getStackSize() > BigNumber || ( myStack.getStackSize() > 1 && stack.isItemDamaged() ) )
currentToolTip.add( "\u00a77Items Stored: " + NumberFormat.getNumberInstance( Locale.US ).format( myStack.getStackSize() ) ); {
final String local = ButtonToolTips.ItemsStored.getLocal();
final String formattedAmount = NumberFormat.getNumberInstance( Locale.US ).format( myStack.getStackSize() );
final String format = String.format( local, formattedAmount );
currentToolTip.add( "\u00a77" + format );
}
if( myStack.getCountRequestable() > 0 ) if( myStack.getCountRequestable() > 0 )
currentToolTip.add( "\u00a77Items Requestable: " + NumberFormat.getNumberInstance( Locale.US ).format( myStack.getCountRequestable() ) ); {
final String local = ButtonToolTips.ItemsRequestable.getLocal();
final String formattedAmount = NumberFormat.getNumberInstance( Locale.US ).format( myStack.getCountRequestable() );
final String format = String.format( local, formattedAmount );
currentToolTip.add( "\u00a77" + format );
}
} }
else if( stack.stackSize > BigNumber || ( stack.stackSize > 1 && stack.isItemDamaged() ) ) else if( stack.stackSize > BigNumber || ( stack.stackSize > 1 && stack.isItemDamaged() ) )
{ {
currentToolTip.add( "\u00a77Items Stored: " + NumberFormat.getNumberInstance( Locale.US ).format( stack.stackSize ) ); final String local = ButtonToolTips.ItemsStored.getLocal();
final String formattedAmount = NumberFormat.getNumberInstance( Locale.US ).format( stack.stackSize );
final String format = String.format( local, formattedAmount );
currentToolTip.add( "\u00a77" + format );
} }
} }
} }
@@ -30,7 +30,7 @@ public class GuiMEPortableCell extends GuiMEMonitorable
public GuiMEPortableCell( InventoryPlayer inventoryPlayer, IPortableCell te ) public GuiMEPortableCell( InventoryPlayer inventoryPlayer, IPortableCell te )
{ {
super( inventoryPlayer, te, new ContainerMEPortableCell( inventoryPlayer, null ) ); super( inventoryPlayer, te, new ContainerMEPortableCell( inventoryPlayer, te ) );
} }
int defaultGetMaxRows() int defaultGetMaxRows()
@@ -62,7 +62,7 @@ public class GuiVibrationChamber extends AEBaseGui
int k = 25; int k = 25;
int l = -15; int l = -15;
this.pb.setFullMsg( this.cvc.aePerTick * this.cvc.getCurrentProgress() / 100 + " ae/t" ); this.pb.setFullMsg( this.cvc.aePerTick * this.cvc.getCurrentProgress() / 100 + " AE/t" );
if( this.cvc.getCurrentProgress() > 0 ) if( this.cvc.getCurrentProgress() > 0 )
{ {
@@ -28,10 +28,10 @@ import appeng.util.ItemSorters;
public class ClientDCInternalInv implements Comparable<ClientDCInternalInv> public class ClientDCInternalInv implements Comparable<ClientDCInternalInv>
{ {
final public String unlocalizedName; public final String unlocalizedName;
final public AppEngInternalInventory inv; public final AppEngInternalInventory inv;
final public long id; public final long id;
final public long sortBy; public final long sortBy;
public ClientDCInternalInv( int size, long id, long sortBy, String unlocalizedName ) public ClientDCInternalInv( int size, long id, long sortBy, String unlocalizedName )
{ {
+5 -5
View File
@@ -49,11 +49,11 @@ import appeng.util.prioitylist.IPartitionList;
public class ItemRepo public class ItemRepo
{ {
final private IItemList<IAEItemStack> list = AEApi.instance().storage().createItemList(); private final IItemList<IAEItemStack> list = AEApi.instance().storage().createItemList();
final private ArrayList<IAEItemStack> view = new ArrayList<IAEItemStack>(); private final ArrayList<IAEItemStack> view = new ArrayList<IAEItemStack>();
final private ArrayList<ItemStack> dsp = new ArrayList<ItemStack>(); private final ArrayList<ItemStack> dsp = new ArrayList<ItemStack>();
final private IScrollSource src; private final IScrollSource src;
final private ISortSource sortSrc; private final ISortSource sortSrc;
public int rowSize = 9; public int rowSize = 9;
@@ -29,6 +29,7 @@ import net.minecraft.item.ItemStack;
import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEItemStack;
import appeng.core.AEConfig; import appeng.core.AEConfig;
import appeng.core.localization.GuiText;
import appeng.util.ReadableNumberConverter; import appeng.util.ReadableNumberConverter;
@@ -75,7 +76,7 @@ public class AppEngRenderItem extends RenderItem
if( is.stackSize == 0 ) if( is.stackSize == 0 )
{ {
String craftLabelText = AEConfig.instance.useTerminalUseLargeFont() ? "+" : "Craft"; String craftLabelText = AEConfig.instance.useTerminalUseLargeFont() ? GuiText.LargeFontCraft.getLocal() : GuiText.SmallFontCraft.getLocal();
GL11.glDisable( GL11.GL_LIGHTING ); GL11.glDisable( GL11.GL_LIGHTING );
GL11.glDisable( GL11.GL_DEPTH_TEST ); GL11.glDisable( GL11.GL_DEPTH_TEST );
GL11.glPushMatrix(); GL11.glPushMatrix();
@@ -128,7 +129,7 @@ public class AppEngRenderItem extends RenderItem
} }
else else
{ {
return NUMBER_CONVERTER.toHumanReadableForm( originalSize ); return NUMBER_CONVERTER.toLongHumanReadableForm( originalSize );
} }
} }
} }
@@ -77,7 +77,7 @@ public class BaseBlockRender
setOriMap(); setOriMap();
} }
static public void setOriMap() public static void setOriMap()
{ {
// pointed up... // pointed up...
ORIENTATION_MAP[0][3][1] = 0; ORIENTATION_MAP[0][3][1] = 0;
@@ -309,7 +309,7 @@ public class BaseBlockRender
renderer.uvRotateBottom = renderer.uvRotateEast = renderer.uvRotateNorth = renderer.uvRotateSouth = renderer.uvRotateTop = renderer.uvRotateWest = 0; renderer.uvRotateBottom = renderer.uvRotateEast = renderer.uvRotateNorth = renderer.uvRotateSouth = renderer.uvRotateTop = renderer.uvRotateWest = 0;
} }
static public int getOrientation( ForgeDirection in, ForgeDirection forward, ForgeDirection up ) public static int getOrientation( ForgeDirection in, ForgeDirection forward, ForgeDirection up )
{ {
if( in == null || in == ForgeDirection.UNKNOWN // 1 if( in == null || in == ForgeDirection.UNKNOWN // 1
|| forward == null || forward == ForgeDirection.UNKNOWN // 2 || forward == null || forward == ForgeDirection.UNKNOWN // 2
@@ -29,7 +29,7 @@ import appeng.client.texture.TmpFlippableIcon;
public class BlockRenderInfo public class BlockRenderInfo
{ {
final public BaseBlockRender rendererInstance; public final BaseBlockRender rendererInstance;
private final TmpFlippableIcon tmpTopIcon = new TmpFlippableIcon(); private final TmpFlippableIcon tmpTopIcon = new TmpFlippableIcon();
private final TmpFlippableIcon tmpBottomIcon = new TmpFlippableIcon(); private final TmpFlippableIcon tmpBottomIcon = new TmpFlippableIcon();
private final TmpFlippableIcon tmpSouthIcon = new TmpFlippableIcon(); private final TmpFlippableIcon tmpSouthIcon = new TmpFlippableIcon();
@@ -40,7 +40,7 @@ import appeng.util.Platform;
public class TESRWrapper extends TileEntitySpecialRenderer public class TESRWrapper extends TileEntitySpecialRenderer
{ {
final public RenderBlocks renderBlocksInstance = new RenderBlocks(); public final RenderBlocks renderBlocksInstance = new RenderBlocks();
final BaseBlockRender blkRender; final BaseBlockRender blkRender;
final double MAX_DISTANCE; final double MAX_DISTANCE;
@@ -52,7 +52,7 @@ public class TESRWrapper extends TileEntitySpecialRenderer
} }
@Override @Override
final public void renderTileEntityAt( TileEntity te, double x, double y, double z, float f ) public final void renderTileEntityAt( TileEntity te, double x, double y, double z, float f )
{ {
if( te instanceof AEBaseTile ) if( te instanceof AEBaseTile )
{ {
@@ -36,18 +36,24 @@ import net.minecraft.world.IBlockAccess;
import net.minecraftforge.client.IItemRenderer.ItemRenderType; import net.minecraftforge.client.IItemRenderer.ItemRenderType;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import appeng.api.features.IInscriberRecipe;
import appeng.api.util.IOrientable; import appeng.api.util.IOrientable;
import appeng.block.AEBaseBlock; import appeng.block.AEBaseBlock;
import appeng.block.misc.BlockInscriber; import appeng.block.misc.BlockInscriber;
import appeng.client.render.BaseBlockRender; import appeng.client.render.BaseBlockRender;
import appeng.client.texture.ExtraBlockTextures; import appeng.client.texture.ExtraBlockTextures;
import appeng.core.AELog; import appeng.core.AELog;
import appeng.recipes.handlers.Inscribe.InscriberRecipe;
import appeng.tile.AEBaseTile; import appeng.tile.AEBaseTile;
import appeng.tile.misc.TileInscriber; import appeng.tile.misc.TileInscriber;
import appeng.util.Platform; import appeng.util.Platform;
/**
* @author AlgorithmX2
* @author thatsIch
* @version rv2
* @since rv0
*/
public class RenderBlockInscriber extends BaseBlockRender public class RenderBlockInscriber extends BaseBlockRender
{ {
@@ -225,9 +231,9 @@ public class RenderBlockInscriber extends BaseBlockRender
if( is == null ) if( is == null )
{ {
InscriberRecipe ir = inv.getTask(); IInscriberRecipe ir = inv.getTask();
if( ir != null ) if( ir != null )
is = ir.output.copy(); is = ir.getOutput().copy();
} }
this.renderItem( is, 0.0f, block, tile, tess, x, y, z, f, renderer ); this.renderItem( is, 0.0f, block, tile, tess, x, y, z, f, renderer );
@@ -75,7 +75,7 @@ public enum CableBusTextures
PartWirelessSides( "PartWirelessSides" ), PartStorageSides( "PartStorageSides" ), PartStorageBack( "PartStorageBack" ); PartWirelessSides( "PartWirelessSides" ), PartStorageSides( "PartStorageSides" ), PartStorageBack( "PartStorageBack" );
final private String name; private final String name;
public IIcon IIcon; public IIcon IIcon;
CableBusTextures( String name ) CableBusTextures( String name )
@@ -88,7 +88,7 @@ public enum ExtraBlockTextures
BlockPaint2( "BlockPaint2" ), BlockPaint3( "BlockPaint3" ); BlockPaint2( "BlockPaint2" ), BlockPaint3( "BlockPaint3" );
final private String name; private final String name;
public IIcon IIcon; public IIcon IIcon;
ExtraBlockTextures( String name ) ExtraBlockTextures( String name )
@@ -38,7 +38,7 @@ public enum ExtraItemTextures
ToolColorApplicatorTip_Light( "ToolColorApplicatorTip_Light" ); ToolColorApplicatorTip_Light( "ToolColorApplicatorTip_Light" );
final private String name; private final String name;
public IIcon IIcon; public IIcon IIcon;
ExtraItemTextures( String name ) ExtraItemTextures( String name )
@@ -86,7 +86,7 @@ public abstract class AEBaseContainer extends Container
{ {
protected final InventoryPlayer invPlayer; protected final InventoryPlayer invPlayer;
final protected BaseActionSource mySrc; protected final BaseActionSource mySrc;
protected final HashSet<Integer> locked = new HashSet<Integer>(); protected final HashSet<Integer> locked = new HashSet<Integer>();
final TileEntity tileEntity; final TileEntity tileEntity;
final IPart part; final IPart part;
@@ -327,7 +327,7 @@ public abstract class AEBaseContainer extends Container
return this.tileEntity; return this.tileEntity;
} }
final public void updateFullProgressBar( int idx, long value ) public final void updateFullProgressBar( int idx, long value )
{ {
if( this.syncData.containsKey( idx ) ) if( this.syncData.containsKey( idx ) )
{ {
@@ -348,14 +348,7 @@ public abstract class AEBaseContainer extends Container
protected void bindPlayerInventory( InventoryPlayer inventoryPlayer, int offset_x, int offset_y ) protected void bindPlayerInventory( InventoryPlayer inventoryPlayer, int offset_x, int offset_y )
{ {
for( int i = 0; i < 9; i++ ) // bind player inventory
{
if( this.locked.contains( i ) )
this.addSlotToContainer( new SlotDisabled( inventoryPlayer, i, 8 + i * 18 + offset_x, 58 + offset_y ) );
else
this.addSlotToContainer( new SlotPlayerHotBar( inventoryPlayer, i, 8 + i * 18 + offset_x, 58 + offset_y ) );
}
for( int i = 0; i < 3; i++ ) for( int i = 0; i < 3; i++ )
{ {
for( int j = 0; j < 9; j++ ) for( int j = 0; j < 9; j++ )
@@ -366,6 +359,15 @@ public abstract class AEBaseContainer extends Container
this.addSlotToContainer( new SlotPlayerInv( inventoryPlayer, j + i * 9 + 9, 8 + j * 18 + offset_x, offset_y + i * 18 ) ); this.addSlotToContainer( new SlotPlayerInv( inventoryPlayer, j + i * 9 + 9, 8 + j * 18 + offset_x, offset_y + i * 18 ) );
} }
} }
// bind player hotbar
for( int i = 0; i < 9; i++ )
{
if( this.locked.contains( i ) )
this.addSlotToContainer( new SlotDisabled( inventoryPlayer, i, 8 + i * 18 + offset_x, 58 + offset_y ) );
else
this.addSlotToContainer( new SlotPlayerHotBar( inventoryPlayer, i, 8 + i * 18 + offset_x, 58 + offset_y ) );
}
} }
@Override @Override
@@ -638,7 +640,7 @@ public abstract class AEBaseContainer extends Container
} }
@Override @Override
final public void updateProgressBar( int idx, int value ) public final void updateProgressBar( int idx, int value )
{ {
if( this.syncData.containsKey( idx ) ) if( this.syncData.containsKey( idx ) )
{ {
@@ -29,7 +29,7 @@ import appeng.api.parts.IPart;
public class ContainerOpenContext public class ContainerOpenContext
{ {
final public boolean isItem; public final boolean isItem;
public World w; public World w;
public int x; public int x;
public int y; public int y;
@@ -25,16 +25,21 @@ import net.minecraft.item.ItemStack;
import appeng.api.AEApi; import appeng.api.AEApi;
import appeng.api.definitions.IItemDefinition; import appeng.api.definitions.IItemDefinition;
import appeng.api.features.IInscriberRecipe;
import appeng.container.guisync.GuiSync; import appeng.container.guisync.GuiSync;
import appeng.container.interfaces.IProgressProvider; import appeng.container.interfaces.IProgressProvider;
import appeng.container.slot.SlotOutput; import appeng.container.slot.SlotOutput;
import appeng.container.slot.SlotRestrictedInput; import appeng.container.slot.SlotRestrictedInput;
import appeng.recipes.handlers.Inscribe;
import appeng.recipes.handlers.Inscribe.InscriberRecipe;
import appeng.tile.misc.TileInscriber; import appeng.tile.misc.TileInscriber;
import appeng.util.Platform; import appeng.util.Platform;
/**
* @author AlgorithmX2
* @author thatsIch
* @version rv2
* @since rv0
*/
public class ContainerInscriber extends ContainerUpgradeable implements IProgressProvider public class ContainerInscriber extends ContainerUpgradeable implements IProgressProvider
{ {
@@ -105,32 +110,32 @@ public class ContainerInscriber extends ContainerUpgradeable implements IProgres
@Override @Override
public boolean isValidForSlot( Slot s, ItemStack is ) public boolean isValidForSlot( Slot s, ItemStack is )
{ {
ItemStack PlateA = this.ti.getStackInSlot( 0 ); ItemStack top = this.ti.getStackInSlot( 0 );
ItemStack PlateB = this.ti.getStackInSlot( 1 ); ItemStack bot = this.ti.getStackInSlot( 1 );
if( s == this.middle ) if( s == this.middle )
{ {
for( ItemStack i : Inscribe.PLATES ) for( ItemStack optional : AEApi.instance().registries().inscriber().getOptionals() )
{ {
if( Platform.isSameItemPrecise( i, is ) ) if( Platform.isSameItemPrecise( optional, is ) )
return false; return false;
} }
boolean matches = false; boolean matches = false;
boolean found = false; boolean found = false;
for( InscriberRecipe i : Inscribe.RECIPES ) for( IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes() )
{ {
boolean matchA = ( PlateA == null && i.plateA == null ) || ( Platform.isSameItemPrecise( PlateA, i.plateA ) ) && // and... boolean matchA = ( top == null && !recipe.getTopOptional().isPresent() ) || ( Platform.isSameItemPrecise( top, recipe.getTopOptional().orNull() ) ) && // and...
( PlateB == null && i.plateB == null ) | ( Platform.isSameItemPrecise( PlateB, i.plateB ) ); ( bot == null && !recipe.getBottomOptional().isPresent() ) | ( Platform.isSameItemPrecise( bot, recipe.getBottomOptional().orNull() ) );
boolean matchB = ( PlateB == null && i.plateA == null ) || ( Platform.isSameItemPrecise( PlateB, i.plateA ) ) && // and... boolean matchB = ( bot == null && !recipe.getTopOptional().isPresent() ) || ( Platform.isSameItemPrecise( bot, recipe.getTopOptional().orNull() ) ) && // and...
( PlateA == null && i.plateB == null ) | ( Platform.isSameItemPrecise( PlateA, i.plateB ) ); ( top == null && !recipe.getBottomOptional().isPresent() ) | ( Platform.isSameItemPrecise( top, recipe.getBottomOptional().orNull() ) );
if( matchA || matchB ) if( matchA || matchB )
{ {
matches = true; matches = true;
for( ItemStack option : i.imprintable ) for( ItemStack option : recipe.getInputs() )
{ {
if( Platform.isSameItemPrecise( is, option ) ) if( Platform.isSameItemPrecise( is, option ) )
found = true; found = true;
@@ -142,7 +147,7 @@ public class ContainerInscriber extends ContainerUpgradeable implements IProgres
return false; return false;
} }
if( ( s == this.top && PlateB != null ) || ( s == this.bottom && PlateA != null ) ) if( ( s == this.top && bot != null ) || ( s == this.bottom && top != null ) )
{ {
boolean isValid = false; boolean isValid = false;
ItemStack otherSlot = null; ItemStack otherSlot = null;
@@ -159,15 +164,15 @@ public class ContainerInscriber extends ContainerUpgradeable implements IProgres
} }
// everything else // everything else
for( InscriberRecipe i : Inscribe.RECIPES ) for( IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes() )
{ {
if( Platform.isSameItemPrecise( i.plateA, otherSlot ) ) if( Platform.isSameItemPrecise( recipe.getTopOptional().orNull(), otherSlot ) )
{ {
isValid = Platform.isSameItemPrecise( is, i.plateB ); isValid = Platform.isSameItemPrecise( is, recipe.getBottomOptional().orNull() );
} }
else if( Platform.isSameItemPrecise( i.plateB, otherSlot ) ) else if( Platform.isSameItemPrecise( recipe.getBottomOptional().orNull(), otherSlot ) )
{ {
isValid = Platform.isSameItemPrecise( is, i.plateA ); isValid = Platform.isSameItemPrecise( is, recipe.getTopOptional().orNull() );
} }
if( isValid ) if( isValid )
@@ -54,17 +54,17 @@ import appeng.util.inv.AdaptorPlayerHand;
import appeng.util.inv.WrapperInvSlot; import appeng.util.inv.WrapperInvSlot;
public class ContainerInterfaceTerminal extends AEBaseContainer public final class ContainerInterfaceTerminal extends AEBaseContainer
{ {
/** /**
* this stuff is all server side.. * this stuff is all server side..
*/ */
static private long autoBase = Long.MIN_VALUE; private static long autoBase = Long.MIN_VALUE;
final Map<IInterfaceHost, InvTracker> diList = new HashMap<IInterfaceHost, InvTracker>(); final Map<IInterfaceHost, InvTracker> diList = new HashMap<IInterfaceHost, InvTracker>();
final Map<Long, InvTracker> byId = new HashMap<Long, InvTracker>(); final Map<Long, InvTracker> byId = new HashMap<Long, InvTracker>();
IGrid g; IGrid grid;
NBTTagCompound data = new NBTTagCompound(); NBTTagCompound data = new NBTTagCompound();
public ContainerInterfaceTerminal( InventoryPlayer ip, PartMonitor anchor ) public ContainerInterfaceTerminal( InventoryPlayer ip, PartMonitor anchor )
@@ -72,7 +72,7 @@ public class ContainerInterfaceTerminal extends AEBaseContainer
super( ip, anchor ); super( ip, anchor );
if( Platform.isServer() ) if( Platform.isServer() )
this.g = anchor.getActionableNode().getGrid(); this.grid = anchor.getActionableNode().getGrid();
this.bindPlayerInventory( ip, 0, 222 - /* height of player inventory */82 ); this.bindPlayerInventory( ip, 0, 222 - /* height of player inventory */82 );
} }
@@ -85,7 +85,7 @@ public class ContainerInterfaceTerminal extends AEBaseContainer
super.detectAndSendChanges(); super.detectAndSendChanges();
if( this.g == null ) if( this.grid == null )
return; return;
int total = 0; int total = 0;
@@ -97,7 +97,7 @@ public class ContainerInterfaceTerminal extends AEBaseContainer
IGridNode agn = host.getActionableNode(); IGridNode agn = host.getActionableNode();
if( agn != null && agn.isActive() ) if( agn != null && agn.isActive() )
{ {
for( IGridNode gn : this.g.getMachines( TileInterface.class ) ) for( IGridNode gn : this.grid.getMachines( TileInterface.class ) )
{ {
if( gn.isActive() ) if( gn.isActive() )
{ {
@@ -120,7 +120,7 @@ public class ContainerInterfaceTerminal extends AEBaseContainer
} }
} }
for( IGridNode gn : this.g.getMachines( PartInterface.class ) ) for( IGridNode gn : this.grid.getMachines( PartInterface.class ) )
{ {
if( gn.isActive() ) if( gn.isActive() )
{ {
@@ -289,7 +289,7 @@ public class ContainerInterfaceTerminal extends AEBaseContainer
IGridNode agn = host.getActionableNode(); IGridNode agn = host.getActionableNode();
if( agn != null && agn.isActive() ) if( agn != null && agn.isActive() )
{ {
for( IGridNode gn : this.g.getMachines( TileInterface.class ) ) for( IGridNode gn : this.grid.getMachines( TileInterface.class ) )
{ {
IInterfaceHost ih = (IInterfaceHost) gn.getMachine(); IInterfaceHost ih = (IInterfaceHost) gn.getMachine();
DualityInterface dual = ih.getInterfaceDuality(); DualityInterface dual = ih.getInterfaceDuality();
@@ -297,7 +297,7 @@ public class ContainerInterfaceTerminal extends AEBaseContainer
this.diList.put( ih, new InvTracker( dual, dual.getPatterns(), dual.getTermName() ) ); this.diList.put( ih, new InvTracker( dual, dual.getPatterns(), dual.getTermName() ) );
} }
for( IGridNode gn : this.g.getMachines( PartInterface.class ) ) for( IGridNode gn : this.grid.getMachines( PartInterface.class ) )
{ {
IInterfaceHost ih = (IInterfaceHost) gn.getMachine(); IInterfaceHost ih = (IInterfaceHost) gn.getMachine();
DualityInterface dual = ih.getInterfaceDuality(); DualityInterface dual = ih.getInterfaceDuality();
@@ -25,20 +25,33 @@ import net.minecraft.item.ItemStack;
import appeng.api.config.Actionable; import appeng.api.config.Actionable;
import appeng.api.config.PowerMultiplier; import appeng.api.config.PowerMultiplier;
import appeng.api.implementations.guiobjects.IPortableCell; import appeng.api.implementations.guiobjects.IPortableCell;
import appeng.container.interfaces.IInventorySlotAware;
import appeng.util.Platform; import appeng.util.Platform;
public class ContainerMEPortableCell extends ContainerMEMonitorable public class ContainerMEPortableCell extends ContainerMEMonitorable
{ {
final IPortableCell civ; public double powerMultiplier = 0.5;
double powerMultiplier = 0.5;
int ticks = 0; private final IPortableCell civ;
private int ticks = 0;
private final int slot;
public ContainerMEPortableCell( InventoryPlayer ip, IPortableCell monitorable ) public ContainerMEPortableCell( InventoryPlayer ip, IPortableCell monitorable )
{ {
super( ip, monitorable, false ); super( ip, monitorable, false );
this.lockPlayerInventorySlot( ip.currentItem ); if( monitorable instanceof IInventorySlotAware )
{
int slotIndex = ( (IInventorySlotAware) monitorable ).getInventorySlot();
this.lockPlayerInventorySlot( slotIndex );
this.slot = slotIndex;
}
else
{
this.slot = -1;
this.lockPlayerInventorySlot( ip.currentItem );
}
this.civ = monitorable; this.civ = monitorable;
this.bindPlayerInventory( ip, 0, 0 ); this.bindPlayerInventory( ip, 0, 0 );
} }
@@ -46,7 +59,7 @@ public class ContainerMEPortableCell extends ContainerMEMonitorable
@Override @Override
public void detectAndSendChanges() public void detectAndSendChanges()
{ {
ItemStack currentItem = this.getPlayerInv().getCurrentItem(); ItemStack currentItem = slot < 0 ? this.getPlayerInv().getCurrentItem() : this.getPlayerInv().getStackInSlot( slot );
if( this.civ != null ) if( this.civ != null )
{ {
@@ -0,0 +1,37 @@
/*
* 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.container.interfaces;
/**
* Any item providing a GUI and depending on an exact inventory slot.
*
* This interface is likely a volatile one until a general GUI refactoring occurred.
* Use it with care and expect changes.
*
*/
public interface IInventorySlotAware
{
/**
* This is needed to select the correct slot index.
*
* @return the inventory index of this portable cell.
*/
int getInventorySlot();
}
@@ -42,10 +42,15 @@ import appeng.api.implementations.items.IUpgradeModule;
import appeng.api.networking.crafting.ICraftingPatternDetails; import appeng.api.networking.crafting.ICraftingPatternDetails;
import appeng.api.storage.ICellWorkbenchItem; import appeng.api.storage.ICellWorkbenchItem;
import appeng.items.misc.ItemEncodedPattern; import appeng.items.misc.ItemEncodedPattern;
import appeng.recipes.handlers.Inscribe;
import appeng.util.Platform; import appeng.util.Platform;
/**
* @author AlgorithmX2
* @author thatsIch
* @version rv2
* @since rv0
*/
public class SlotRestrictedInput extends AppEngSlot public class SlotRestrictedInput extends AppEngSlot
{ {
@@ -144,8 +149,8 @@ public class SlotRestrictedInput extends AppEngSlot
return true; return true;
} }
for( ItemStack is : Inscribe.PLATES ) for( ItemStack optional : AEApi.instance().registries().inscriber().getOptionals() )
if( Platform.isSameItemPrecise( is, i ) ) if( Platform.isSameItemPrecise( optional, i ) )
return true; return true;
return false; return false;
@@ -224,7 +229,7 @@ public class SlotRestrictedInput extends AppEngSlot
return super.getStack(); return super.getStack();
} }
static public boolean isMetalIngot( ItemStack i ) public static boolean isMetalIngot( ItemStack i )
{ {
if( Platform.isSameItemPrecise( i, new ItemStack( Items.iron_ingot ) ) ) if( Platform.isSameItemPrecise( i, new ItemStack( Items.iron_ingot ) ) )
return true; return true;
+2 -2
View File
@@ -55,7 +55,7 @@ public class AEConfig extends Configuration implements IConfigurableObject, ICon
public static final double TUNNEL_POWER_LOSS = 0.05; public static final double TUNNEL_POWER_LOSS = 0.05;
public static final String VERSION = "@version@"; public static final String VERSION = "@version@";
public static final String CHANNEL = "@aechannel@"; public static final String CHANNEL = "@aechannel@";
public final static String PACKET_CHANNEL = "AE"; public static final String PACKET_CHANNEL = "AE";
public static AEConfig instance; public static AEConfig instance;
public final IConfigManager settings = new ConfigManager( this ); public final IConfigManager settings = new ConfigManager( this );
public final EnumSet<AEFeature> featureFlags = EnumSet.noneOf( AEFeature.class ); public final EnumSet<AEFeature> featureFlags = EnumSet.noneOf( AEFeature.class );
@@ -63,7 +63,7 @@ public class AEConfig extends Configuration implements IConfigurableObject, ICon
public final int[] priorityByStacks = new int[] { 1, 10, 100, 1000 }; public final int[] priorityByStacks = new int[] { 1, 10, 100, 1000 };
public final int[] levelByStacks = new int[] { 1, 10, 100, 1000 }; public final int[] levelByStacks = new int[] { 1, 10, 100, 1000 };
private final double WirelessHighWirelessCount = 64; private final double WirelessHighWirelessCount = 64;
final private File configFile; private final File configFile;
public int storageBiomeID = -1; public int storageBiomeID = -1;
public int storageProviderID = -1; public int storageProviderID = -1;
public int formationPlaneEntityLimit = 128; public int formationPlaneEntityLimit = 128;
+3 -3
View File
@@ -55,9 +55,9 @@ import appeng.util.Platform;
@Mod( modid = AppEng.MOD_ID, acceptedMinecraftVersions = "[1.7.10]", name = AppEng.MOD_NAME, version = AEConfig.VERSION, dependencies = AppEng.MOD_DEPENDENCIES, guiFactory = "appeng.client.gui.config.AEConfigGuiFactory" ) @Mod( modid = AppEng.MOD_ID, acceptedMinecraftVersions = "[1.7.10]", name = AppEng.MOD_NAME, version = AEConfig.VERSION, dependencies = AppEng.MOD_DEPENDENCIES, guiFactory = "appeng.client.gui.config.AEConfigGuiFactory" )
public class AppEng public class AppEng
{ {
public final static String MOD_ID = "appliedenergistics2"; public static final String MOD_ID = "appliedenergistics2";
public final static String MOD_NAME = "Applied Energistics 2"; public static final String MOD_NAME = "Applied Energistics 2";
public final static String MOD_DEPENDENCIES = public static final String MOD_DEPENDENCIES =
// a few mods, AE should load after, probably. // a few mods, AE should load after, probably.
// required-after:AppliedEnergistics2API|all; // required-after:AppliedEnergistics2API|all;
// "after:gregtech_addon;after:Mekanism;after:IC2;after:ThermalExpansion;after:BuildCraft|Core;" + // "after:gregtech_addon;after:Mekanism;after:IC2;after:ThermalExpansion;after:BuildCraft|Core;" +
@@ -19,7 +19,7 @@
package appeng.core; package appeng.core;
import java.util.HashSet; import java.util.LinkedHashSet;
import java.util.Set; import java.util.Set;
import appeng.core.features.IFeatureHandler; import appeng.core.features.IFeatureHandler;
@@ -27,7 +27,7 @@ import appeng.core.features.IFeatureHandler;
public final class FeatureHandlerRegistry public final class FeatureHandlerRegistry
{ {
private final Set<IFeatureHandler> registry = new HashSet<IFeatureHandler>(); private final Set<IFeatureHandler> registry = new LinkedHashSet<IFeatureHandler>();
public void addFeatureHandler( IFeatureHandler feature ) public void addFeatureHandler( IFeatureHandler feature )
{ {
@@ -19,7 +19,7 @@
package appeng.core; package appeng.core;
import java.util.HashSet; import java.util.LinkedHashSet;
import java.util.Set; import java.util.Set;
import appeng.core.features.IAEFeature; import appeng.core.features.IAEFeature;
@@ -27,7 +27,7 @@ import appeng.core.features.IAEFeature;
public final class FeatureRegistry public final class FeatureRegistry
{ {
private final Set<IAEFeature> registry = new HashSet<IAEFeature>(); private final Set<IAEFeature> registry = new LinkedHashSet<IAEFeature>();
public void addFeature( IAEFeature feature ) public void addFeature( IAEFeature feature )
{ {
+1 -1
View File
@@ -121,7 +121,7 @@ import appeng.worldgen.QuartzWorldGen;
public final class Registration public final class Registration
{ {
final public static Registration INSTANCE = new Registration(); public static final Registration INSTANCE = new Registration();
private final RecipeHandler recipeHandler; private final RecipeHandler recipeHandler;
private final DefinitionConverter converter; private final DefinitionConverter converter;
@@ -31,7 +31,7 @@ import appeng.core.AELog;
public class GridCacheRegistry implements IGridCacheRegistry public class GridCacheRegistry implements IGridCacheRegistry
{ {
final private HashMap<Class<? extends IGridCache>, Class<? extends IGridCache>> caches = new HashMap<Class<? extends IGridCache>, Class<? extends IGridCache>>(); private final HashMap<Class<? extends IGridCache>, Class<? extends IGridCache>> caches = new HashMap<Class<? extends IGridCache>, Class<? extends IGridCache>>();
@Override @Override
public void registerGridCache( Class<? extends IGridCache> iface, Class<? extends IGridCache> implementation ) public void registerGridCache( Class<? extends IGridCache> iface, Class<? extends IGridCache> implementation )
@@ -0,0 +1,170 @@
package appeng.core.features.registries;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import javax.annotation.Nonnull;
import net.minecraft.item.ItemStack;
import appeng.api.features.IInscriberRecipe;
import appeng.api.features.IInscriberRecipeBuilder;
import appeng.api.features.IInscriberRegistry;
import appeng.api.features.InscriberProcessType;
import appeng.core.features.registries.entries.InscriberRecipe;
/**
* @author thatsIch
* @version rv2
* @since rv2
*/
public final class InscriberRegistry implements IInscriberRegistry
{
private final List<IInscriberRecipe> recipes;
private final Set<ItemStack> optionals;
private final Set<ItemStack> inputs;
public InscriberRegistry()
{
this.inputs = new HashSet<ItemStack>();
this.optionals = new HashSet<ItemStack>();
this.recipes = new ArrayList<IInscriberRecipe>();
}
@Nonnull
@Override
public List<IInscriberRecipe> getRecipes()
{
return this.recipes;
}
@Nonnull
@Override
public Set<ItemStack> getOptionals()
{
return this.optionals;
}
@Nonnull
@Override
public Set<ItemStack> getInputs()
{
return this.inputs;
}
@Nonnull
@Override
public IInscriberRecipeBuilder builder()
{
return new Builder();
}
@Override
public void addRecipe( IInscriberRecipe recipe )
{
if( recipe == null )
throw new IllegalArgumentException( "Tried to add an invalid (null) inscriber recipe to the registry." );
this.recipes.add( recipe );
this.optionals.addAll( recipe.getTopOptional().asSet() );
this.optionals.addAll( recipe.getBottomOptional().asSet() );
this.inputs.addAll( recipe.getInputs() );
}
@Override
public void removeRecipe( IInscriberRecipe toBeRemovedRecipe )
{
for( final Iterator<IInscriberRecipe> iterator = this.recipes.iterator(); iterator.hasNext(); )
{
final IInscriberRecipe recipe = iterator.next();
if( recipe.equals( toBeRemovedRecipe ) )
{
iterator.remove();
}
}
}
/**
* Internal {@link IInscriberRecipeBuilder} implementation.
* Needs to be adapted to represent a correct {@link IInscriberRecipe}
*/
private static final class Builder implements IInscriberRecipeBuilder
{
private List<ItemStack> inputs;
private ItemStack output;
private ItemStack topOptional;
private ItemStack bottomOptional;
private InscriberProcessType type;
@Nonnull
@Override
public Builder withInputs( @Nonnull Collection<ItemStack> inputs )
{
this.inputs = new ArrayList<ItemStack>( inputs.size() );
this.inputs.addAll( inputs );
return this;
}
@Nonnull
@Override
public Builder withOutput( @Nonnull ItemStack output )
{
this.output = output;
return this;
}
@Nonnull
@Override
public Builder withTopOptional( @Nonnull ItemStack topOptional )
{
this.topOptional = topOptional;
return this;
}
@Nonnull
@Override
public Builder withBottomOptional( @Nonnull ItemStack bottomOptional )
{
this.bottomOptional = bottomOptional;
return this;
}
@Nonnull
@Override
public Builder withProcessType( @Nonnull InscriberProcessType type )
{
this.type = type;
return this;
}
@Nonnull
@Override
public IInscriberRecipe build()
{
if( this.inputs == null )
throw new IllegalStateException( "Input must be defined." );
if( this.inputs.size() == 0 )
throw new IllegalStateException( "Input must have a size." );
if( this.output == null )
throw new IllegalStateException( "Output must be defined." );
if ( this.topOptional == null && this.bottomOptional == null )
throw new IllegalStateException( "One optional must be defined." );
if ( this.type == null )
throw new IllegalStateException( "Process type must be defined." );
return new InscriberRecipe( this.inputs, this.output, this.topOptional, this.bottomOptional, this.type );
}
}
}
@@ -20,6 +20,7 @@ package appeng.core.features.registries;
import appeng.api.features.IGrinderRegistry; import appeng.api.features.IGrinderRegistry;
import appeng.api.features.IInscriberRegistry;
import appeng.api.features.ILocatableRegistry; import appeng.api.features.ILocatableRegistry;
import appeng.api.features.IMatterCannonAmmoRegistry; import appeng.api.features.IMatterCannonAmmoRegistry;
import appeng.api.features.IP2PTunnelRegistry; import appeng.api.features.IP2PTunnelRegistry;
@@ -35,74 +36,88 @@ import appeng.api.storage.ICellRegistry;
import appeng.api.storage.IExternalStorageRegistry; import appeng.api.storage.IExternalStorageRegistry;
/**
* represents all registries
*
* @author AlgorithmX2
* @author thatsIch
* @version rv2
* @since rv0
*/
public class RegistryContainer implements IRegistryContainer public class RegistryContainer implements IRegistryContainer
{ {
private final IGrinderRegistry grinder = new GrinderRecipeManager();
private final GrinderRecipeManager GrinderRecipes = new GrinderRecipeManager(); private final IInscriberRegistry inscriber = new InscriberRegistry();
private final ExternalStorageRegistry ExternalStorageHandlers = new ExternalStorageRegistry(); private final IExternalStorageRegistry storage = new ExternalStorageRegistry();
private final CellRegistry CellRegistry = new CellRegistry(); private final ICellRegistry cell = new CellRegistry();
private final LocatableRegistry LocatableRegistry = new LocatableRegistry(); private final ILocatableRegistry locatable = new LocatableRegistry();
private final SpecialComparisonRegistry SpecialComparisonRegistry = new SpecialComparisonRegistry(); private final ISpecialComparisonRegistry comparison = new SpecialComparisonRegistry();
private final WirelessRegistry WirelessRegistry = new WirelessRegistry(); private final IWirelessTermRegistry wireless = new WirelessRegistry();
private final GridCacheRegistry GridCacheRegistry = new GridCacheRegistry(); private final IGridCacheRegistry gridCache = new GridCacheRegistry();
private final P2PTunnelRegistry P2PRegistry = new P2PTunnelRegistry(); private final IP2PTunnelRegistry p2ptunnel = new P2PTunnelRegistry();
private final MovableTileRegistry MovableReg = new MovableTileRegistry(); private final IMovableRegistry movable = new MovableTileRegistry();
private final MatterCannonAmmoRegistry matterCannonReg = new MatterCannonAmmoRegistry(); private final IMatterCannonAmmoRegistry matterCannonReg = new MatterCannonAmmoRegistry();
private final PlayerRegistry playerRegistry = new PlayerRegistry(); private final IPlayerRegistry playerRegistry = new PlayerRegistry();
private final IRecipeHandlerRegistry recipeReg = new RecipeHandlerRegistry(); private final IRecipeHandlerRegistry recipeReg = new RecipeHandlerRegistry();
@Override @Override
public IMovableRegistry movable() public IMovableRegistry movable()
{ {
return this.MovableReg; return this.movable;
} }
@Override @Override
public IGridCacheRegistry gridCache() public IGridCacheRegistry gridCache()
{ {
return this.GridCacheRegistry; return this.gridCache;
} }
@Override @Override
public IExternalStorageRegistry externalStorage() public IExternalStorageRegistry externalStorage()
{ {
return this.ExternalStorageHandlers; return this.storage;
} }
@Override @Override
public ISpecialComparisonRegistry specialComparison() public ISpecialComparisonRegistry specialComparison()
{ {
return this.SpecialComparisonRegistry; return this.comparison;
} }
@Override @Override
public IWirelessTermRegistry wireless() public IWirelessTermRegistry wireless()
{ {
return this.WirelessRegistry; return this.wireless;
} }
@Override @Override
public ICellRegistry cell() public ICellRegistry cell()
{ {
return this.CellRegistry; return this.cell;
} }
@Override @Override
public IGrinderRegistry grinder() public IGrinderRegistry grinder()
{ {
return this.GrinderRecipes; return this.grinder;
}
@Override
public IInscriberRegistry inscriber()
{
return this.inscriber;
} }
@Override @Override
public ILocatableRegistry locatable() public ILocatableRegistry locatable()
{ {
return this.LocatableRegistry; return this.locatable;
} }
@Override @Override
public IP2PTunnelRegistry p2pTunnel() public IP2PTunnelRegistry p2pTunnel()
{ {
return this.P2PRegistry; return this.p2ptunnel;
} }
@Override @Override
@@ -25,8 +25,8 @@ import net.minecraft.tileentity.TileEntity;
public class WirelessRangeResult public class WirelessRangeResult
{ {
final public float dist; public final float dist;
final public TileEntity te; public final TileEntity te;
public WirelessRangeResult( TileEntity t, float d ) public WirelessRangeResult( TileEntity t, float d )
{ {
@@ -30,7 +30,7 @@ import appeng.api.features.IWorldGen;
public final class WorldGenRegistry implements IWorldGen public final class WorldGenRegistry implements IWorldGen
{ {
static final public WorldGenRegistry INSTANCE = new WorldGenRegistry(); public static final WorldGenRegistry INSTANCE = new WorldGenRegistry();
final TypeSet[] types; final TypeSet[] types;
private WorldGenRegistry() private WorldGenRegistry()
@@ -0,0 +1,26 @@
package appeng.core.features.registries.entries;
import java.util.Collection;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.minecraft.item.ItemStack;
import appeng.api.features.InscriberProcessType;
/**
* inscribe recipes do not use up the provided optional upon craft
*
* @author thatsIch
* @version rv2
* @since rv2
*/
public class InscriberInscribeRecipe extends InscriberRecipe
{
public InscriberInscribeRecipe( @Nonnull Collection<ItemStack> inputs, @Nonnull ItemStack output, @Nullable ItemStack top, @Nullable ItemStack bot )
{
super( inputs, output, top, bot, InscriberProcessType.Inscribe );
}
}
@@ -0,0 +1,120 @@
package appeng.core.features.registries.entries;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.minecraft.item.ItemStack;
import com.google.common.base.Optional;
import appeng.api.features.IInscriberRecipe;
import appeng.api.features.InscriberProcessType;
/**
* Basic inscriber recipe
*
* @author thatsIch
* @version rv2
* @since rv2
*/
public class InscriberRecipe implements IInscriberRecipe
{
@Nonnull
private final List<ItemStack> inputs;
@Nonnull
private final ItemStack output;
@Nonnull
private final Optional<ItemStack> maybeTop;
@Nonnull
private final Optional<ItemStack> maybeBot;
@Nonnull
private final InscriberProcessType type;
public InscriberRecipe( @Nonnull Collection<ItemStack> inputs, @Nonnull ItemStack output, @Nullable ItemStack top, @Nullable ItemStack bot, @Nonnull InscriberProcessType type )
{
this.inputs = new ArrayList<ItemStack>( inputs.size() );
this.inputs.addAll( inputs );
this.output = output;
this.maybeTop = Optional.fromNullable( top );
this.maybeBot = Optional.fromNullable( bot );
this.type = type;
}
@Nonnull
@Override
public final List<ItemStack> getInputs()
{
return this.inputs;
}
@Nonnull
@Override
public final ItemStack getOutput()
{
return this.output;
}
@Nonnull
@Override
public final Optional<ItemStack> getTopOptional()
{
return this.maybeTop;
}
@Nonnull
@Override
public final Optional<ItemStack> getBottomOptional()
{
return this.maybeBot;
}
@Nonnull
@Override
public final InscriberProcessType getProcessType()
{
return this.type;
}
@Override
public boolean equals( Object o )
{
if( this == o )
return true;
if( !(o instanceof IInscriberRecipe) )
return false;
IInscriberRecipe that = (IInscriberRecipe) o;
if( !this.inputs.equals( that.getInputs() ) )
return false;
if( !this.output.equals( that.getOutput() ) )
return false;
if( !this.maybeTop.equals( that.getTopOptional() ) )
return false;
if( !this.maybeBot.equals( that.getBottomOptional()) )
return false;
return this.type == that.getProcessType();
}
@Override
public int hashCode()
{
int result = this.inputs.hashCode();
result = 31 * result + this.output.hashCode();
result = 31 * result + this.maybeTop.hashCode();
result = 31 * result + this.maybeBot.hashCode();
result = 31 * result + this.type.hashCode();
return result;
}
}
@@ -58,7 +58,10 @@ public enum ButtonToolTips
Craft, Mod, DoesntDespawn, EmitterMode, CraftViaRedstone, EmitWhenCrafting, ReportInaccessibleItems, ReportInaccessibleItemsYes, ReportInaccessibleItemsNo, Craft, Mod, DoesntDespawn, EmitterMode, CraftViaRedstone, EmitWhenCrafting, ReportInaccessibleItems, ReportInaccessibleItemsYes, ReportInaccessibleItemsNo,
BlockPlacement, BlockPlacementYes, BlockPlacementNo; BlockPlacement, BlockPlacementYes, BlockPlacementNo,
// Used in the tooltips of the items in the terminal, when moused over
ItemsStored, ItemsRequestable;
final String root; final String root;
@@ -70,7 +70,13 @@ public enum GuiText
NoCraftingJobs, CPUs, FacadeCrafting, inWorldCraftingPresses, ChargedQuartzFind, NoCraftingJobs, CPUs, FacadeCrafting, inWorldCraftingPresses, ChargedQuartzFind,
Included, Excluded, Partitioned, Precise, Fuzzy; Included, Excluded, Partitioned, Precise, Fuzzy,
// Used in a terminal to indicate that an item is craftable
SmallFontCraft, LargeFontCraft,
// Used in a ME Interface when no appropriate TileEntity was detected near it
Nothing;
final String root; final String root;
@@ -43,7 +43,7 @@ public abstract class AppEngPacket
throw new RuntimeException( "This packet ( " + this.getPacketID() + " does not implement a server side handler." ); throw new RuntimeException( "This packet ( " + this.getPacketID() + " does not implement a server side handler." );
} }
final public int getPacketID() public final int getPacketID()
{ {
return AppEngPacketHandlerBase.PacketTypes.getID( this.getClass() ).ordinal(); return AppEngPacketHandlerBase.PacketTypes.getID( this.getClass() ).ordinal();
} }
+21 -12
View File
@@ -250,15 +250,21 @@ public enum GuiBridge implements IGuiHandler
ForgeDirection side = ForgeDirection.getOrientation( ID_ORDINAL & 0x07 ); ForgeDirection side = ForgeDirection.getOrientation( ID_ORDINAL & 0x07 );
GuiBridge ID = values()[ID_ORDINAL >> 4]; GuiBridge ID = values()[ID_ORDINAL >> 4];
boolean stem = ( ( ID_ORDINAL >> 3 ) & 1 ) == 1; boolean stem = ( ( ID_ORDINAL >> 3 ) & 1 ) == 1;
if( ID.type.isItem() )
if( ID.type.isItem() && stem )
{ {
ItemStack it = player.inventory.getCurrentItem(); ItemStack it = null;
if( stem )
{
it = player.inventory.getCurrentItem();
}
else if( x >= 0 && x < player.inventory.mainInventory.length )
{
it = player.inventory.getStackInSlot( x );
}
Object myItem = this.getGuiObject( it, player, w, x, y, z ); Object myItem = this.getGuiObject( it, player, w, x, y, z );
if( myItem != null && ID.CorrectTileOrPart( myItem ) ) if( myItem != null && ID.CorrectTileOrPart( myItem ) )
return this.updateGui( ID.ConstructContainer( player.inventory, side, myItem ), w, x, y, z, side, myItem ); return this.updateGui( ID.ConstructContainer( player.inventory, side, myItem ), w, x, y, z, side, myItem );
} }
if( ID.type.isTile() ) if( ID.type.isTile() )
{ {
TileEntity TE = w.getTileEntity( x, y, z ); TileEntity TE = w.getTileEntity( x, y, z );
@@ -275,7 +281,6 @@ public enum GuiBridge implements IGuiHandler
return this.updateGui( ID.ConstructContainer( player.inventory, side, TE ), w, x, y, z, side, TE ); return this.updateGui( ID.ConstructContainer( player.inventory, side, TE ), w, x, y, z, side, TE );
} }
} }
return new ContainerNull(); return new ContainerNull();
} }
@@ -411,19 +416,24 @@ public enum GuiBridge implements IGuiHandler
ForgeDirection side = ForgeDirection.getOrientation( ID_ORDINAL & 0x07 ); ForgeDirection side = ForgeDirection.getOrientation( ID_ORDINAL & 0x07 );
GuiBridge ID = values()[ID_ORDINAL >> 4]; GuiBridge ID = values()[ID_ORDINAL >> 4];
boolean stem = ( ( ID_ORDINAL >> 3 ) & 1 ) == 1; boolean stem = ( ( ID_ORDINAL >> 3 ) & 1 ) == 1;
if( ID.type.isItem() )
if( ID.type.isItem() && stem )
{ {
ItemStack it = player.inventory.getCurrentItem(); ItemStack it = null;
if( stem )
{
it = player.inventory.getCurrentItem();
}
else if( x >= 0 && x < player.inventory.mainInventory.length )
{
it = player.inventory.getStackInSlot( x );
}
Object myItem = this.getGuiObject( it, player, w, x, y, z ); Object myItem = this.getGuiObject( it, player, w, x, y, z );
if( ID.CorrectTileOrPart( myItem ) ) if( myItem != null && ID.CorrectTileOrPart( myItem ) )
return ID.ConstructGui( player.inventory, side, myItem ); return ID.ConstructGui( player.inventory, side, myItem );
} }
if( ID.type.isTile() ) if( ID.type.isTile() )
{ {
TileEntity TE = w.getTileEntity( x, y, z ); TileEntity TE = w.getTileEntity( x, y, z );
if( TE instanceof IPartHost ) if( TE instanceof IPartHost )
{ {
( (IPartHost) TE ).getPart( side ); ( (IPartHost) TE ).getPart( side );
@@ -437,7 +447,6 @@ public enum GuiBridge implements IGuiHandler
return ID.ConstructGui( player.inventory, side, TE ); return ID.ConstructGui( player.inventory, side, TE );
} }
} }
return new GuiNull( new ContainerNull() ); return new GuiNull( new ContainerNull() );
} }
@@ -40,11 +40,11 @@ import appeng.util.item.AEItemStack;
public class PacketAssemblerAnimation extends AppEngPacket public class PacketAssemblerAnimation extends AppEngPacket
{ {
final public int x; public final int x;
final public int y; public final int y;
final public int z; public final int z;
final public byte rate; public final byte rate;
final public IAEItemStack is; public final IAEItemStack is;
// automatic. // automatic.
public PacketAssemblerAnimation( ByteBuf stream ) throws IOException public PacketAssemblerAnimation( ByteBuf stream ) throws IOException
@@ -36,10 +36,10 @@ import appeng.services.compass.ICompassCallback;
public class PacketCompassRequest extends AppEngPacket implements ICompassCallback public class PacketCompassRequest extends AppEngPacket implements ICompassCallback
{ {
final public long attunement; public final long attunement;
final public int cx; public final int cx;
final public int cz; public final int cz;
final public int cdy; public final int cdy;
EntityPlayer talkBackTo; EntityPlayer talkBackTo;
@@ -33,10 +33,10 @@ import appeng.hooks.CompassResult;
public class PacketCompassResponse extends AppEngPacket public class PacketCompassResponse extends AppEngPacket
{ {
final public long attunement; public final long attunement;
final public int cx; public final int cx;
final public int cz; public final int cz;
final public int cdy; public final int cdy;
public CompassResult cr; public CompassResult cr;
@@ -50,8 +50,8 @@ public class PacketCompressedNBT extends AppEngPacket
// input. // input.
final NBTTagCompound in; final NBTTagCompound in;
// output... // output...
final private ByteBuf data; private final ByteBuf data;
final private GZIPOutputStream compressFrame; private final GZIPOutputStream compressFrame;
int writtenBytes = 0; int writtenBytes = 0;
boolean empty = true; boolean empty = true;
@@ -37,8 +37,8 @@ import appeng.util.Platform;
public class PacketConfigButton extends AppEngPacket public class PacketConfigButton extends AppEngPacket
{ {
final public Settings option; public final Settings option;
final public boolean rotationDirection; public final boolean rotationDirection;
// automatic. // automatic.
public PacketConfigButton( ByteBuf stream ) public PacketConfigButton( ByteBuf stream )
@@ -46,8 +46,8 @@ import appeng.util.Platform;
public class PacketCraftRequest extends AppEngPacket public class PacketCraftRequest extends AppEngPacket
{ {
final public long amount; public final long amount;
final public boolean heldShift; public final boolean heldShift;
// automatic. // automatic.
public PacketCraftRequest( ByteBuf stream ) public PacketCraftRequest( ByteBuf stream )
@@ -44,10 +44,10 @@ import appeng.util.item.AEItemStack;
public class PacketInventoryAction extends AppEngPacket public class PacketInventoryAction extends AppEngPacket
{ {
final public InventoryAction action; public final InventoryAction action;
final public int slot; public final int slot;
final public long id; public final long id;
final public IAEItemStack slotItem; public final IAEItemStack slotItem;
// automatic. // automatic.
public PacketInventoryAction( ByteBuf stream ) throws IOException public PacketInventoryAction( ByteBuf stream ) throws IOException
@@ -36,9 +36,9 @@ import appeng.core.sync.network.INetworkInfo;
public class PacketMockExplosion extends AppEngPacket public class PacketMockExplosion extends AppEngPacket
{ {
final public double x; public final double x;
final public double y; public final double y;
final public double z; public final double z;
// automatic. // automatic.
public PacketMockExplosion( ByteBuf stream ) public PacketMockExplosion( ByteBuf stream )
@@ -39,11 +39,11 @@ import appeng.util.item.AEItemStack;
public class PacketPatternSlot extends AppEngPacket public class PacketPatternSlot extends AppEngPacket
{ {
final public IAEItemStack slotItem; public final IAEItemStack slotItem;
final public IAEItemStack[] pattern = new IAEItemStack[9]; public final IAEItemStack[] pattern = new IAEItemStack[9];
final public boolean shift; public final boolean shift;
// automatic. // automatic.
public PacketPatternSlot( ByteBuf stream ) throws IOException public PacketPatternSlot( ByteBuf stream ) throws IOException
@@ -45,7 +45,7 @@ import appeng.util.Platform;
public class PacketTransitionEffect extends AppEngPacket public class PacketTransitionEffect extends AppEngPacket
{ {
final public boolean mode; public final boolean mode;
final double x; final double x;
final double y; final double y;
final double z; final double z;
@@ -59,8 +59,8 @@ import appeng.helpers.IMouseWheelItem;
public class PacketValueConfig extends AppEngPacket public class PacketValueConfig extends AppEngPacket
{ {
final public String Name; public final String Name;
final public String Value; public final String Value;
// automatic. // automatic.
public PacketValueConfig( ByteBuf stream ) throws IOException public PacketValueConfig( ByteBuf stream ) throws IOException
@@ -49,7 +49,7 @@ public class CraftingTreeProcess
final ICraftingPatternDetails details; final ICraftingPatternDetails details;
final CraftingJob job; final CraftingJob job;
final Map<CraftingTreeNode, Long> nodes = new HashMap<CraftingTreeNode, Long>(); final Map<CraftingTreeNode, Long> nodes = new HashMap<CraftingTreeNode, Long>();
final private int depth; private final int depth;
public boolean possible = true; public boolean possible = true;
World world; World world;
long crafts = 0; long crafts = 0;

Some files were not shown because too many files have changed in this diff Show More