Replaced all instances of Guava's Optional type with Java 8's Optional type, as discussed in #81. (#90)

This commit is contained in:
shartte 2016-08-24 19:06:10 +02:00 committed by Sebastian Hartte
parent c2a239a12f
commit e276aa682f
65 changed files with 306 additions and 468 deletions

View file

@ -27,8 +27,6 @@ package appeng.api.config;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import com.google.common.base.Optional;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import appeng.api.definitions.IItemDefinition; import appeng.api.definitions.IItemDefinition;
@ -70,11 +68,7 @@ public enum Upgrades
*/ */
public void registerItem( final IItemDefinition item, final int maxSupported ) public void registerItem( final IItemDefinition item, final int maxSupported )
{ {
final Optional<ItemStack> maybeStack = item.maybeStack( 1 ); item.maybeStack( 1 ).ifPresent( is -> this.registerItem( is, maxSupported ) );
for( final ItemStack stack : maybeStack.asSet() )
{
this.registerItem( stack, maxSupported );
}
} }
/** /**

View file

@ -2,7 +2,7 @@
package appeng.api.definitions; package appeng.api.definitions;
import com.google.common.base.Optional; import java.util.Optional;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;

View file

@ -26,7 +26,7 @@ package appeng.api.definitions;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import com.google.common.base.Optional; import java.util.Optional;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;

View file

@ -2,7 +2,7 @@
package appeng.api.definitions; package appeng.api.definitions;
import com.google.common.base.Optional; import java.util.Optional;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;

View file

@ -6,7 +6,7 @@ import java.util.List;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import com.google.common.base.Optional; import java.util.Optional;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;

View file

@ -68,19 +68,17 @@ public class AEBaseItemBlockChargeable extends AEBaseItemBlock implements IAEIte
{ {
final Block blockID = Block.getBlockFromItem( this ); final Block blockID = Block.getBlockFromItem( this );
final IBlockDefinition energyCell = Api.INSTANCE.definitions().blocks().energyCell(); final IBlockDefinition energyCell = Api.INSTANCE.definitions().blocks().energyCell();
for( final Block block : energyCell.maybeBlock().asSet() ) return energyCell.maybeBlock().map( block -> {
{ if( blockID == block )
if( blockID == block ) {
{ return 200000;
return 200000; }
} else
else {
{ return 8 * 200000;
return 8 * 200000; }
} }
} ).orElse( 0 );
return 0;
} }
@Override @Override

View file

@ -39,12 +39,7 @@ public class ItemCraftingStorage extends AEBaseItemBlock
@Override @Override
public ItemStack getContainerItem( final ItemStack itemStack ) public ItemStack getContainerItem( final ItemStack itemStack )
{ {
for( final ItemStack stack : AEApi.instance().definitions().blocks().craftingUnit().maybeStack( 1 ).asSet() ) return AEApi.instance().definitions().blocks().craftingUnit().maybeStack( 1 ).orElse( null );
{
return stack;
}
return null;
} }
@Override @Override

View file

@ -68,9 +68,9 @@ public class FeatureFactory
public AEColoredItemDefinition colored( IItemDefinition target, int offset ) public AEColoredItemDefinition colored( IItemDefinition target, int offset )
{ {
final ColoredItemDefinition definition = new ColoredItemDefinition(); ColoredItemDefinition definition = new ColoredItemDefinition();
for( final Item targetItem : target.maybeItem().asSet() ) target.maybeItem().ifPresent( targetItem ->
{ {
for( final AEColor color : AEColor.VALID_COLORS ) for( final AEColor color : AEColor.VALID_COLORS )
{ {
@ -78,7 +78,7 @@ public class FeatureFactory
definition.add( color, new ItemStackSrc( targetItem, offset + color.ordinal(), state ) ); definition.add( color, new ItemStackSrc( targetItem, offset + color.ordinal(), state ) );
} }
} } );
return definition; return definition;
} }

View file

@ -100,38 +100,26 @@ public class GuiCraftAmount extends AEBaseGui
if( target instanceof WirelessTerminalGuiObject ) if( target instanceof WirelessTerminalGuiObject )
{ {
for( final ItemStack wirelessTerminalStack : definitions.items().wirelessTerminal().maybeStack( 1 ).asSet() ) myIcon = definitions.items().wirelessTerminal().maybeStack( 1 ).orElse( myIcon );
{
myIcon = wirelessTerminalStack;
}
this.originalGui = GuiBridge.GUI_WIRELESS_TERM; this.originalGui = GuiBridge.GUI_WIRELESS_TERM;
} }
if( target instanceof PartTerminal ) if( target instanceof PartTerminal )
{ {
for( final ItemStack stack : parts.terminal().maybeStack( 1 ).asSet() ) myIcon = parts.terminal().maybeStack( 1 ).orElse( null );
{
myIcon = stack;
}
this.originalGui = GuiBridge.GUI_ME; this.originalGui = GuiBridge.GUI_ME;
} }
if( target instanceof PartCraftingTerminal ) if( target instanceof PartCraftingTerminal )
{ {
for( final ItemStack stack : parts.craftingTerminal().maybeStack( 1 ).asSet() ) myIcon = parts.craftingTerminal().maybeStack( 1 ).orElse( null );
{
myIcon = stack;
}
this.originalGui = GuiBridge.GUI_CRAFTING_TERMINAL; this.originalGui = GuiBridge.GUI_CRAFTING_TERMINAL;
} }
if( target instanceof PartPatternTerminal ) if( target instanceof PartPatternTerminal )
{ {
for( final ItemStack stack : parts.patternTerminal().maybeStack( 1 ).asSet() ) myIcon = parts.patternTerminal().maybeStack( 1 ).orElse( null );
{
myIcon = stack;
}
this.originalGui = GuiBridge.GUI_PATTERN_TERMINAL; this.originalGui = GuiBridge.GUI_PATTERN_TERMINAL;
} }

View file

@ -70,38 +70,29 @@ public class GuiCraftingStatus extends GuiCraftingCPU
if( target instanceof WirelessTerminalGuiObject ) if( target instanceof WirelessTerminalGuiObject )
{ {
for( final ItemStack wirelessTerminalStack : definitions.items().wirelessTerminal().maybeStack( 1 ).asSet() ) myIcon = definitions.items().wirelessTerminal().maybeStack( 1 ).orElse( null );
{
this.myIcon = wirelessTerminalStack;
}
this.originalGui = GuiBridge.GUI_WIRELESS_TERM; this.originalGui = GuiBridge.GUI_WIRELESS_TERM;
} }
if( target instanceof PartTerminal ) if( target instanceof PartTerminal )
{ {
for( final ItemStack stack : parts.terminal().maybeStack( 1 ).asSet() ) myIcon = parts.terminal().maybeStack( 1 ).orElse( null );
{
this.myIcon = stack;
}
this.originalGui = GuiBridge.GUI_ME; this.originalGui = GuiBridge.GUI_ME;
} }
if( target instanceof PartCraftingTerminal ) if( target instanceof PartCraftingTerminal )
{ {
for( final ItemStack stack : parts.craftingTerminal().maybeStack( 1 ).asSet() ) myIcon = parts.craftingTerminal().maybeStack( 1 ).orElse( null );
{
this.myIcon = stack;
}
this.originalGui = GuiBridge.GUI_CRAFTING_TERMINAL; this.originalGui = GuiBridge.GUI_CRAFTING_TERMINAL;
} }
if( target instanceof PartPatternTerminal ) if( target instanceof PartPatternTerminal )
{ {
for( final ItemStack stack : parts.patternTerminal().maybeStack( 1 ).asSet() ) myIcon = parts.patternTerminal().maybeStack( 1 ).orElse( null );
{
this.myIcon = stack;
}
this.originalGui = GuiBridge.GUI_PATTERN_TERMINAL; this.originalGui = GuiBridge.GUI_PATTERN_TERMINAL;
} }
} }

View file

@ -25,7 +25,6 @@ import org.lwjgl.input.Mouse;
import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import appeng.api.AEApi; import appeng.api.AEApi;
import appeng.api.config.FullnessMode; import appeng.api.config.FullnessMode;
@ -94,15 +93,9 @@ public class GuiIOPort extends GuiUpgradeable
final IDefinitions definitions = AEApi.instance().definitions(); final IDefinitions definitions = AEApi.instance().definitions();
for( final ItemStack cell1kStack : definitions.items().cell1k().maybeStack( 1 ).asSet() ) definitions.items().cell1k().maybeStack( 1 ).ifPresent( cell1kStack -> this.drawItem( offsetX + 66 - 8, offsetY + 17, cell1kStack ) );
{
this.drawItem( offsetX + 66 - 8, offsetY + 17, cell1kStack );
}
for( final ItemStack driveStack : definitions.blocks().drive().maybeStack( 1 ).asSet() ) definitions.blocks().drive().maybeStack( 1 ).ifPresent( driveStack -> this.drawItem( offsetX + 94 + 8, offsetY + 17, driveStack ) );
{
this.drawItem( offsetX + 94 + 8, offsetY + 17, driveStack );
}
} }
@Override @Override

View file

@ -100,58 +100,37 @@ public class GuiPriority extends AEBaseGui
if( target instanceof PartStorageBus ) if( target instanceof PartStorageBus )
{ {
for( final ItemStack storageBusStack : parts.storageBus().maybeStack( 1 ).asSet() ) myIcon = parts.storageBus().maybeStack( 1 ).orElse( myIcon );
{
myIcon = storageBusStack;
}
this.OriginalGui = GuiBridge.GUI_STORAGEBUS; this.OriginalGui = GuiBridge.GUI_STORAGEBUS;
} }
if( target instanceof PartFormationPlane ) if( target instanceof PartFormationPlane )
{ {
for( final ItemStack formationPlaneStack : parts.formationPlane().maybeStack( 1 ).asSet() ) myIcon = parts.formationPlane().maybeStack( 1 ).orElse( myIcon );
{
myIcon = formationPlaneStack;
}
this.OriginalGui = GuiBridge.GUI_FORMATION_PLANE; this.OriginalGui = GuiBridge.GUI_FORMATION_PLANE;
} }
if( target instanceof TileDrive ) if( target instanceof TileDrive )
{ {
for( final ItemStack driveStack : blocks.drive().maybeStack( 1 ).asSet() ) myIcon = blocks.drive().maybeStack( 1 ).orElse( myIcon );
{
myIcon = driveStack;
}
this.OriginalGui = GuiBridge.GUI_DRIVE; this.OriginalGui = GuiBridge.GUI_DRIVE;
} }
if( target instanceof TileChest ) if( target instanceof TileChest )
{ {
for( final ItemStack chestStack : blocks.chest().maybeStack( 1 ).asSet() ) myIcon = blocks.chest().maybeStack( 1 ).orElse( myIcon );
{
myIcon = chestStack;
}
this.OriginalGui = GuiBridge.GUI_CHEST; this.OriginalGui = GuiBridge.GUI_CHEST;
} }
if( target instanceof TileInterface ) if( target instanceof TileInterface )
{ {
for( final ItemStack interfaceStack : blocks.iface().maybeStack( 1 ).asSet() ) myIcon = blocks.iface().maybeStack( 1 ).orElse( myIcon );
{
myIcon = interfaceStack;
}
this.OriginalGui = GuiBridge.GUI_INTERFACE; this.OriginalGui = GuiBridge.GUI_INTERFACE;
} }
if( target instanceof PartInterface ) if( target instanceof PartInterface )
{ {
for( final ItemStack interfaceStack : parts.iface().maybeStack( 1 ).asSet() ) myIcon = parts.iface().maybeStack( 1 ).orElse( myIcon );
{
myIcon = interfaceStack;
}
this.OriginalGui = GuiBridge.GUI_INTERFACE; this.OriginalGui = GuiBridge.GUI_INTERFACE;
} }

View file

@ -126,11 +126,11 @@ public class ContainerInscriber extends ContainerUpgradeable implements IProgres
for( final IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes() ) for( final IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes() )
{ {
final boolean matchA = ( top == null && !recipe.getTopOptional().isPresent() ) || ( Platform.isSameItemPrecise( top, recipe.getTopOptional().orNull() ) ) && // and... final boolean matchA = ( top == null && !recipe.getTopOptional().isPresent() ) || ( Platform.isSameItemPrecise( top, recipe.getTopOptional().orElse( null ) ) ) && // and...
( bot == null && !recipe.getBottomOptional().isPresent() ) | ( Platform.isSameItemPrecise( bot, recipe.getBottomOptional().orNull() ) ); ( bot == null && !recipe.getBottomOptional().isPresent() ) | ( Platform.isSameItemPrecise( bot, recipe.getBottomOptional().orElse( null ) ) );
final boolean matchB = ( bot == null && !recipe.getTopOptional().isPresent() ) || ( Platform.isSameItemPrecise( bot, recipe.getTopOptional().orNull() ) ) && // and... final boolean matchB = ( bot == null && !recipe.getTopOptional().isPresent() ) || ( Platform.isSameItemPrecise( bot, recipe.getTopOptional().orElse( null ) ) ) && // and...
( top == null && !recipe.getBottomOptional().isPresent() ) | ( Platform.isSameItemPrecise( top, recipe.getBottomOptional().orNull() ) ); ( top == null && !recipe.getBottomOptional().isPresent() ) | ( Platform.isSameItemPrecise( top, recipe.getBottomOptional().orElse( null ) ) );
if( matchA || matchB ) if( matchA || matchB )
{ {
@ -174,13 +174,13 @@ public class ContainerInscriber extends ContainerUpgradeable implements IProgres
boolean isValid = false; boolean isValid = false;
for( final IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes() ) for( final IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes() )
{ {
if( Platform.isSameItemPrecise( recipe.getTopOptional().orNull(), otherSlot ) ) if( Platform.isSameItemPrecise( recipe.getTopOptional().orElse( null ), otherSlot ) )
{ {
isValid = Platform.isSameItemPrecise( is, recipe.getBottomOptional().orNull() ); isValid = Platform.isSameItemPrecise( is, recipe.getBottomOptional().orElse( null ) );
} }
else if( Platform.isSameItemPrecise( recipe.getBottomOptional().orNull(), otherSlot ) ) else if( Platform.isSameItemPrecise( recipe.getBottomOptional().orElse( null ), otherSlot ) )
{ {
isValid = Platform.isSameItemPrecise( is, recipe.getTopOptional().orNull() ); isValid = Platform.isSameItemPrecise( is, recipe.getTopOptional().orElse( null ) );
} }
if( isValid ) if( isValid )

View file

@ -21,6 +21,7 @@ package appeng.container.implementations;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.EntityPlayerMP;
@ -216,9 +217,10 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
} }
// add a new encoded pattern. // add a new encoded pattern.
for( final ItemStack encodedPatternStack : AEApi.instance().definitions().items().encodedPattern().maybeStack( 1 ).asSet() ) Optional<ItemStack> maybePattern = AEApi.instance().definitions().items().encodedPattern().maybeStack( 1 );
if( maybePattern.isPresent() )
{ {
output = encodedPatternStack; output = maybePattern.get();
this.patternSlotOUT.putStack( output ); this.patternSlotOUT.putStack( output );
} }
} }

View file

@ -24,7 +24,6 @@ import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumHand;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent; import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent;
@ -138,13 +137,13 @@ public class ContainerQuartzKnife extends AEBaseContainer implements IAEAppEngIn
{ {
if( this.myName.length() > 0 ) if( this.myName.length() > 0 )
{ {
for( final ItemStack namePressStack : AEApi.instance().definitions().materials().namePress().maybeStack( 1 ).asSet() ) return AEApi.instance().definitions().materials().namePress().maybeStack( 1 ).map( namePressStack ->
{ {
final NBTTagCompound compound = Platform.openNbtData( namePressStack ); final NBTTagCompound compound = Platform.openNbtData( namePressStack );
compound.setString( "InscribeName", this.myName ); compound.setString( "InscribeName", this.myName );
return namePressStack; return namePressStack;
} } ).orElse( null );
} }
} }

View file

@ -19,6 +19,8 @@
package appeng.core; package appeng.core;
import java.util.Optional;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@ -67,9 +69,10 @@ public final class CreativeTab extends CreativeTabs
{ {
for( final IItemDefinition definition : choices ) for( final IItemDefinition definition : choices )
{ {
for( final ItemStack definitionStack : definition.maybeStack( 1 ).asSet() ) Optional<ItemStack> maybeIs = definition.maybeStack( 1 );
if( maybeIs.isPresent() )
{ {
return definitionStack; return maybeIs.get();
} }
} }

View file

@ -19,7 +19,7 @@
package appeng.core; package appeng.core;
import com.google.common.base.Optional; import java.util.Optional;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;

View file

@ -26,9 +26,6 @@ import javax.annotation.Nonnull;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.DimensionType; import net.minecraft.world.DimensionType;
import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
@ -297,12 +294,12 @@ public final class Registration
registries.cell().addCellHandler( new BasicCellHandler() ); registries.cell().addCellHandler( new BasicCellHandler() );
registries.cell().addCellHandler( new CreativeCellHandler() ); registries.cell().addCellHandler( new CreativeCellHandler() );
for( final ItemStack ammoStack : api.definitions().materials().matterBall().maybeStack( 1 ).asSet() ) api.definitions().materials().matterBall().maybeStack( 1 ).ifPresent( ammoStack ->
{ {
final double weight = 32; final double weight = 32;
registries.matterCannon().registerAmmo( ammoStack, weight ); registries.matterCannon().registerAmmo( ammoStack, weight );
} } );
this.recipeHandler.injectRecipes(); this.recipeHandler.injectRecipes();
@ -342,10 +339,7 @@ public final class Registration
GuiText.values(); GuiText.values();
Api.INSTANCE.partHelper().initFMPSupport(); Api.INSTANCE.partHelper().initFMPSupport();
for( final Block block : blocks.multiPart().maybeBlock().asSet() ) blocks.multiPart().maybeBlock().ifPresent( block -> ( (BlockCableBus) block ).setupTile() );
{
( (BlockCableBus) block ).setupTile();
}
definitions.getRegistry().getBootstrapComponents().forEach( b -> b.postInitialize( event.getSide() ) ); definitions.getRegistry().getBootstrapComponents().forEach( b -> b.postInitialize( event.getSide() ) );
@ -414,10 +408,10 @@ public final class Registration
// Inscriber // Inscriber
Upgrades.SPEED.registerItem( blocks.inscriber(), 3 ); Upgrades.SPEED.registerItem( blocks.inscriber(), 3 );
for( final Item wirelessTerminalItem : items.wirelessTerminal().maybeItem().asSet() ) items.wirelessTerminal().maybeItem().ifPresent( terminal ->
{ {
registries.wireless().registerWirelessHandler( (IWirelessTermHandler) wirelessTerminalItem ); registries.wireless().registerWirelessHandler( (IWirelessTermHandler) terminal );
} } );
// add villager trading to black smiths for a few basic materials // add villager trading to black smiths for a few basic materials
if( AEConfig.instance.isFeatureEnabled( AEFeature.VillagerTrading ) ) if( AEConfig.instance.isFeatureEnabled( AEFeature.VillagerTrading ) )

View file

@ -19,7 +19,7 @@
package appeng.core.features; package appeng.core.features;
import com.google.common.base.Optional; import java.util.Optional;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@ -38,7 +38,7 @@ public class BlockDefinition extends ItemDefinition implements IBlockDefinition
public BlockDefinition( String registryName, Block block, ItemBlock item ) public BlockDefinition( String registryName, Block block, ItemBlock item )
{ {
super( registryName, item ); super( registryName, item );
this.block = Optional.fromNullable( block ); this.block = Optional.ofNullable( block );
} }
@Override @Override
@ -50,7 +50,7 @@ public class BlockDefinition extends ItemDefinition implements IBlockDefinition
@Override @Override
public final Optional<ItemBlock> maybeItemBlock() public final Optional<ItemBlock> maybeItemBlock()
{ {
return this.block.transform( ItemBlock::new ); return this.block.map( ItemBlock::new );
} }
@Override @Override
@ -58,12 +58,12 @@ public class BlockDefinition extends ItemDefinition implements IBlockDefinition
{ {
Preconditions.checkArgument( stackSize > 0 ); Preconditions.checkArgument( stackSize > 0 );
return this.block.transform( b -> new ItemStack( b, stackSize ) ); return this.block.map( b -> new ItemStack( b, stackSize ) );
} }
@Override @Override
public final boolean isSameAs( final IBlockAccess world, final BlockPos pos ) public final boolean isSameAs( final IBlockAccess world, final BlockPos pos )
{ {
return this.isEnabled() && world.getBlockState( pos ).getBlock() == this.block.get(); return block.isPresent() && world.getBlockState( pos ).getBlock() == this.block.get();
} }
} }

View file

@ -19,10 +19,9 @@
package appeng.core.features; package appeng.core.features;
import java.util.Optional;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@ -34,7 +33,6 @@ import appeng.api.definitions.IItemDefinition;
public final class DamagedItemDefinition implements IItemDefinition public final class DamagedItemDefinition implements IItemDefinition
{ {
private final String identifier; private final String identifier;
private static final ItemTransformer ITEM_TRANSFORMER = new ItemTransformer();
private final Optional<IStackSrc> source; private final Optional<IStackSrc> source;
public DamagedItemDefinition( @Nonnull final String identifier, @Nonnull final IStackSrc source ) public DamagedItemDefinition( @Nonnull final String identifier, @Nonnull final IStackSrc source )
@ -48,7 +46,7 @@ public final class DamagedItemDefinition implements IItemDefinition
} }
else else
{ {
this.source = Optional.absent(); this.source = Optional.empty();
} }
} }
@ -62,13 +60,13 @@ public final class DamagedItemDefinition implements IItemDefinition
@Override @Override
public Optional<Item> maybeItem() public Optional<Item> maybeItem()
{ {
return this.source.transform( ITEM_TRANSFORMER ); return this.source.map( IStackSrc::getItem );
} }
@Override @Override
public Optional<ItemStack> maybeStack( final int stackSize ) public Optional<ItemStack> maybeStack( final int stackSize )
{ {
return this.source.transform( new ItemStackTransformer( stackSize ) ); return this.source.map( input -> input.stack( stackSize ));
} }
@Override @Override
@ -88,30 +86,4 @@ public final class DamagedItemDefinition implements IItemDefinition
return this.isEnabled() && comparableStack.getItem() == this.source.get().getItem() && comparableStack.getItemDamage() == this.source.get().getDamage(); return this.isEnabled() && comparableStack.getItem() == this.source.get().getItem() && comparableStack.getItemDamage() == this.source.get().getDamage();
} }
private static class ItemTransformer implements Function<IStackSrc, Item>
{
@Override
public Item apply( final IStackSrc input )
{
return input.getItem();
}
}
private static class ItemStackTransformer implements Function<IStackSrc, ItemStack>
{
private final int stackSize;
public ItemStackTransformer( final int stackSize )
{
Preconditions.checkArgument( stackSize > 0 );
this.stackSize = stackSize;
}
@Override
public ItemStack apply( final IStackSrc input )
{
return input.stack( this.stackSize );
}
}
} }

View file

@ -19,10 +19,9 @@
package appeng.core.features; package appeng.core.features;
import java.util.Optional;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.common.base.Strings; import com.google.common.base.Strings;
@ -42,7 +41,7 @@ public class ItemDefinition implements IItemDefinition
{ {
Preconditions.checkArgument( !Strings.isNullOrEmpty( registryName ), "registryName" ); Preconditions.checkArgument( !Strings.isNullOrEmpty( registryName ), "registryName" );
this.identifier = registryName; this.identifier = registryName;
this.item = Optional.fromNullable( item ); this.item = Optional.ofNullable( item );
} }
@Nonnull @Nonnull
@ -61,7 +60,7 @@ public class ItemDefinition implements IItemDefinition
@Override @Override
public Optional<ItemStack> maybeStack( final int stackSize ) public Optional<ItemStack> maybeStack( final int stackSize )
{ {
return this.item.transform( new ItemStackTransformer( stackSize ) ); return this.item.map( item -> new ItemStack( item, stackSize ) );
} }
@Override @Override
@ -73,24 +72,7 @@ public class ItemDefinition implements IItemDefinition
@Override @Override
public final boolean isSameAs( final ItemStack comparableStack ) public final boolean isSameAs( final ItemStack comparableStack )
{ {
return this.isEnabled() && Platform.isSameItemType( comparableStack, this.maybeStack( 1 ).get() ); return isEnabled() && Platform.isSameItemType( comparableStack, this.maybeStack( 1 ).get() );
} }
private static class ItemStackTransformer implements Function<Item, ItemStack>
{
private final int stackSize;
public ItemStackTransformer( final int stackSize )
{
Preconditions.checkArgument( stackSize > 0 );
this.stackSize = stackSize;
}
@Override
public ItemStack apply( final Item input )
{
return new ItemStack( input, this.stackSize );
}
}
} }

View file

@ -19,10 +19,9 @@
package appeng.core.features; package appeng.core.features;
import java.util.Optional;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import com.google.common.base.Optional;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@ -38,12 +37,12 @@ public final class TileDefinition extends BlockDefinition implements ITileDefini
public TileDefinition( @Nonnull String registryName, AEBaseTileBlock block, ItemBlock item ) public TileDefinition( @Nonnull String registryName, AEBaseTileBlock block, ItemBlock item )
{ {
super( registryName, block, item ); super( registryName, block, item );
this.block = Optional.fromNullable( block ); this.block = Optional.ofNullable( block );
} }
@Override @Override
public Optional<? extends Class<? extends TileEntity>> maybeEntity() public Optional<? extends Class<? extends TileEntity>> maybeEntity()
{ {
return this.block.transform( AEBaseTileBlock::getTileEntityClass ); return this.block.map( AEBaseTileBlock::getTileEntityClass );
} }
} }

View file

@ -94,8 +94,8 @@ public final class InscriberRegistry implements IInscriberRegistry
this.recipes.add( recipe ); this.recipes.add( recipe );
this.optionals.addAll( recipe.getTopOptional().asSet() ); recipe.getTopOptional().ifPresent( optionals::add );
this.optionals.addAll( recipe.getBottomOptional().asSet() ); recipe.getBottomOptional().ifPresent( optionals::add );
this.inputs.addAll( recipe.getInputs() ); this.inputs.addAll( recipe.getInputs() );
} }

View file

@ -172,9 +172,6 @@ public final class P2PTunnelRegistry implements IP2PTunnelRegistry
private void addNewAttunement( final IItemDefinition definition, final TunnelType type ) private void addNewAttunement( final IItemDefinition definition, final TunnelType type )
{ {
for( final ItemStack definitionStack : definition.maybeStack( 1 ).asSet() ) definition.maybeStack( 1 ).ifPresent( definitionStack -> addNewAttunement( definitionStack, type ) );
{
this.addNewAttunement( definitionStack, type );
}
} }
} }

View file

@ -9,7 +9,7 @@ import java.util.List;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import com.google.common.base.Optional; import java.util.Optional;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -47,8 +47,8 @@ public class InscriberRecipe implements IInscriberRecipe
this.inputs.addAll( inputs ); this.inputs.addAll( inputs );
this.output = output; this.output = output;
this.maybeTop = Optional.fromNullable( top ); this.maybeTop = Optional.ofNullable( top );
this.maybeBot = Optional.fromNullable( bot ); this.maybeBot = Optional.ofNullable( bot );
this.type = type; this.type = type;
} }

View file

@ -124,7 +124,7 @@ public enum Achievements
Achievements( final int x, final int y, final IItemDefinition which, final AchievementType type ) Achievements( final int x, final int y, final IItemDefinition which, final AchievementType type )
{ {
this.stack = which.maybeStack( 1 ).orNull(); this.stack = which.maybeStack( 1 ).orElse( null );
this.type = type; this.type = type;
this.x = x; this.x = x;
this.y = y; this.y = y;

View file

@ -23,7 +23,7 @@ import java.util.UUID;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import com.google.common.base.Optional; import java.util.Optional;
/** /**

View file

@ -24,7 +24,7 @@ import java.util.UUID;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import com.google.common.base.Optional; import java.util.Optional;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.mojang.authlib.GameProfile; import com.mojang.authlib.GameProfile;

View file

@ -24,7 +24,7 @@ import java.util.UUID;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import com.google.common.base.Optional; import java.util.Optional;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import net.minecraftforge.common.config.ConfigCategory; import net.minecraftforge.common.config.ConfigCategory;
@ -57,7 +57,7 @@ final class PlayerMapping implements IWorldPlayerMapping
{ {
final UUID maybe = this.mappings.get( id ); final UUID maybe = this.mappings.get( id );
return Optional.fromNullable( maybe ); return Optional.ofNullable( maybe );
} }
@Override @Override

View file

@ -24,7 +24,6 @@ import java.util.Random;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
@ -49,27 +48,20 @@ public final class BlockChargedQuartzOre extends BlockQuartzOre
@Override @Override
public Item getItemDropped( final IBlockState state, final Random rand, final int fortune ) public Item getItemDropped( final IBlockState state, final Random rand, final int fortune )
{ {
for( final Item charged : AEApi.instance().definitions().materials().certusQuartzCrystalCharged().maybeItem().asSet() ) return AEApi.instance().definitions().materials().certusQuartzCrystalCharged().maybeItem()
{ .orElseThrow( () -> new MissingDefinition( "Tried to access charged certus quartz crystal, even though they are disabled" ) );
return charged;
}
throw new MissingDefinition( "Tried to access charged certus quartz crystal, even though they are disabled" );
} }
@Override @Override
public int damageDropped( final IBlockState state ) public int damageDropped( final IBlockState state )
{ {
for( final ItemStack crystalStack : AEApi.instance().definitions().materials().certusQuartzCrystalCharged().maybeStack( 1 ).asSet() ) return AEApi.instance().definitions().materials().certusQuartzCrystalCharged().maybeStack( 1 )
{ .orElseThrow( () -> new MissingDefinition( "Tried to access charged certus quartz crystal, even though they are disabled" ) )
return crystalStack.getItemDamage(); .getItemDamage();
}
throw new MissingDefinition( "Tried to access charged certus quartz crystal, even though they are disabled" );
} }
@Override @Override
@SideOnly( Side.CLIENT) @SideOnly( Side.CLIENT )
public void randomDisplayTick( final IBlockState state, final World w, final BlockPos pos, final Random r ) public void randomDisplayTick( final IBlockState state, final World w, final BlockPos pos, final Random r )
{ {
if( !AEConfig.instance.enableEffects ) if( !AEConfig.instance.enableEffects )

View file

@ -24,7 +24,6 @@ import java.util.Random;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
@ -94,12 +93,8 @@ public class BlockQuartzOre extends AEBaseBlock
public Item getItemDropped( final IBlockState state, /* is null */ public Item getItemDropped( final IBlockState state, /* is null */
final Random rand, final int fortune ) final Random rand, final int fortune )
{ {
for( final Item crystalItem : AEApi.instance().definitions().materials().certusQuartzCrystal().maybeItem().asSet() ) return AEApi.instance().definitions().materials().certusQuartzCrystal().maybeItem()
{ .orElseThrow( () -> new MissingDefinition( "Tried to access certus quartz crystal, even though they are disabled" ) );
return crystalItem;
}
throw new MissingDefinition( "Tried to access certus quartz crystal, even though they are disabled" );
} }
@Override @Override
@ -118,12 +113,9 @@ public class BlockQuartzOre extends AEBaseBlock
@Override @Override
public int damageDropped( final IBlockState state ) public int damageDropped( final IBlockState state )
{ {
for( final ItemStack crystalStack : AEApi.instance().definitions().materials().certusQuartzCrystal().maybeStack( 1 ).asSet() ) return AEApi.instance().definitions().materials().certusQuartzCrystal().maybeStack( 1 )
{ .orElseThrow( () -> new MissingDefinition( "Tried to access certus quartz crystal, even though they are disabled" ) )
return crystalStack.getItemDamage(); .getItemDamage();
}
throw new MissingDefinition( "Tried to access certus quartz crystal, even though they are disabled" );
} }
@Override @Override

View file

@ -153,12 +153,12 @@ public final class EntityChargedQuartz extends AEBaseEntityItem
netherQuartz.setDead(); netherQuartz.setDead();
} }
for( final ItemStack fluixCrystalStack : materials.fluixCrystal().maybeStack( 2 ).asSet() ) materials.fluixCrystal().maybeStack( 2 ).ifPresent( is ->
{ {
final EntityItem entity = new EntityItem( this.worldObj, this.posX, this.posY, this.posZ, fluixCrystalStack ); final EntityItem entity = new EntityItem( this.worldObj, this.posX, this.posY, this.posZ, is );
this.worldObj.spawnEntityInWorld( entity ); this.worldObj.spawnEntityInWorld( entity );
} } );
return true; return true;
} }

View file

@ -128,7 +128,7 @@ public final class EntitySingularity extends AEBaseEntityItem
e.setDead(); e.setDead();
} }
for( final ItemStack singularityStack : materials.qESingularity().maybeStack( 2 ).asSet() ) materials.qESingularity().maybeStack( 2 ).ifPresent( singularityStack ->
{ {
final NBTTagCompound cmp = Platform.openNbtData( singularityStack ); final NBTTagCompound cmp = Platform.openNbtData( singularityStack );
cmp.setLong( "freq", ( new Date() ).getTime() * 100 + ( randTickSeed ) % 100 ); cmp.setLong( "freq", ( new Date() ).getTime() * 100 + ( randTickSeed ) % 100 );
@ -137,7 +137,7 @@ public final class EntitySingularity extends AEBaseEntityItem
final EntitySingularity entity = new EntitySingularity( this.worldObj, this.posX, this.posY, this.posZ, singularityStack ); final EntitySingularity entity = new EntitySingularity( this.worldObj, this.posX, this.posY, this.posZ, singularityStack );
this.worldObj.spawnEntityInWorld( entity ); this.worldObj.spawnEntityInWorld( entity );
} } );
} }
if( item.stackSize <= 0 ) if( item.stackSize <= 0 )

View file

@ -29,7 +29,6 @@ import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.item.EntityTNTPrimed; import net.minecraft.entity.item.EntityTNTPrimed;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.item.ItemStack;
import net.minecraft.util.DamageSource; import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.SoundCategory; import net.minecraft.util.SoundCategory;
@ -90,7 +89,7 @@ public final class EntityTinyTNTPrimed extends EntityTNTPrimed implements IEntit
if( this.isInWater() && Platform.isServer() ) // put out the fuse. if( this.isInWater() && Platform.isServer() ) // put out the fuse.
{ {
for( final ItemStack tntStack : AEApi.instance().definitions().blocks().tinyTNT().maybeStack( 1 ).asSet() ) AEApi.instance().definitions().blocks().tinyTNT().maybeStack( 1 ).ifPresent( tntStack ->
{ {
final EntityItem item = new EntityItem( this.worldObj, this.posX, this.posY, this.posZ, tntStack ); final EntityItem item = new EntityItem( this.worldObj, this.posX, this.posY, this.posZ, tntStack );
@ -103,7 +102,7 @@ public final class EntityTinyTNTPrimed extends EntityTNTPrimed implements IEntit
this.worldObj.spawnEntityInWorld( item ); this.worldObj.spawnEntityInWorld( item );
this.setDead(); this.setDead();
} } );
} }
if( this.getFuse() <= 0 ) if( this.getFuse() <= 0 )

View file

@ -20,6 +20,7 @@ package appeng.facade;
import java.io.IOException; import java.io.IOException;
import java.util.Optional;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
@ -149,9 +150,9 @@ public class FacadeContainer implements IFacadeContainer
} }
else if( !isBC ) else if( !isBC )
{ {
for( final Item facadeItem : AEApi.instance().definitions().items().facade().maybeItem().asSet() ) Optional<Item> maybeFacadeItem = AEApi.instance().definitions().items().facade().maybeItem();
{ if (maybeFacadeItem.isPresent()) {
final ItemFacade ifa = (ItemFacade) facadeItem; final ItemFacade ifa = (ItemFacade) maybeFacadeItem.get();
final ItemStack facade = ifa.createFromIDs( ids ); final ItemStack facade = ifa.createFromIDs( ids );
if( facade != null ) if( facade != null )
{ {

View file

@ -20,6 +20,7 @@ package appeng.items.misc;
import java.util.List; import java.util.List;
import java.util.Optional;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@ -66,16 +67,16 @@ public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal
@Nullable @Nullable
public static ResolverResult getResolver( final int certus2 ) public static ResolverResult getResolver( final int certus2 )
{ {
ResolverResult resolver = null;
for( ItemStack crystalSeedStack : AEApi.instance().definitions().items().crystalSeed().maybeStack( 1 ).asSet() ) return AEApi.instance().definitions().items().crystalSeed().maybeStack( 1 )
{ .map( crystalSeedStack ->
crystalSeedStack.setItemDamage( certus2 ); {
crystalSeedStack = newStyle( crystalSeedStack ); crystalSeedStack.setItemDamage( certus2 );
resolver = new ResolverResult( "ItemCrystalSeed", crystalSeedStack.getItemDamage(), crystalSeedStack.getTagCompound() ); crystalSeedStack = newStyle( crystalSeedStack );
} return new ResolverResult( "ItemCrystalSeed", crystalSeedStack.getItemDamage(), crystalSeedStack.getTagCompound() );
} )
.orElse( null );
return resolver;
} }
private static ItemStack newStyle( final ItemStack itemStack ) private static ItemStack newStyle( final ItemStack itemStack )
@ -110,23 +111,26 @@ public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal
if( newDamage == CERTUS + SINGLE_OFFSET ) if( newDamage == CERTUS + SINGLE_OFFSET )
{ {
for( final ItemStack quartzStack : materials.purifiedCertusQuartzCrystal().maybeStack( size ).asSet() ) Optional<ItemStack> quartzStack = materials.purifiedCertusQuartzCrystal().maybeStack( size );
if( quartzStack.isPresent() )
{ {
return quartzStack; return quartzStack.get();
} }
} }
if( newDamage == NETHER + SINGLE_OFFSET ) if( newDamage == NETHER + SINGLE_OFFSET )
{ {
for( final ItemStack quartzStack : materials.purifiedNetherQuartzCrystal().maybeStack( size ).asSet() ) Optional<ItemStack> quartzStack = materials.purifiedNetherQuartzCrystal().maybeStack( size );
if( quartzStack.isPresent() )
{ {
return quartzStack; return quartzStack.get();
} }
} }
if( newDamage == FLUIX + SINGLE_OFFSET ) if( newDamage == FLUIX + SINGLE_OFFSET )
{ {
for( final ItemStack quartzStack : materials.purifiedFluixCrystal().maybeStack( size ).asSet() ) Optional<ItemStack> quartzStack = materials.purifiedFluixCrystal().maybeStack( size );
if( quartzStack.isPresent() )
{ {
return quartzStack; return quartzStack.get();
} }
} }
if( newDamage > FINAL_STAGE ) if( newDamage > FINAL_STAGE )

View file

@ -80,16 +80,16 @@ public class ItemEncodedPattern extends AEBaseItem implements ICraftingPatternIt
final InventoryPlayer inv = player.inventory; final InventoryPlayer inv = player.inventory;
for( int s = 0; s < player.inventory.getSizeInventory(); s++ ) ItemStack is = AEApi.instance().definitions().materials().blankPattern().maybeStack( stack.stackSize ).orElse( null );
if( is != null )
{ {
if( inv.getStackInSlot( s ) == stack ) for( int s = 0; s < player.inventory.getSizeInventory(); s++ )
{ {
for( final ItemStack blankPattern : AEApi.instance().definitions().materials().blankPattern().maybeStack( stack.stackSize ).asSet() ) if( inv.getStackInSlot( s ) == stack )
{ {
inv.setInventorySlotContents( s, blankPattern ); inv.setInventorySlotContents( s, is );
return true;
} }
return true;
} }
} }
} }

View file

@ -250,16 +250,14 @@ public class ItemFacade extends AEBaseItem implements IFacadeItem, IAlphaPassIte
public ItemStack createFromIDs( final int[] ids ) public ItemStack createFromIDs( final int[] ids )
{ {
for( final ItemStack facadeStack : AEApi.instance().definitions().items().facade().maybeStack( 1 ).asSet() ) ItemStack facadeStack = AEApi.instance().definitions().items().facade().maybeStack( 1 )
{ .orElseThrow( () -> new MissingDefinition( "Tried to create a facade, while facades are being deactivated." ) );
final NBTTagCompound facadeTag = new NBTTagCompound();
facadeTag.setIntArray( "x", ids.clone() );
facadeStack.setTagCompound( facadeTag );
return facadeStack; final NBTTagCompound facadeTag = new NBTTagCompound();
} facadeTag.setIntArray( "x", ids.clone() );
facadeStack.setTagCompound( facadeTag );
throw new MissingDefinition( "Tried to create a facade, while facades are being deactivated." ); return facadeStack;
} }
@Override @Override

View file

@ -259,14 +259,14 @@ public final class ItemBasicStorageCell extends AEBaseItem implements IStorageCe
} }
// drop empty storage cell case // drop empty storage cell case
for( final ItemStack storageCellStack : AEApi.instance().definitions().materials().emptyStorageCell().maybeStack( 1 ).asSet() ) AEApi.instance().definitions().materials().emptyStorageCell().maybeStack( 1 ).ifPresent( is ->
{ {
final ItemStack extraA = ia.addItems( storageCellStack ); final ItemStack extraA = ia.addItems( is );
if( extraA != null ) if( extraA != null )
{ {
player.dropItem( extraA, false ); player.dropItem( extraA, false );
} }
} } );
if( player.inventoryContainer != null ) if( player.inventoryContainer != null )
{ {
@ -289,12 +289,8 @@ public final class ItemBasicStorageCell extends AEBaseItem implements IStorageCe
@Override @Override
public ItemStack getContainerItem( final ItemStack itemStack ) public ItemStack getContainerItem( final ItemStack itemStack )
{ {
for( final ItemStack stack : AEApi.instance().definitions().materials().emptyStorageCell().maybeStack( 1 ).asSet() ) return AEApi.instance().definitions().materials().emptyStorageCell().maybeStack( 1 )
{ .orElseThrow( () -> new MissingDefinition( "Tried to use empty storage cells while basic storage cells are defined." ) );
return stack;
}
throw new MissingDefinition( "Tried to use empty storage cells while basic storage cells are defined." );
} }
@Override @Override

View file

@ -293,10 +293,10 @@ public class ToolMassCannon extends AEBasePoweredItem implements IStorageCell
final Block whatsThere = w.getBlockState( hitPos ).getBlock(); final Block whatsThere = w.getBlockState( hitPos ).getBlock();
if( whatsThere.isReplaceable( w, hitPos ) && w.isAirBlock( hitPos ) ) if( whatsThere.isReplaceable( w, hitPos ) && w.isAirBlock( hitPos ) )
{ {
for( final Block paintBlock : AEApi.instance().definitions().blocks().paint().maybeBlock().asSet() ) AEApi.instance().definitions().blocks().paint().maybeBlock().ifPresent( paintBlock ->
{ {
w.setBlockState( hitPos, paintBlock.getDefaultState(), 3 ); w.setBlockState( hitPos, paintBlock.getDefaultState(), 3 );
} } );
} }
final TileEntity te = w.getTileEntity( hitPos ); final TileEntity te = w.getTileEntity( hitPos );

View file

@ -19,7 +19,7 @@
package appeng.items.tools.powered.powersink; package appeng.items.tools.powered.powersink;
//import com.google.common.base.Optional; //import java.util.Optional;
// //
//import net.minecraft.entity.EntityLivingBase; //import net.minecraft.entity.EntityLivingBase;
//import net.minecraft.item.Item; //import net.minecraft.item.Item;

View file

@ -19,7 +19,7 @@
package appeng.items.tools.powered.powersink; package appeng.items.tools.powered.powersink;
//import com.google.common.base.Optional; //import java.util.Optional;
// //
//import net.minecraft.item.ItemStack; //import net.minecraft.item.ItemStack;
// //

View file

@ -1,9 +1,6 @@
package appeng.loot; package appeng.loot;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.Iterables;
import net.minecraft.item.ItemStack;
import net.minecraft.world.storage.loot.LootEntry; import net.minecraft.world.storage.loot.LootEntry;
import net.minecraft.world.storage.loot.LootEntryItem; import net.minecraft.world.storage.loot.LootEntryItem;
import net.minecraft.world.storage.loot.LootPool; import net.minecraft.world.storage.loot.LootPool;
@ -28,8 +25,47 @@ public class ChestLoot
{ {
//TODO 1.9.4 aftermath - All these loot quality, pools and stuff. Figure it out and balance it. //TODO 1.9.4 aftermath - All these loot quality, pools and stuff. Figure it out and balance it.
final IMaterials materials = AEApi.instance().definitions().materials(); final IMaterials materials = AEApi.instance().definitions().materials();
event.getTable().addPool( new LootPool( ( ( FluentIterable<LootEntryItem> ) Iterables.transform( materials.certusQuartzCrystal().maybeStack( 1 ).asSet(), ( ItemStack itemstack ) -> new LootEntryItem( itemstack.getItem(), 2, 3, new LootFunction[]{ new SetMetadata(null, new RandomValueRange( itemstack.getItemDamage() ))}, new LootCondition[]{ new RandomChance( 1 ) }, "AE2 Crystal_" + itemstack.getItemDamage() ) ) ).toArray( LootEntryItem.class ), new LootCondition[0], new RandomValueRange( 1, 4 ), new RandomValueRange( 0, 2 ), "AE2 Crystals" ) ); materials.certusQuartzCrystal().maybeStack( 1 ).ifPresent( is ->
event.getTable().addPool( new LootPool( ( ( FluentIterable<LootEntryItem> ) Iterables.transform( materials.certusQuartzDust().maybeStack( 1 ).asSet(), ( ItemStack itemstack ) -> new LootEntryItem( itemstack.getItem(), 2, 3, new LootFunction[]{ new SetMetadata(null, new RandomValueRange( itemstack.getItemDamage() ))}, new LootCondition[]{ new RandomChance( 1 ) }, "AE2 Dust_" + itemstack.getItemDamage() ) ) ).toArray( LootEntryItem.class ), new LootCondition[0], new RandomValueRange( 1, 4 ), new RandomValueRange( 0, 2 ), "AE2 Dusts" ) ); {
event.getTable().addPool( new LootPool(
new LootEntry[] {
new LootEntryItem(
is.getItem(),
2,
3,
new LootFunction[] { new SetMetadata( null, new RandomValueRange( is.getItemDamage() ) ) },
new LootCondition[] { new RandomChance( 1 ) },
"AE2 Crystal_" + is.getItemDamage()
)
},
new LootCondition[0],
new RandomValueRange( 1, 4 ),
new RandomValueRange( 0, 2 ), "AE2 Crystals"
)
);
} );
materials.certusQuartzDust().maybeStack( 1 ).ifPresent( is ->
{
event.getTable().addPool( new LootPool(
new LootEntryItem[] {
new LootEntryItem(
is.getItem(),
2,
3,
new LootFunction[] { new SetMetadata( null, new RandomValueRange( is.getItemDamage() ) ) },
new LootCondition[] { new RandomChance( 1 ) },
"AE2 Dust_" + is.getItemDamage()
)
},
new LootCondition[0],
new RandomValueRange( 1, 4 ),
new RandomValueRange( 0, 2 ),
"AE2 Dusts"
)
);
} );
} }
} }

View file

@ -19,7 +19,6 @@
package appeng.me.cluster.implementations; package appeng.me.cluster.implementations;
import net.minecraft.block.Block;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
@ -165,11 +164,6 @@ public class QuantumCalculator extends MBCalculator
private boolean isBlockAtLocation( final IBlockAccess w, final BlockPos pos, final IBlockDefinition def ) private boolean isBlockAtLocation( final IBlockAccess w, final BlockPos pos, final IBlockDefinition def )
{ {
for( final Block block : def.maybeBlock().asSet() ) return def.maybeBlock().map( block -> block == w.getBlockState( pos ).getBlock() ).orElse( false );
{
return block == w.getBlockState( pos ).getBlock();
}
return false;
} }
} }

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.Random; import java.util.Random;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -479,9 +480,10 @@ public abstract class AEBasePart implements IPart, IGridProxyable, IActionHost,
final IDefinitions definitions = AEApi.instance().definitions(); final IDefinitions definitions = AEApi.instance().definitions();
if( definitions.parts().iface().isSameAs( is ) ) if( definitions.parts().iface().isSameAs( is ) )
{ {
for( final ItemStack iface : definitions.blocks().iface().maybeStack( 1 ).asSet() ) Optional<ItemStack> iface = definitions.blocks().iface().maybeStack( 1 );
if( iface.isPresent() )
{ {
is = iface; is = iface.get();
} }
} }

View file

@ -22,7 +22,7 @@ package appeng.parts;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import com.google.common.base.Optional; import java.util.Optional;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.SoundType; import net.minecraft.block.SoundType;
@ -379,12 +379,11 @@ public class PartPlacement
final AEPartLocation mySide = host.addPart( held, AEPartLocation.fromFacing( side ), player, hand ); final AEPartLocation mySide = host.addPart( held, AEPartLocation.fromFacing( side ), player, hand );
if( mySide != null ) if( mySide != null )
{ {
for( final Block multiPartBlock : multiPart.maybeBlock().asSet() ) multiPart.maybeBlock().ifPresent( multiPartBlock -> {
{
final SoundType ss = multiPartBlock.getSoundType(); final SoundType ss = multiPartBlock.getSoundType();
world.playSound( player, 0.5 + pos.getX(), 0.5 + pos.getY(), 0.5 + pos.getZ(), ss.getPlaceSound(), SoundCategory.BLOCKS, ( ss.getVolume() + 1.0F ) / 2.0F, ss.getPitch() * 0.8F ); world.playSound( player, 0.5 + pos.getX(), 0.5 + pos.getY(), 0.5 + pos.getZ(), ss.getPlaceSound(), SoundCategory.BLOCKS, ( ss.getVolume() + 1.0F ) / 2.0F, ss.getPitch() * 0.8F );
} });
if( !player.capabilities.isCreativeMode ) if( !player.capabilities.isCreativeMode )
{ {

View file

@ -21,17 +21,13 @@ package appeng.parts.p2p;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Optional;
import com.google.common.base.Optional;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import appeng.api.AEApi; import appeng.api.AEApi;
import appeng.api.config.Actionable; import appeng.api.config.Actionable;
@ -216,17 +212,14 @@ public abstract class PartP2PTunnel<T extends PartP2PTunnel> extends PartBasicSt
} }
else if( tt != null ) // attunement else if( tt != null ) // attunement
{ {
ItemStack newType = null; final ItemStack newType;
final IParts parts = AEApi.instance().definitions().parts(); final IParts parts = AEApi.instance().definitions().parts();
switch( tt ) switch( tt )
{ {
case LIGHT: case LIGHT:
for( final ItemStack stack : parts.p2PTunnelLight().maybeStack( 1 ).asSet() ) newType = parts.p2PTunnelLight().maybeStack( 1 ).orElse( null );
{
newType = stack;
}
break; break;
/* /*
@ -239,10 +232,7 @@ public abstract class PartP2PTunnel<T extends PartP2PTunnel> extends PartBasicSt
*/ */
case FLUID: case FLUID:
for( final ItemStack stack : parts.p2PTunnelLiquids().maybeStack( 1 ).asSet() ) newType = parts.p2PTunnelLiquids().maybeStack( 1 ).orElse( null );
{
newType = stack;
}
break; break;
/* /*
@ -255,24 +245,15 @@ public abstract class PartP2PTunnel<T extends PartP2PTunnel> extends PartBasicSt
*/ */
case ITEM: case ITEM:
for( final ItemStack stack : parts.p2PTunnelItems().maybeStack( 1 ).asSet() ) newType = parts.p2PTunnelItems().maybeStack( 1 ).orElse( null );
{
newType = stack;
}
break; break;
case ME: case ME:
for( final ItemStack stack : parts.p2PTunnelME().maybeStack( 1 ).asSet() ) newType = parts.p2PTunnelME().maybeStack( 1 ).orElse( null );
{
newType = stack;
}
break; break;
case REDSTONE: case REDSTONE:
for( final ItemStack stack : parts.p2PTunnelRedstone().maybeStack( 1 ).asSet() ) newType = parts.p2PTunnelRedstone().maybeStack( 1 ).orElse( null );
{
newType = stack;
}
break; break;
/* /*
@ -291,6 +272,7 @@ public abstract class PartP2PTunnel<T extends PartP2PTunnel> extends PartBasicSt
*/ */
default: default:
newType = null;
break; break;
} }

View file

@ -34,7 +34,7 @@ import java.util.zip.ZipOutputStream;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import com.google.common.base.Optional; import java.util.Optional;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.common.collect.HashMultimap; import com.google.common.collect.HashMultimap;

View file

@ -21,12 +21,10 @@ package appeng.recipes.game;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import com.google.common.base.Optional;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryCrafting; import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -100,8 +98,10 @@ public final class DisassembleRecipe implements IRecipe
} }
// handle storage cells // handle storage cells
for( final ItemStack storageCellStack : this.getCellOutput( stackInSlot ).asSet() ) Optional<ItemStack> maybeCellOutput = this.getCellOutput( stackInSlot );
if( maybeCellOutput.isPresent() )
{ {
ItemStack storageCellStack = maybeCellOutput.get();
// make sure the storage cell stackInSlot empty... // make sure the storage cell stackInSlot empty...
final IMEInventory<IAEItemStack> cellInv = AEApi.instance().registries().cell().getCellInventory( stackInSlot, null, StorageChannel.ITEMS ); final IMEInventory<IAEItemStack> cellInv = AEApi.instance().registries().cell().getCellInventory( stackInSlot, null, StorageChannel.ITEMS );
if( cellInv != null ) if( cellInv != null )
@ -117,10 +117,7 @@ public final class DisassembleRecipe implements IRecipe
} }
// handle crafting storage blocks // handle crafting storage blocks
for( final ItemStack craftingStorageStack : this.getNonCellOutput( stackInSlot ).asSet() ) output = getNonCellOutput( stackInSlot ).orElse( output );
{
output = craftingStorageStack;
}
} }
} }
@ -138,7 +135,7 @@ public final class DisassembleRecipe implements IRecipe
} }
} }
return Optional.absent(); return Optional.empty();
} }
@Nonnull @Nonnull
@ -152,7 +149,7 @@ public final class DisassembleRecipe implements IRecipe
} }
} }
return Optional.absent(); return Optional.empty();
} }
@Nullable @Nullable

View file

@ -19,10 +19,9 @@
package appeng.recipes.game; package appeng.recipes.game;
import java.util.Optional;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import com.google.common.base.Optional;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryCrafting; import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@ -63,7 +62,7 @@ public final class FacadeRecipe implements IRecipe
{ {
if( this.anchor.isSameAs( inv.getStackInSlot( 1 ) ) && this.anchor.isSameAs( inv.getStackInSlot( 3 ) ) && this.anchor.isSameAs( inv.getStackInSlot( 5 ) ) && this.anchor.isSameAs( inv.getStackInSlot( 7 ) ) ) if( this.anchor.isSameAs( inv.getStackInSlot( 1 ) ) && this.anchor.isSameAs( inv.getStackInSlot( 3 ) ) && this.anchor.isSameAs( inv.getStackInSlot( 5 ) ) && this.anchor.isSameAs( inv.getStackInSlot( 7 ) ) )
{ {
for( final Item facadeItemDefinition : this.maybeFacade.asSet() ) return this.maybeFacade.map( facadeItemDefinition ->
{ {
final ItemFacade facade = (ItemFacade) facadeItemDefinition; final ItemFacade facade = (ItemFacade) facadeItemDefinition;
@ -73,7 +72,7 @@ public final class FacadeRecipe implements IRecipe
facades.stackSize = 4; facades.stackSize = 4;
} }
return facades; return facades;
} } ).orElse( null );
} }
} }

View file

@ -22,12 +22,12 @@ package appeng.services;
import java.io.File; import java.io.File;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
@ -133,8 +133,10 @@ public final class CompassService
// lower level... // lower level...
final Chunk c = w.getChunkFromChunkCoords( cx, cz ); final Chunk c = w.getChunkFromChunkCoords( cx, cz );
for( final Block skyStoneBlock : AEApi.instance().definitions().blocks().skyStoneBlock().maybeBlock().asSet() ) Optional<Block> maybeBlock = AEApi.instance().definitions().blocks().skyStoneBlock().maybeBlock();
if( maybeBlock.isPresent() )
{ {
Block skyStoneBlock = maybeBlock.get();
for( int i = 0; i < CHUNK_SIZE; i++ ) for( int i = 0; i < CHUNK_SIZE; i++ )
{ {
for( int j = 0; j < CHUNK_SIZE; j++ ) for( int j = 0; j < CHUNK_SIZE; j++ )

View file

@ -403,13 +403,13 @@ public class CachedPlane
private void setBlockIDWithMetadata( final int y, final Object[] blk ) private void setBlockIDWithMetadata( final int y, final Object[] blk )
{ {
for( final Block matrixFrameBlock : CachedPlane.this.matrixFrame.maybeBlock().asSet() ) CachedPlane.this.matrixFrame.maybeBlock().ifPresent( matrixFrameBlock ->
{ {
if( blk[0] == matrixFrameBlock ) if( blk[0] == matrixFrameBlock )
{ {
blk[0] = Platform.AIR_BLOCK; blk[0] = Platform.AIR_BLOCK;
} }
} } );
final ExtendedBlockStorage extendedBlockStorage = this.storage[y >> 4]; final ExtendedBlockStorage extendedBlockStorage = this.storage[y >> 4];
extendedBlockStorage.set( this.x, y & 15, this.z, (IBlockState) blk[0] ); extendedBlockStorage.set( this.x, y & 15, this.z, (IBlockState) blk[0] );

View file

@ -42,13 +42,12 @@ public class StorageChunkProvider extends ChunkProviderOverworld
{ {
BLOCKS = new Block[255 * SQUARE_CHUNK_SIZE]; BLOCKS = new Block[255 * SQUARE_CHUNK_SIZE];
for( final Block matrixFrameBlock : AEApi.instance().definitions().blocks().matrixFrame().maybeBlock().asSet() ) AEApi.instance().definitions().blocks().matrixFrame().maybeBlock().ifPresent( matrixFrameBlock -> {
{
for( int x = 0; x < BLOCKS.length; x++ ) for( int x = 0; x < BLOCKS.length; x++ )
{ {
BLOCKS[x] = matrixFrameBlock; BLOCKS[x] = matrixFrameBlock;
} }
} } );
} }
private final World world; private final World world;

View file

@ -25,8 +25,6 @@ import java.util.List;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityHanging;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@ -178,10 +176,9 @@ public class StorageHelper
, final World dst /** storage cell **/ , final World dst /** storage cell **/
, final int x, final int y, final int z, final int i, final int j, final int k, final int scaleX, final int scaleY, final int scaleZ ) , final int x, final int y, final int z, final int i, final int j, final int k, final int scaleX, final int scaleY, final int scaleZ )
{ {
for( final Block matrixFrameBlock : AEApi.instance().definitions().blocks().matrixFrame().maybeBlock().asSet() ) AEApi.instance().definitions().blocks().matrixFrame().maybeBlock().ifPresent( matrixFrameBlock ->
{ this.transverseEdges( i - 1, j - 1, k - 1, i + scaleX + 1, j + scaleY + 1, k + scaleZ + 1, new WrapInMatrixFrame( matrixFrameBlock.getDefaultState(), dst ) )
this.transverseEdges( i - 1, j - 1, k - 1, i + scaleX + 1, j + scaleY + 1, k + scaleZ + 1, new WrapInMatrixFrame( matrixFrameBlock.getDefaultState(), dst ) ); );
}
final AxisAlignedBB srcBox = new AxisAlignedBB( x, y, z, x + scaleX + 1, y + scaleY + 1, z + scaleZ + 1 ); final AxisAlignedBB srcBox = new AxisAlignedBB( x, y, z, x + scaleX + 1, y + scaleY + 1, z + scaleZ + 1 );

View file

@ -68,7 +68,7 @@ public class AEBaseTile extends TileEntity implements ITickable, IOrientable, IC
private static final ThreadLocal<WeakReference<AEBaseTile>> DROP_NO_ITEMS = new ThreadLocal<WeakReference<AEBaseTile>>(); private static final ThreadLocal<WeakReference<AEBaseTile>> DROP_NO_ITEMS = new ThreadLocal<WeakReference<AEBaseTile>>();
private static final Map<Class<? extends AEBaseTile>, Map<TileEventType, List<AETileEventHandler>>> HANDLERS = new HashMap<Class<? extends AEBaseTile>, Map<TileEventType, List<AETileEventHandler>>>(); private static final Map<Class<? extends AEBaseTile>, Map<TileEventType, List<AETileEventHandler>>> HANDLERS = new HashMap<Class<? extends AEBaseTile>, Map<TileEventType, List<AETileEventHandler>>>();
private static final Map<Class<? extends TileEntity>, IStackSrc> ITEM_STACKS = new HashMap<Class<? extends TileEntity>, IStackSrc>(); private static final Map<Class<? extends TileEntity>, IStackSrc> ITEM_STACKS = new HashMap<>();
private int renderFragment = 0; private int renderFragment = 0;
@Nullable @Nullable
private String customName; private String customName;

View file

@ -19,6 +19,8 @@
package appeng.tile.crafting; package appeng.tile.crafting;
import java.util.Optional;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import appeng.api.AEApi; import appeng.api.AEApi;
@ -36,29 +38,25 @@ public class TileCraftingStorageTile extends TileCraftingTile
final IBlocks blocks = AEApi.instance().definitions().blocks(); final IBlocks blocks = AEApi.instance().definitions().blocks();
final int storage = ( (TileCraftingTile) obj ).getStorageBytes() / KILO_SCALAR; final int storage = ( (TileCraftingTile) obj ).getStorageBytes() / KILO_SCALAR;
Optional<ItemStack> is;
switch( storage ) switch( storage )
{ {
case 4: case 4:
for( final ItemStack stack : blocks.craftingStorage4k().maybeStack( 1 ).asSet() ) is = blocks.craftingStorage4k().maybeStack( 1 );
{
return stack;
}
break; break;
case 16: case 16:
for( final ItemStack stack : blocks.craftingStorage16k().maybeStack( 1 ).asSet() ) is = blocks.craftingStorage16k().maybeStack( 1 );
{
return stack;
}
break; break;
case 64: case 64:
for( final ItemStack stack : blocks.craftingStorage64k().maybeStack( 1 ).asSet() ) is = blocks.craftingStorage64k().maybeStack( 1 );
{ break;
return stack; default:
} is = Optional.empty();
break; break;
} }
return super.getItemFromTile( obj ); return is.orElseGet( () -> super.getItemFromTile( obj ) );
} }
@Override @Override

View file

@ -23,6 +23,7 @@ import java.util.Collections;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.Optional;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -79,15 +80,14 @@ public class TileCraftingTile extends AENetworkTile implements IAEMultiBlock, IP
@Override @Override
protected ItemStack getItemFromTile( final Object obj ) protected ItemStack getItemFromTile( final Object obj )
{ {
Optional<ItemStack> is = Optional.empty();
if( ( (TileCraftingTile) obj ).isAccelerator() ) if( ( (TileCraftingTile) obj ).isAccelerator() )
{ {
for( final ItemStack accelerator : AEApi.instance().definitions().blocks().craftingAccelerator().maybeStack( 1 ).asSet() ) is = AEApi.instance().definitions().blocks().craftingAccelerator().maybeStack( 1 );
{
return accelerator;
}
} }
return super.getItemFromTile( obj ); return is.orElseGet( () -> super.getItemFromTile( obj ) );
} }
@Override @Override

View file

@ -167,10 +167,8 @@ public class TileCharger extends AENetworkPowerTile implements ICrankable, ITick
{ {
this.extractAEPower( this.getInternalMaxPower(), Actionable.MODULATE, PowerMultiplier.CONFIG );// 1500 this.extractAEPower( this.getInternalMaxPower(), Actionable.MODULATE, PowerMultiplier.CONFIG );// 1500
for( final ItemStack charged : materials.certusQuartzCrystalCharged().maybeStack( myItem.stackSize ).asSet() ) materials.certusQuartzCrystalCharged().maybeStack( myItem.stackSize ).ifPresent( charged ->
{ this.setInventorySlotContents( 0, charged ) );
this.setInventorySlotContents( 0, charged );
}
} }
} }
} }
@ -209,10 +207,8 @@ public class TileCharger extends AENetworkPowerTile implements ICrankable, ITick
{ {
this.extractAEPower( this.getInternalMaxPower(), Actionable.MODULATE, PowerMultiplier.CONFIG );// 1500 this.extractAEPower( this.getInternalMaxPower(), Actionable.MODULATE, PowerMultiplier.CONFIG );// 1500
for( final ItemStack charged : materials.certusQuartzCrystalCharged().maybeStack( myItem.stackSize ).asSet() ) materials.certusQuartzCrystalCharged().maybeStack( myItem.stackSize ).ifPresent( charged ->
{ this.setInventorySlotContents( 0, charged ) );
this.setInventorySlotContents( 0, charged );
}
} }
} }
} }

View file

@ -144,21 +144,15 @@ public class TileCondenser extends AEBaseInvTile implements IFluidHandler, IConf
switch( (CondenserOutput) this.cm.getSetting( Settings.CONDENSER_OUTPUT ) ) switch( (CondenserOutput) this.cm.getSetting( Settings.CONDENSER_OUTPUT ) )
{ {
case MATTER_BALLS: case MATTER_BALLS:
for( final ItemStack matterBallStack : materials.matterBall().maybeStack( 1 ).asSet() ) return materials.matterBall().maybeStack( 1 ).orElse( null );
{
return matterBallStack;
}
case SINGULARITY: case SINGULARITY:
for( final ItemStack singularityStack : materials.singularity().maybeStack( 1 ).asSet() ) return materials.singularity().maybeStack( 1 ).orElse( null );
{
return singularityStack;
}
case TRASH: case TRASH:
default: default:
return null;
} }
return null;
} }
public double getRequiredPower() public double getRequiredPower()

View file

@ -399,11 +399,11 @@ public class TileInscriber extends AENetworkPowerTile implements IGridTickable,
for( final IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes() ) for( final IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes() )
{ {
final boolean matchA = ( plateA == null && !recipe.getTopOptional().isPresent() ) || ( Platform.isSameItemPrecise( plateA, recipe.getTopOptional().orNull() ) ) && // and... final boolean matchA = ( plateA == null && !recipe.getTopOptional().isPresent() ) || ( Platform.isSameItemPrecise( plateA, recipe.getTopOptional().orElse( null ) ) ) && // and...
( plateB == null && !recipe.getBottomOptional().isPresent() ) | ( Platform.isSameItemPrecise( plateB, recipe.getBottomOptional().orNull() ) ); ( plateB == null && !recipe.getBottomOptional().isPresent() ) | ( Platform.isSameItemPrecise( plateB, recipe.getBottomOptional().orElse( null ) ) );
final boolean matchB = ( plateB == null && !recipe.getTopOptional().isPresent() ) || ( Platform.isSameItemPrecise( plateB, recipe.getTopOptional().orNull() ) ) && // and... final boolean matchB = ( plateB == null && !recipe.getTopOptional().isPresent() ) || ( Platform.isSameItemPrecise( plateB, recipe.getTopOptional().orElse( null ) ) ) && // and...
( plateA == null && !recipe.getBottomOptional().isPresent() ) | ( Platform.isSameItemPrecise( plateA, recipe.getBottomOptional().orNull() ) ); ( plateA == null && !recipe.getBottomOptional().isPresent() ) | ( Platform.isSameItemPrecise( plateA, recipe.getBottomOptional().orElse( null ) ) );
if( matchA || matchB ) if( matchA || matchB )
{ {

View file

@ -20,8 +20,7 @@ package appeng.tile.qnb;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.Optional;
import com.google.common.base.Optional;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
@ -143,12 +142,9 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock
private boolean isCenter() private boolean isCenter()
{ {
for( final Block link : AEApi.instance().definitions().blocks().quantumLink().maybeBlock().asSet() ) return AEApi.instance().definitions().blocks().quantumLink().maybeBlock()
{ .map( link -> getBlockType() == link )
return this.getBlockType() == link; .orElse( false );
}
return false;
} }
@MENetworkEventSubscribe @MENetworkEventSubscribe

View file

@ -22,7 +22,7 @@ package appeng.util;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import com.google.common.base.Optional; import java.util.Optional;
import appeng.core.AELog; import appeng.core.AELog;
@ -82,7 +82,7 @@ public class ClassInstantiation<T>
} }
} }
return Optional.absent(); return Optional.empty();
} }
private boolean isClassMatch( Class<?> expected, Class<?> got, final Object value ) private boolean isClassMatch( Class<?> expected, Class<?> got, final Object value )

View file

@ -94,10 +94,7 @@ public final class MeteoritePlacer
this.validSpawn.add( Blocks.SNOW ); this.validSpawn.add( Blocks.SNOW );
this.validSpawn.add( Blocks.STAINED_HARDENED_CLAY ); this.validSpawn.add( Blocks.STAINED_HARDENED_CLAY );
for( final Block skyStoneBlock : this.skyStoneDefinition.maybeBlock().asSet() ) this.skyStoneDefinition.maybeBlock().ifPresent( this.invalidSpawn::add );
{
this.invalidSpawn.add( skyStoneBlock );
}
this.invalidSpawn.add( Blocks.PLANKS ); this.invalidSpawn.add( Blocks.PLANKS );
this.invalidSpawn.add( Blocks.IRON_DOOR ); this.invalidSpawn.add( Blocks.IRON_DOOR );
this.invalidSpawn.add( Blocks.IRON_BARS ); this.invalidSpawn.add( Blocks.IRON_BARS );
@ -216,39 +213,14 @@ public final class MeteoritePlacer
private void placeMeteorite( final IMeteoriteWorld w, final int x, final int y, final int z ) private void placeMeteorite( final IMeteoriteWorld w, final int x, final int y, final int z )
{ {
final int meteorXLength = w.minX( x - 8 );
final int meteorXHeight = w.maxX( x + 8 );
final int meteorZLength = w.minZ( z - 8 );
final int meteorZHeight = w.maxZ( z + 8 );
// spawn meteor // spawn meteor
for( int i = meteorXLength; i < meteorXHeight; i++ ) this.skyStoneDefinition.maybeBlock().ifPresent( block -> placeMeteoriteSkyStone( w, x, y, z, block ) );
{
for( int j = y - 8; j < y + 8; j++ )
{
for( int k = meteorZLength; k < meteorZHeight; k++ )
{
final double dx = i - x;
final double dy = j - y;
final double dz = k - z;
if( dx * dx * 0.7 + dy * dy * ( j > y ? 1.4 : 0.8 ) + dz * dz * 0.7 < this.squaredMeteoriteSize )
{
for( final Block skyStoneBlock : this.skyStoneDefinition.maybeBlock().asSet() )
{
this.putter.put( w, i, j, k, skyStoneBlock );
}
}
}
}
}
if( AEConfig.instance.isFeatureEnabled( AEFeature.SpawnPressesInMeteorites ) ) if( AEConfig.instance.isFeatureEnabled( AEFeature.SpawnPressesInMeteorites ) )
{ {
for( final Block skyChestBlock : this.skyChestDefinition.maybeBlock().asSet() ) this.skyChestDefinition.maybeBlock().ifPresent( block -> this.putter.put( w, x, y, z, block ) );
{
this.putter.put( w, x, y, z, skyChestBlock );
}
final TileEntity te = w.getTileEntity( x, y, z ); final TileEntity te = w.getTileEntity( x, y, z );
if( te instanceof IInventory ) if( te instanceof IInventory )
@ -264,8 +236,8 @@ public final class MeteoritePlacer
for( int zz = 0; zz < primary; zz++ ) for( int zz = 0; zz < primary; zz++ )
{ {
int r = 0; int r;
boolean duplicate = false; boolean duplicate;
do do
{ {
@ -286,28 +258,16 @@ public final class MeteoritePlacer
switch( r % 4 ) switch( r % 4 )
{ {
case 0: case 0:
for( final ItemStack calc : materials.calcProcessorPress().maybeStack( 1 ).asSet() ) toAdd = materials.calcProcessorPress().maybeStack( 1 ).orElse( null );
{
toAdd = calc;
}
break; break;
case 1: case 1:
for( final ItemStack calc : materials.engProcessorPress().maybeStack( 1 ).asSet() ) toAdd = materials.engProcessorPress().maybeStack( 1 ).orElse( null );
{
toAdd = calc;
}
break; break;
case 2: case 2:
for( final ItemStack calc : materials.logicProcessorPress().maybeStack( 1 ).asSet() ) toAdd = materials.logicProcessorPress().maybeStack( 1 ).orElse( null );
{
toAdd = calc;
}
break; break;
case 3: case 3:
for( final ItemStack calc : materials.siliconPress().maybeStack( 1 ).asSet() ) toAdd = materials.siliconPress().maybeStack( 1 ).orElse( null );
{
toAdd = calc;
}
break; break;
default: default:
} }
@ -334,10 +294,7 @@ public final class MeteoritePlacer
{ {
case 0: case 0:
final int amount = (int) ( ( Math.random() * SKYSTONE_SPAWN_LIMIT ) + 1 ); final int amount = (int) ( ( Math.random() * SKYSTONE_SPAWN_LIMIT ) + 1 );
for( final ItemStack skyStoneStack : this.skyStoneDefinition.maybeStack( amount ).asSet() ) this.skyStoneDefinition.maybeStack( amount ).ifPresent( ap::addItems );
{
ap.addItems( skyStoneStack );
}
break; break;
case 1: case 1:
final List<ItemStack> possibles = new LinkedList<ItemStack>(); final List<ItemStack> possibles = new LinkedList<ItemStack>();
@ -366,6 +323,32 @@ public final class MeteoritePlacer
} }
} }
private void placeMeteoriteSkyStone( IMeteoriteWorld w, int x, int y, int z, Block block )
{
final int meteorXLength = w.minX( x - 8 );
final int meteorXHeight = w.maxX( x + 8 );
final int meteorZLength = w.minZ( z - 8 );
final int meteorZHeight = w.maxZ( z + 8 );
for( int i = meteorXLength; i < meteorXHeight; i++ )
{
for( int j = y - 8; j < y + 8; j++ )
{
for( int k = meteorZLength; k < meteorZHeight; k++ )
{
final double dx = i - x;
final double dy = j - y;
final double dz = k - z;
if( dx * dx * 0.7 + dy * dy * ( j > y ? 1.4 : 0.8 ) + dz * dz * 0.7 < this.squaredMeteoriteSize )
{
this.putter.put( w, i, j, k, block );
}
}
}
}
}
private void decay( final IMeteoriteWorld w, final int x, final int y, final int z ) private void decay( final IMeteoriteWorld w, final int x, final int y, final int z )
{ {
double randomShit = 0; double randomShit = 0;

View file

@ -48,8 +48,8 @@ public final class QuartzWorldGen implements IWorldGenerator
final IBlockDefinition oreDefinition = blocks.quartzOre(); final IBlockDefinition oreDefinition = blocks.quartzOre();
final IBlockDefinition chargedDefinition = blocks.quartzOreCharged(); final IBlockDefinition chargedDefinition = blocks.quartzOreCharged();
final Block ore = oreDefinition.maybeBlock().orNull(); final Block ore = oreDefinition.maybeBlock().orElse( null );
final Block charged = chargedDefinition.maybeBlock().orNull(); final Block charged = chargedDefinition.maybeBlock().orElse( null );
this.oreNormal = new WorldGenMinable( ore.getDefaultState(), AEConfig.instance.quartzOresPerCluster ); this.oreNormal = new WorldGenMinable( ore.getDefaultState(), AEConfig.instance.quartzOresPerCluster );
this.oreCharged = new WorldGenMinable( charged.getDefaultState(), AEConfig.instance.quartzOresPerCluster ); this.oreCharged = new WorldGenMinable( charged.getDefaultState(), AEConfig.instance.quartzOresPerCluster );

View file

@ -2,7 +2,6 @@
package appeng.worldgen.meteorite; package appeng.worldgen.meteorite;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import appeng.api.definitions.IBlockDefinition; import appeng.api.definitions.IBlockDefinition;
@ -63,10 +62,7 @@ public class Fallout
} }
else if( a > 0.6 ) else if( a > 0.6 )
{ {
for( final Block skyStoneBlock : this.skyStoneDefinition.maybeBlock().asSet() ) skyStoneDefinition.maybeBlock().ifPresent( block -> this.putter.put( w, x, y, z, block ) );
{
this.putter.put( w, x, y, z, skyStoneBlock );
}
} }
else if( a > 0.5 ) else if( a > 0.5 )
{ {