From e276aa682f90f30c6f7905fcb9ac10e5a465a7e0 Mon Sep 17 00:00:00 2001 From: shartte Date: Wed, 24 Aug 2016 19:06:10 +0200 Subject: [PATCH] Replaced all instances of Guava's Optional type with Java 8's Optional type, as discussed in #81. (#90) --- src/api/java/appeng/api/config/Upgrades.java | 8 +- .../api/definitions/IBlockDefinition.java | 2 +- .../api/definitions/IItemDefinition.java | 2 +- .../api/definitions/ITileDefinition.java | 2 +- .../appeng/api/features/IInscriberRecipe.java | 2 +- .../block/AEBaseItemBlockChargeable.java | 24 +++-- .../block/crafting/ItemCraftingStorage.java | 7 +- .../java/appeng/bootstrap/FeatureFactory.java | 6 +- .../gui/implementations/GuiCraftAmount.java | 20 +--- .../implementations/GuiCraftingStatus.java | 23 ++--- .../client/gui/implementations/GuiIOPort.java | 11 +-- .../gui/implementations/GuiPriority.java | 33 ++----- .../implementations/ContainerInscriber.java | 16 ++-- .../implementations/ContainerPatternTerm.java | 6 +- .../implementations/ContainerQuartzKnife.java | 5 +- src/main/java/appeng/core/CreativeTab.java | 7 +- .../java/appeng/core/CreativeTabFacade.java | 2 +- src/main/java/appeng/core/Registration.java | 18 ++-- .../appeng/core/features/BlockDefinition.java | 10 +- .../core/features/DamagedItemDefinition.java | 36 +------- .../appeng/core/features/ItemDefinition.java | 26 +----- .../appeng/core/features/TileDefinition.java | 7 +- .../registries/InscriberRegistry.java | 4 +- .../registries/P2PTunnelRegistry.java | 5 +- .../registries/entries/InscriberRecipe.java | 6 +- .../java/appeng/core/stats/Achievements.java | 2 +- .../core/worlddata/IWorldPlayerMapping.java | 2 +- .../appeng/core/worlddata/PlayerData.java | 2 +- .../appeng/core/worlddata/PlayerMapping.java | 4 +- .../solid/BlockChargedQuartzOre.java | 20 ++-- .../decorative/solid/BlockQuartzOre.java | 18 +--- .../appeng/entity/EntityChargedQuartz.java | 6 +- .../java/appeng/entity/EntitySingularity.java | 4 +- .../appeng/entity/EntityTinyTNTPrimed.java | 5 +- .../java/appeng/facade/FacadeContainer.java | 7 +- .../appeng/items/misc/ItemCrystalSeed.java | 32 ++++--- .../appeng/items/misc/ItemEncodedPattern.java | 12 +-- .../java/appeng/items/parts/ItemFacade.java | 14 ++- .../items/storage/ItemBasicStorageCell.java | 14 +-- .../items/tools/powered/ToolMassCannon.java | 4 +- .../items/tools/powered/powersink/IC2.java | 2 +- .../tools/powered/powersink/RedstoneFlux.java | 2 +- src/main/java/appeng/loot/ChestLoot.java | 46 +++++++++- .../implementations/QuantumCalculator.java | 8 +- src/main/java/appeng/parts/AEBasePart.java | 6 +- src/main/java/appeng/parts/PartPlacement.java | 7 +- .../java/appeng/parts/p2p/PartP2PTunnel.java | 34 ++----- .../java/appeng/recipes/RecipeHandler.java | 2 +- .../recipes/game/DisassembleRecipe.java | 17 ++-- .../appeng/recipes/game/FacadeRecipe.java | 7 +- .../java/appeng/services/CompassService.java | 6 +- src/main/java/appeng/spatial/CachedPlane.java | 4 +- .../appeng/spatial/StorageChunkProvider.java | 5 +- .../java/appeng/spatial/StorageHelper.java | 9 +- src/main/java/appeng/tile/AEBaseTile.java | 2 +- .../crafting/TileCraftingStorageTile.java | 24 +++-- .../tile/crafting/TileCraftingTile.java | 10 +- .../java/appeng/tile/misc/TileCharger.java | 12 +-- .../java/appeng/tile/misc/TileCondenser.java | 12 +-- .../java/appeng/tile/misc/TileInscriber.java | 8 +- .../appeng/tile/qnb/TileQuantumBridge.java | 12 +-- .../java/appeng/util/ClassInstantiation.java | 4 +- .../java/appeng/worldgen/MeteoritePlacer.java | 91 ++++++++----------- .../java/appeng/worldgen/QuartzWorldGen.java | 4 +- .../appeng/worldgen/meteorite/Fallout.java | 6 +- 65 files changed, 306 insertions(+), 468 deletions(-) diff --git a/src/api/java/appeng/api/config/Upgrades.java b/src/api/java/appeng/api/config/Upgrades.java index 660d4c78..8a3303ec 100644 --- a/src/api/java/appeng/api/config/Upgrades.java +++ b/src/api/java/appeng/api/config/Upgrades.java @@ -27,8 +27,6 @@ package appeng.api.config; import java.util.HashMap; import java.util.Map; -import com.google.common.base.Optional; - import net.minecraft.item.ItemStack; import appeng.api.definitions.IItemDefinition; @@ -70,11 +68,7 @@ public enum Upgrades */ public void registerItem( final IItemDefinition item, final int maxSupported ) { - final Optional maybeStack = item.maybeStack( 1 ); - for( final ItemStack stack : maybeStack.asSet() ) - { - this.registerItem( stack, maxSupported ); - } + item.maybeStack( 1 ).ifPresent( is -> this.registerItem( is, maxSupported ) ); } /** diff --git a/src/api/java/appeng/api/definitions/IBlockDefinition.java b/src/api/java/appeng/api/definitions/IBlockDefinition.java index dd20c96d..57f06c21 100644 --- a/src/api/java/appeng/api/definitions/IBlockDefinition.java +++ b/src/api/java/appeng/api/definitions/IBlockDefinition.java @@ -2,7 +2,7 @@ package appeng.api.definitions; -import com.google.common.base.Optional; +import java.util.Optional; import net.minecraft.block.Block; import net.minecraft.item.ItemBlock; diff --git a/src/api/java/appeng/api/definitions/IItemDefinition.java b/src/api/java/appeng/api/definitions/IItemDefinition.java index e617f611..1f95a04d 100644 --- a/src/api/java/appeng/api/definitions/IItemDefinition.java +++ b/src/api/java/appeng/api/definitions/IItemDefinition.java @@ -26,7 +26,7 @@ package appeng.api.definitions; import javax.annotation.Nonnull; -import com.google.common.base.Optional; +import java.util.Optional; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/api/java/appeng/api/definitions/ITileDefinition.java b/src/api/java/appeng/api/definitions/ITileDefinition.java index f4644788..c4ce65db 100644 --- a/src/api/java/appeng/api/definitions/ITileDefinition.java +++ b/src/api/java/appeng/api/definitions/ITileDefinition.java @@ -2,7 +2,7 @@ package appeng.api.definitions; -import com.google.common.base.Optional; +import java.util.Optional; import net.minecraft.tileentity.TileEntity; diff --git a/src/api/java/appeng/api/features/IInscriberRecipe.java b/src/api/java/appeng/api/features/IInscriberRecipe.java index 4dabca9f..75baff4b 100644 --- a/src/api/java/appeng/api/features/IInscriberRecipe.java +++ b/src/api/java/appeng/api/features/IInscriberRecipe.java @@ -6,7 +6,7 @@ import java.util.List; import javax.annotation.Nonnull; -import com.google.common.base.Optional; +import java.util.Optional; import net.minecraft.item.ItemStack; diff --git a/src/main/java/appeng/block/AEBaseItemBlockChargeable.java b/src/main/java/appeng/block/AEBaseItemBlockChargeable.java index 1bb99cb5..210a2cc8 100644 --- a/src/main/java/appeng/block/AEBaseItemBlockChargeable.java +++ b/src/main/java/appeng/block/AEBaseItemBlockChargeable.java @@ -68,19 +68,17 @@ public class AEBaseItemBlockChargeable extends AEBaseItemBlock implements IAEIte { final Block blockID = Block.getBlockFromItem( this ); final IBlockDefinition energyCell = Api.INSTANCE.definitions().blocks().energyCell(); - for( final Block block : energyCell.maybeBlock().asSet() ) - { - if( blockID == block ) - { - return 200000; - } - else - { - return 8 * 200000; - } - } - - return 0; + return energyCell.maybeBlock().map( block -> { + if( blockID == block ) + { + return 200000; + } + else + { + return 8 * 200000; + } + } + ).orElse( 0 ); } @Override diff --git a/src/main/java/appeng/block/crafting/ItemCraftingStorage.java b/src/main/java/appeng/block/crafting/ItemCraftingStorage.java index 22bb483e..423a4e4d 100644 --- a/src/main/java/appeng/block/crafting/ItemCraftingStorage.java +++ b/src/main/java/appeng/block/crafting/ItemCraftingStorage.java @@ -39,12 +39,7 @@ public class ItemCraftingStorage extends AEBaseItemBlock @Override public ItemStack getContainerItem( final ItemStack itemStack ) { - for( final ItemStack stack : AEApi.instance().definitions().blocks().craftingUnit().maybeStack( 1 ).asSet() ) - { - return stack; - } - - return null; + return AEApi.instance().definitions().blocks().craftingUnit().maybeStack( 1 ).orElse( null ); } @Override diff --git a/src/main/java/appeng/bootstrap/FeatureFactory.java b/src/main/java/appeng/bootstrap/FeatureFactory.java index f3454572..a150a024 100644 --- a/src/main/java/appeng/bootstrap/FeatureFactory.java +++ b/src/main/java/appeng/bootstrap/FeatureFactory.java @@ -68,9 +68,9 @@ public class FeatureFactory 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 ) { @@ -78,7 +78,7 @@ public class FeatureFactory definition.add( color, new ItemStackSrc( targetItem, offset + color.ordinal(), state ) ); } - } + } ); return definition; } diff --git a/src/main/java/appeng/client/gui/implementations/GuiCraftAmount.java b/src/main/java/appeng/client/gui/implementations/GuiCraftAmount.java index a33689f3..d44a7039 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiCraftAmount.java +++ b/src/main/java/appeng/client/gui/implementations/GuiCraftAmount.java @@ -100,38 +100,26 @@ public class GuiCraftAmount extends AEBaseGui if( target instanceof WirelessTerminalGuiObject ) { - for( final ItemStack wirelessTerminalStack : definitions.items().wirelessTerminal().maybeStack( 1 ).asSet() ) - { - myIcon = wirelessTerminalStack; - } + myIcon = definitions.items().wirelessTerminal().maybeStack( 1 ).orElse( myIcon ); this.originalGui = GuiBridge.GUI_WIRELESS_TERM; } if( target instanceof PartTerminal ) { - for( final ItemStack stack : parts.terminal().maybeStack( 1 ).asSet() ) - { - myIcon = stack; - } + myIcon = parts.terminal().maybeStack( 1 ).orElse( null ); this.originalGui = GuiBridge.GUI_ME; } if( target instanceof PartCraftingTerminal ) { - for( final ItemStack stack : parts.craftingTerminal().maybeStack( 1 ).asSet() ) - { - myIcon = stack; - } + myIcon = parts.craftingTerminal().maybeStack( 1 ).orElse( null ); this.originalGui = GuiBridge.GUI_CRAFTING_TERMINAL; } if( target instanceof PartPatternTerminal ) { - for( final ItemStack stack : parts.patternTerminal().maybeStack( 1 ).asSet() ) - { - myIcon = stack; - } + myIcon = parts.patternTerminal().maybeStack( 1 ).orElse( null ); this.originalGui = GuiBridge.GUI_PATTERN_TERMINAL; } diff --git a/src/main/java/appeng/client/gui/implementations/GuiCraftingStatus.java b/src/main/java/appeng/client/gui/implementations/GuiCraftingStatus.java index 58916bf4..852e4c36 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiCraftingStatus.java +++ b/src/main/java/appeng/client/gui/implementations/GuiCraftingStatus.java @@ -70,38 +70,29 @@ public class GuiCraftingStatus extends GuiCraftingCPU if( target instanceof WirelessTerminalGuiObject ) { - for( final ItemStack wirelessTerminalStack : definitions.items().wirelessTerminal().maybeStack( 1 ).asSet() ) - { - this.myIcon = wirelessTerminalStack; - } + myIcon = definitions.items().wirelessTerminal().maybeStack( 1 ).orElse( null ); this.originalGui = GuiBridge.GUI_WIRELESS_TERM; } if( target instanceof PartTerminal ) { - for( final ItemStack stack : parts.terminal().maybeStack( 1 ).asSet() ) - { - this.myIcon = stack; - } + myIcon = parts.terminal().maybeStack( 1 ).orElse( null ); + this.originalGui = GuiBridge.GUI_ME; } if( target instanceof PartCraftingTerminal ) { - for( final ItemStack stack : parts.craftingTerminal().maybeStack( 1 ).asSet() ) - { - this.myIcon = stack; - } + myIcon = parts.craftingTerminal().maybeStack( 1 ).orElse( null ); + this.originalGui = GuiBridge.GUI_CRAFTING_TERMINAL; } if( target instanceof PartPatternTerminal ) { - for( final ItemStack stack : parts.patternTerminal().maybeStack( 1 ).asSet() ) - { - this.myIcon = stack; - } + myIcon = parts.patternTerminal().maybeStack( 1 ).orElse( null ); + this.originalGui = GuiBridge.GUI_PATTERN_TERMINAL; } } diff --git a/src/main/java/appeng/client/gui/implementations/GuiIOPort.java b/src/main/java/appeng/client/gui/implementations/GuiIOPort.java index 6be010a4..782f46a5 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiIOPort.java +++ b/src/main/java/appeng/client/gui/implementations/GuiIOPort.java @@ -25,7 +25,6 @@ import org.lwjgl.input.Mouse; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.item.ItemStack; import appeng.api.AEApi; import appeng.api.config.FullnessMode; @@ -94,15 +93,9 @@ public class GuiIOPort extends GuiUpgradeable final IDefinitions definitions = AEApi.instance().definitions(); - for( final ItemStack cell1kStack : definitions.items().cell1k().maybeStack( 1 ).asSet() ) - { - this.drawItem( offsetX + 66 - 8, offsetY + 17, cell1kStack ); - } + definitions.items().cell1k().maybeStack( 1 ).ifPresent( cell1kStack -> this.drawItem( offsetX + 66 - 8, offsetY + 17, cell1kStack ) ); - for( final ItemStack driveStack : definitions.blocks().drive().maybeStack( 1 ).asSet() ) - { - this.drawItem( offsetX + 94 + 8, offsetY + 17, driveStack ); - } + definitions.blocks().drive().maybeStack( 1 ).ifPresent( driveStack -> this.drawItem( offsetX + 94 + 8, offsetY + 17, driveStack ) ); } @Override diff --git a/src/main/java/appeng/client/gui/implementations/GuiPriority.java b/src/main/java/appeng/client/gui/implementations/GuiPriority.java index 4006584d..af359624 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiPriority.java +++ b/src/main/java/appeng/client/gui/implementations/GuiPriority.java @@ -100,58 +100,37 @@ public class GuiPriority extends AEBaseGui if( target instanceof PartStorageBus ) { - for( final ItemStack storageBusStack : parts.storageBus().maybeStack( 1 ).asSet() ) - { - myIcon = storageBusStack; - } + myIcon = parts.storageBus().maybeStack( 1 ).orElse( myIcon ); this.OriginalGui = GuiBridge.GUI_STORAGEBUS; } if( target instanceof PartFormationPlane ) { - for( final ItemStack formationPlaneStack : parts.formationPlane().maybeStack( 1 ).asSet() ) - { - myIcon = formationPlaneStack; - } + myIcon = parts.formationPlane().maybeStack( 1 ).orElse( myIcon ); this.OriginalGui = GuiBridge.GUI_FORMATION_PLANE; } if( target instanceof TileDrive ) { - for( final ItemStack driveStack : blocks.drive().maybeStack( 1 ).asSet() ) - { - myIcon = driveStack; - } - + myIcon = blocks.drive().maybeStack( 1 ).orElse( myIcon ); this.OriginalGui = GuiBridge.GUI_DRIVE; } if( target instanceof TileChest ) { - for( final ItemStack chestStack : blocks.chest().maybeStack( 1 ).asSet() ) - { - myIcon = chestStack; - } - + myIcon = blocks.chest().maybeStack( 1 ).orElse( myIcon ); this.OriginalGui = GuiBridge.GUI_CHEST; } if( target instanceof TileInterface ) { - for( final ItemStack interfaceStack : blocks.iface().maybeStack( 1 ).asSet() ) - { - myIcon = interfaceStack; - } - + myIcon = blocks.iface().maybeStack( 1 ).orElse( myIcon ); this.OriginalGui = GuiBridge.GUI_INTERFACE; } if( target instanceof PartInterface ) { - for( final ItemStack interfaceStack : parts.iface().maybeStack( 1 ).asSet() ) - { - myIcon = interfaceStack; - } + myIcon = parts.iface().maybeStack( 1 ).orElse( myIcon ); this.OriginalGui = GuiBridge.GUI_INTERFACE; } diff --git a/src/main/java/appeng/container/implementations/ContainerInscriber.java b/src/main/java/appeng/container/implementations/ContainerInscriber.java index 220b139b..5ace4636 100644 --- a/src/main/java/appeng/container/implementations/ContainerInscriber.java +++ b/src/main/java/appeng/container/implementations/ContainerInscriber.java @@ -126,11 +126,11 @@ public class ContainerInscriber extends ContainerUpgradeable implements IProgres for( final IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes() ) { - final boolean matchA = ( top == null && !recipe.getTopOptional().isPresent() ) || ( Platform.isSameItemPrecise( top, recipe.getTopOptional().orNull() ) ) && // and... - ( bot == null && !recipe.getBottomOptional().isPresent() ) | ( Platform.isSameItemPrecise( bot, recipe.getBottomOptional().orNull() ) ); + 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().orElse( null ) ) ); - final boolean matchB = ( bot == null && !recipe.getTopOptional().isPresent() ) || ( Platform.isSameItemPrecise( bot, recipe.getTopOptional().orNull() ) ) && // and... - ( top == null && !recipe.getBottomOptional().isPresent() ) | ( Platform.isSameItemPrecise( top, recipe.getBottomOptional().orNull() ) ); + 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().orElse( null ) ) ); if( matchA || matchB ) { @@ -174,13 +174,13 @@ public class ContainerInscriber extends ContainerUpgradeable implements IProgres boolean isValid = false; 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 ) diff --git a/src/main/java/appeng/container/implementations/ContainerPatternTerm.java b/src/main/java/appeng/container/implementations/ContainerPatternTerm.java index 560014bd..e11dea15 100644 --- a/src/main/java/appeng/container/implementations/ContainerPatternTerm.java +++ b/src/main/java/appeng/container/implementations/ContainerPatternTerm.java @@ -21,6 +21,7 @@ package appeng.container.implementations; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -216,9 +217,10 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA } // add a new encoded pattern. - for( final ItemStack encodedPatternStack : AEApi.instance().definitions().items().encodedPattern().maybeStack( 1 ).asSet() ) + Optional maybePattern = AEApi.instance().definitions().items().encodedPattern().maybeStack( 1 ); + if( maybePattern.isPresent() ) { - output = encodedPatternStack; + output = maybePattern.get(); this.patternSlotOUT.putStack( output ); } } diff --git a/src/main/java/appeng/container/implementations/ContainerQuartzKnife.java b/src/main/java/appeng/container/implementations/ContainerQuartzKnife.java index fa22e680..4d34a9f9 100644 --- a/src/main/java/appeng/container/implementations/ContainerQuartzKnife.java +++ b/src/main/java/appeng/container/implementations/ContainerQuartzKnife.java @@ -24,7 +24,6 @@ import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumHand; import net.minecraft.util.text.ITextComponent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent; @@ -138,13 +137,13 @@ public class ContainerQuartzKnife extends AEBaseContainer implements IAEAppEngIn { 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 ); compound.setString( "InscribeName", this.myName ); return namePressStack; - } + } ).orElse( null ); } } diff --git a/src/main/java/appeng/core/CreativeTab.java b/src/main/java/appeng/core/CreativeTab.java index 3b4f1556..65e2719e 100644 --- a/src/main/java/appeng/core/CreativeTab.java +++ b/src/main/java/appeng/core/CreativeTab.java @@ -19,6 +19,8 @@ package appeng.core; +import java.util.Optional; + import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; import net.minecraft.item.Item; @@ -67,9 +69,10 @@ public final class CreativeTab extends CreativeTabs { for( final IItemDefinition definition : choices ) { - for( final ItemStack definitionStack : definition.maybeStack( 1 ).asSet() ) + Optional maybeIs = definition.maybeStack( 1 ); + if( maybeIs.isPresent() ) { - return definitionStack; + return maybeIs.get(); } } diff --git a/src/main/java/appeng/core/CreativeTabFacade.java b/src/main/java/appeng/core/CreativeTabFacade.java index ba6f1062..4daa4a57 100644 --- a/src/main/java/appeng/core/CreativeTabFacade.java +++ b/src/main/java/appeng/core/CreativeTabFacade.java @@ -19,7 +19,7 @@ package appeng.core; -import com.google.common.base.Optional; +import java.util.Optional; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; diff --git a/src/main/java/appeng/core/Registration.java b/src/main/java/appeng/core/Registration.java index e89c9fe6..812fd899 100644 --- a/src/main/java/appeng/core/Registration.java +++ b/src/main/java/appeng/core/Registration.java @@ -26,9 +26,6 @@ import javax.annotation.Nonnull; 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.biome.Biome; import net.minecraftforge.common.MinecraftForge; @@ -297,12 +294,12 @@ public final class Registration registries.cell().addCellHandler( new BasicCellHandler() ); 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; registries.matterCannon().registerAmmo( ammoStack, weight ); - } + } ); this.recipeHandler.injectRecipes(); @@ -342,10 +339,7 @@ public final class Registration GuiText.values(); Api.INSTANCE.partHelper().initFMPSupport(); - for( final Block block : blocks.multiPart().maybeBlock().asSet() ) - { - ( (BlockCableBus) block ).setupTile(); - } + blocks.multiPart().maybeBlock().ifPresent( block -> ( (BlockCableBus) block ).setupTile() ); definitions.getRegistry().getBootstrapComponents().forEach( b -> b.postInitialize( event.getSide() ) ); @@ -414,10 +408,10 @@ public final class Registration // Inscriber 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 if( AEConfig.instance.isFeatureEnabled( AEFeature.VillagerTrading ) ) diff --git a/src/main/java/appeng/core/features/BlockDefinition.java b/src/main/java/appeng/core/features/BlockDefinition.java index b4b7a03d..7f09fcf4 100644 --- a/src/main/java/appeng/core/features/BlockDefinition.java +++ b/src/main/java/appeng/core/features/BlockDefinition.java @@ -19,7 +19,7 @@ package appeng.core.features; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.base.Preconditions; import net.minecraft.block.Block; @@ -38,7 +38,7 @@ public class BlockDefinition extends ItemDefinition implements IBlockDefinition public BlockDefinition( String registryName, Block block, ItemBlock item ) { super( registryName, item ); - this.block = Optional.fromNullable( block ); + this.block = Optional.ofNullable( block ); } @Override @@ -50,7 +50,7 @@ public class BlockDefinition extends ItemDefinition implements IBlockDefinition @Override public final Optional maybeItemBlock() { - return this.block.transform( ItemBlock::new ); + return this.block.map( ItemBlock::new ); } @Override @@ -58,12 +58,12 @@ public class BlockDefinition extends ItemDefinition implements IBlockDefinition { Preconditions.checkArgument( stackSize > 0 ); - return this.block.transform( b -> new ItemStack( b, stackSize ) ); + return this.block.map( b -> new ItemStack( b, stackSize ) ); } @Override 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(); } } diff --git a/src/main/java/appeng/core/features/DamagedItemDefinition.java b/src/main/java/appeng/core/features/DamagedItemDefinition.java index 775b032e..9764b8b0 100644 --- a/src/main/java/appeng/core/features/DamagedItemDefinition.java +++ b/src/main/java/appeng/core/features/DamagedItemDefinition.java @@ -19,10 +19,9 @@ package appeng.core.features; +import java.util.Optional; import javax.annotation.Nonnull; -import com.google.common.base.Function; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import net.minecraft.item.Item; @@ -34,7 +33,6 @@ import appeng.api.definitions.IItemDefinition; public final class DamagedItemDefinition implements IItemDefinition { private final String identifier; - private static final ItemTransformer ITEM_TRANSFORMER = new ItemTransformer(); private final Optional source; public DamagedItemDefinition( @Nonnull final String identifier, @Nonnull final IStackSrc source ) @@ -48,7 +46,7 @@ public final class DamagedItemDefinition implements IItemDefinition } else { - this.source = Optional.absent(); + this.source = Optional.empty(); } } @@ -62,13 +60,13 @@ public final class DamagedItemDefinition implements IItemDefinition @Override public Optional maybeItem() { - return this.source.transform( ITEM_TRANSFORMER ); + return this.source.map( IStackSrc::getItem ); } @Override public Optional maybeStack( final int stackSize ) { - return this.source.transform( new ItemStackTransformer( stackSize ) ); + return this.source.map( input -> input.stack( stackSize )); } @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(); } - private static class ItemTransformer implements Function - { - @Override - public Item apply( final IStackSrc input ) - { - return input.getItem(); - } - } - - private static class ItemStackTransformer implements Function - { - 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 ); - } - } } diff --git a/src/main/java/appeng/core/features/ItemDefinition.java b/src/main/java/appeng/core/features/ItemDefinition.java index 842d2ca3..21805aa5 100644 --- a/src/main/java/appeng/core/features/ItemDefinition.java +++ b/src/main/java/appeng/core/features/ItemDefinition.java @@ -19,10 +19,9 @@ package appeng.core.features; +import java.util.Optional; 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.Strings; @@ -42,7 +41,7 @@ public class ItemDefinition implements IItemDefinition { Preconditions.checkArgument( !Strings.isNullOrEmpty( registryName ), "registryName" ); this.identifier = registryName; - this.item = Optional.fromNullable( item ); + this.item = Optional.ofNullable( item ); } @Nonnull @@ -61,7 +60,7 @@ public class ItemDefinition implements IItemDefinition @Override public Optional maybeStack( final int stackSize ) { - return this.item.transform( new ItemStackTransformer( stackSize ) ); + return this.item.map( item -> new ItemStack( item, stackSize ) ); } @Override @@ -73,24 +72,7 @@ public class ItemDefinition implements IItemDefinition @Override 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 - { - 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 ); - } - } } diff --git a/src/main/java/appeng/core/features/TileDefinition.java b/src/main/java/appeng/core/features/TileDefinition.java index 9afa4aac..b2bea57c 100644 --- a/src/main/java/appeng/core/features/TileDefinition.java +++ b/src/main/java/appeng/core/features/TileDefinition.java @@ -19,10 +19,9 @@ package appeng.core.features; +import java.util.Optional; import javax.annotation.Nonnull; -import com.google.common.base.Optional; - import net.minecraft.item.ItemBlock; 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 ) { super( registryName, block, item ); - this.block = Optional.fromNullable( block ); + this.block = Optional.ofNullable( block ); } @Override public Optional> maybeEntity() { - return this.block.transform( AEBaseTileBlock::getTileEntityClass ); + return this.block.map( AEBaseTileBlock::getTileEntityClass ); } } diff --git a/src/main/java/appeng/core/features/registries/InscriberRegistry.java b/src/main/java/appeng/core/features/registries/InscriberRegistry.java index b19975eb..512f81d7 100644 --- a/src/main/java/appeng/core/features/registries/InscriberRegistry.java +++ b/src/main/java/appeng/core/features/registries/InscriberRegistry.java @@ -94,8 +94,8 @@ public final class InscriberRegistry implements IInscriberRegistry this.recipes.add( recipe ); - this.optionals.addAll( recipe.getTopOptional().asSet() ); - this.optionals.addAll( recipe.getBottomOptional().asSet() ); + recipe.getTopOptional().ifPresent( optionals::add ); + recipe.getBottomOptional().ifPresent( optionals::add ); this.inputs.addAll( recipe.getInputs() ); } diff --git a/src/main/java/appeng/core/features/registries/P2PTunnelRegistry.java b/src/main/java/appeng/core/features/registries/P2PTunnelRegistry.java index a58227ce..8d6e1d2c 100644 --- a/src/main/java/appeng/core/features/registries/P2PTunnelRegistry.java +++ b/src/main/java/appeng/core/features/registries/P2PTunnelRegistry.java @@ -172,9 +172,6 @@ public final class P2PTunnelRegistry implements IP2PTunnelRegistry private void addNewAttunement( final IItemDefinition definition, final TunnelType type ) { - for( final ItemStack definitionStack : definition.maybeStack( 1 ).asSet() ) - { - this.addNewAttunement( definitionStack, type ); - } + definition.maybeStack( 1 ).ifPresent( definitionStack -> addNewAttunement( definitionStack, type ) ); } } diff --git a/src/main/java/appeng/core/features/registries/entries/InscriberRecipe.java b/src/main/java/appeng/core/features/registries/entries/InscriberRecipe.java index 36b7a657..6f44afba 100644 --- a/src/main/java/appeng/core/features/registries/entries/InscriberRecipe.java +++ b/src/main/java/appeng/core/features/registries/entries/InscriberRecipe.java @@ -9,7 +9,7 @@ import java.util.List; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import com.google.common.base.Optional; +import java.util.Optional; import net.minecraft.item.ItemStack; @@ -47,8 +47,8 @@ public class InscriberRecipe implements IInscriberRecipe this.inputs.addAll( inputs ); this.output = output; - this.maybeTop = Optional.fromNullable( top ); - this.maybeBot = Optional.fromNullable( bot ); + this.maybeTop = Optional.ofNullable( top ); + this.maybeBot = Optional.ofNullable( bot ); this.type = type; } diff --git a/src/main/java/appeng/core/stats/Achievements.java b/src/main/java/appeng/core/stats/Achievements.java index 3501fe68..e64e69a4 100644 --- a/src/main/java/appeng/core/stats/Achievements.java +++ b/src/main/java/appeng/core/stats/Achievements.java @@ -124,7 +124,7 @@ public enum Achievements 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.x = x; this.y = y; diff --git a/src/main/java/appeng/core/worlddata/IWorldPlayerMapping.java b/src/main/java/appeng/core/worlddata/IWorldPlayerMapping.java index b755fc86..30c12c59 100644 --- a/src/main/java/appeng/core/worlddata/IWorldPlayerMapping.java +++ b/src/main/java/appeng/core/worlddata/IWorldPlayerMapping.java @@ -23,7 +23,7 @@ import java.util.UUID; import javax.annotation.Nonnull; -import com.google.common.base.Optional; +import java.util.Optional; /** diff --git a/src/main/java/appeng/core/worlddata/PlayerData.java b/src/main/java/appeng/core/worlddata/PlayerData.java index 960d2e6b..28073f0e 100644 --- a/src/main/java/appeng/core/worlddata/PlayerData.java +++ b/src/main/java/appeng/core/worlddata/PlayerData.java @@ -24,7 +24,7 @@ import java.util.UUID; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.base.Preconditions; import com.mojang.authlib.GameProfile; diff --git a/src/main/java/appeng/core/worlddata/PlayerMapping.java b/src/main/java/appeng/core/worlddata/PlayerMapping.java index bc8e9900..ce3a117c 100644 --- a/src/main/java/appeng/core/worlddata/PlayerMapping.java +++ b/src/main/java/appeng/core/worlddata/PlayerMapping.java @@ -24,7 +24,7 @@ import java.util.UUID; import javax.annotation.Nonnull; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.base.Preconditions; import net.minecraftforge.common.config.ConfigCategory; @@ -57,7 +57,7 @@ final class PlayerMapping implements IWorldPlayerMapping { final UUID maybe = this.mappings.get( id ); - return Optional.fromNullable( maybe ); + return Optional.ofNullable( maybe ); } @Override diff --git a/src/main/java/appeng/decorative/solid/BlockChargedQuartzOre.java b/src/main/java/appeng/decorative/solid/BlockChargedQuartzOre.java index 104f2b93..ae757862 100644 --- a/src/main/java/appeng/decorative/solid/BlockChargedQuartzOre.java +++ b/src/main/java/appeng/decorative/solid/BlockChargedQuartzOre.java @@ -24,7 +24,6 @@ import java.util.Random; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; @@ -49,27 +48,20 @@ public final class BlockChargedQuartzOre extends BlockQuartzOre @Override public Item getItemDropped( final IBlockState state, final Random rand, final int fortune ) { - for( final Item charged : AEApi.instance().definitions().materials().certusQuartzCrystalCharged().maybeItem().asSet() ) - { - return charged; - } - - throw new MissingDefinition( "Tried to access charged certus quartz crystal, even though they are disabled" ); + return AEApi.instance().definitions().materials().certusQuartzCrystalCharged().maybeItem() + .orElseThrow( () -> new MissingDefinition( "Tried to access charged certus quartz crystal, even though they are disabled" ) ); } @Override public int damageDropped( final IBlockState state ) { - for( final ItemStack crystalStack : AEApi.instance().definitions().materials().certusQuartzCrystalCharged().maybeStack( 1 ).asSet() ) - { - return crystalStack.getItemDamage(); - } - - throw new MissingDefinition( "Tried to access charged certus quartz crystal, even though they are disabled" ); + return AEApi.instance().definitions().materials().certusQuartzCrystalCharged().maybeStack( 1 ) + .orElseThrow( () -> new MissingDefinition( "Tried to access charged certus quartz crystal, even though they are disabled" ) ) + .getItemDamage(); } @Override - @SideOnly( Side.CLIENT) + @SideOnly( Side.CLIENT ) public void randomDisplayTick( final IBlockState state, final World w, final BlockPos pos, final Random r ) { if( !AEConfig.instance.enableEffects ) diff --git a/src/main/java/appeng/decorative/solid/BlockQuartzOre.java b/src/main/java/appeng/decorative/solid/BlockQuartzOre.java index 5484af4c..1f5594a8 100644 --- a/src/main/java/appeng/decorative/solid/BlockQuartzOre.java +++ b/src/main/java/appeng/decorative/solid/BlockQuartzOre.java @@ -24,7 +24,6 @@ import java.util.Random; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; @@ -94,12 +93,8 @@ public class BlockQuartzOre extends AEBaseBlock public Item getItemDropped( final IBlockState state, /* is null */ final Random rand, final int fortune ) { - for( final Item crystalItem : AEApi.instance().definitions().materials().certusQuartzCrystal().maybeItem().asSet() ) - { - return crystalItem; - } - - throw new MissingDefinition( "Tried to access certus quartz crystal, even though they are disabled" ); + return AEApi.instance().definitions().materials().certusQuartzCrystal().maybeItem() + .orElseThrow( () -> new MissingDefinition( "Tried to access certus quartz crystal, even though they are disabled" ) ); } @Override @@ -118,12 +113,9 @@ public class BlockQuartzOre extends AEBaseBlock @Override public int damageDropped( final IBlockState state ) { - for( final ItemStack crystalStack : AEApi.instance().definitions().materials().certusQuartzCrystal().maybeStack( 1 ).asSet() ) - { - return crystalStack.getItemDamage(); - } - - throw new MissingDefinition( "Tried to access certus quartz crystal, even though they are disabled" ); + return AEApi.instance().definitions().materials().certusQuartzCrystal().maybeStack( 1 ) + .orElseThrow( () -> new MissingDefinition( "Tried to access certus quartz crystal, even though they are disabled" ) ) + .getItemDamage(); } @Override diff --git a/src/main/java/appeng/entity/EntityChargedQuartz.java b/src/main/java/appeng/entity/EntityChargedQuartz.java index aa1590a9..de474343 100644 --- a/src/main/java/appeng/entity/EntityChargedQuartz.java +++ b/src/main/java/appeng/entity/EntityChargedQuartz.java @@ -153,12 +153,12 @@ public final class EntityChargedQuartz extends AEBaseEntityItem 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 ); - } + } ); return true; } diff --git a/src/main/java/appeng/entity/EntitySingularity.java b/src/main/java/appeng/entity/EntitySingularity.java index c7f0ef16..f4d6c0a2 100644 --- a/src/main/java/appeng/entity/EntitySingularity.java +++ b/src/main/java/appeng/entity/EntitySingularity.java @@ -128,7 +128,7 @@ public final class EntitySingularity extends AEBaseEntityItem e.setDead(); } - for( final ItemStack singularityStack : materials.qESingularity().maybeStack( 2 ).asSet() ) + materials.qESingularity().maybeStack( 2 ).ifPresent( singularityStack -> { final NBTTagCompound cmp = Platform.openNbtData( singularityStack ); 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 ); this.worldObj.spawnEntityInWorld( entity ); - } + } ); } if( item.stackSize <= 0 ) diff --git a/src/main/java/appeng/entity/EntityTinyTNTPrimed.java b/src/main/java/appeng/entity/EntityTinyTNTPrimed.java index 1d478037..c8b898fc 100644 --- a/src/main/java/appeng/entity/EntityTinyTNTPrimed.java +++ b/src/main/java/appeng/entity/EntityTinyTNTPrimed.java @@ -29,7 +29,6 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityTNTPrimed; import net.minecraft.init.SoundEvents; -import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; import net.minecraft.util.EnumParticleTypes; 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. { - 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 ); @@ -103,7 +102,7 @@ public final class EntityTinyTNTPrimed extends EntityTNTPrimed implements IEntit this.worldObj.spawnEntityInWorld( item ); this.setDead(); - } + } ); } if( this.getFuse() <= 0 ) diff --git a/src/main/java/appeng/facade/FacadeContainer.java b/src/main/java/appeng/facade/FacadeContainer.java index 59ee5072..cabc4587 100644 --- a/src/main/java/appeng/facade/FacadeContainer.java +++ b/src/main/java/appeng/facade/FacadeContainer.java @@ -20,6 +20,7 @@ package appeng.facade; import java.io.IOException; +import java.util.Optional; import io.netty.buffer.ByteBuf; @@ -149,9 +150,9 @@ public class FacadeContainer implements IFacadeContainer } else if( !isBC ) { - for( final Item facadeItem : AEApi.instance().definitions().items().facade().maybeItem().asSet() ) - { - final ItemFacade ifa = (ItemFacade) facadeItem; + Optional maybeFacadeItem = AEApi.instance().definitions().items().facade().maybeItem(); + if (maybeFacadeItem.isPresent()) { + final ItemFacade ifa = (ItemFacade) maybeFacadeItem.get(); final ItemStack facade = ifa.createFromIDs( ids ); if( facade != null ) { diff --git a/src/main/java/appeng/items/misc/ItemCrystalSeed.java b/src/main/java/appeng/items/misc/ItemCrystalSeed.java index 2e9e04a2..0b052aae 100644 --- a/src/main/java/appeng/items/misc/ItemCrystalSeed.java +++ b/src/main/java/appeng/items/misc/ItemCrystalSeed.java @@ -20,6 +20,7 @@ package appeng.items.misc; import java.util.List; +import java.util.Optional; import javax.annotation.Nullable; import net.minecraft.block.Block; @@ -66,16 +67,16 @@ public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal @Nullable public static ResolverResult getResolver( final int certus2 ) { - ResolverResult resolver = null; - for( ItemStack crystalSeedStack : AEApi.instance().definitions().items().crystalSeed().maybeStack( 1 ).asSet() ) - { - crystalSeedStack.setItemDamage( certus2 ); - crystalSeedStack = newStyle( crystalSeedStack ); - resolver = new ResolverResult( "ItemCrystalSeed", crystalSeedStack.getItemDamage(), crystalSeedStack.getTagCompound() ); - } + return AEApi.instance().definitions().items().crystalSeed().maybeStack( 1 ) + .map( crystalSeedStack -> + { + crystalSeedStack.setItemDamage( certus2 ); + crystalSeedStack = newStyle( crystalSeedStack ); + return new ResolverResult( "ItemCrystalSeed", crystalSeedStack.getItemDamage(), crystalSeedStack.getTagCompound() ); + } ) + .orElse( null ); - return resolver; } private static ItemStack newStyle( final ItemStack itemStack ) @@ -110,23 +111,26 @@ public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal if( newDamage == CERTUS + SINGLE_OFFSET ) { - for( final ItemStack quartzStack : materials.purifiedCertusQuartzCrystal().maybeStack( size ).asSet() ) + Optional quartzStack = materials.purifiedCertusQuartzCrystal().maybeStack( size ); + if( quartzStack.isPresent() ) { - return quartzStack; + return quartzStack.get(); } } if( newDamage == NETHER + SINGLE_OFFSET ) { - for( final ItemStack quartzStack : materials.purifiedNetherQuartzCrystal().maybeStack( size ).asSet() ) + Optional quartzStack = materials.purifiedNetherQuartzCrystal().maybeStack( size ); + if( quartzStack.isPresent() ) { - return quartzStack; + return quartzStack.get(); } } if( newDamage == FLUIX + SINGLE_OFFSET ) { - for( final ItemStack quartzStack : materials.purifiedFluixCrystal().maybeStack( size ).asSet() ) + Optional quartzStack = materials.purifiedFluixCrystal().maybeStack( size ); + if( quartzStack.isPresent() ) { - return quartzStack; + return quartzStack.get(); } } if( newDamage > FINAL_STAGE ) diff --git a/src/main/java/appeng/items/misc/ItemEncodedPattern.java b/src/main/java/appeng/items/misc/ItemEncodedPattern.java index bb0e3a4b..356048c7 100644 --- a/src/main/java/appeng/items/misc/ItemEncodedPattern.java +++ b/src/main/java/appeng/items/misc/ItemEncodedPattern.java @@ -80,16 +80,16 @@ public class ItemEncodedPattern extends AEBaseItem implements ICraftingPatternIt 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; } } } diff --git a/src/main/java/appeng/items/parts/ItemFacade.java b/src/main/java/appeng/items/parts/ItemFacade.java index ee0d372b..abde47a6 100644 --- a/src/main/java/appeng/items/parts/ItemFacade.java +++ b/src/main/java/appeng/items/parts/ItemFacade.java @@ -250,16 +250,14 @@ public class ItemFacade extends AEBaseItem implements IFacadeItem, IAlphaPassIte public ItemStack createFromIDs( final int[] ids ) { - for( final ItemStack facadeStack : AEApi.instance().definitions().items().facade().maybeStack( 1 ).asSet() ) - { - final NBTTagCompound facadeTag = new NBTTagCompound(); - facadeTag.setIntArray( "x", ids.clone() ); - facadeStack.setTagCompound( facadeTag ); + ItemStack facadeStack = AEApi.instance().definitions().items().facade().maybeStack( 1 ) + .orElseThrow( () -> new MissingDefinition( "Tried to create a facade, while facades are being deactivated." ) ); - 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 diff --git a/src/main/java/appeng/items/storage/ItemBasicStorageCell.java b/src/main/java/appeng/items/storage/ItemBasicStorageCell.java index a9255024..1b5a63e5 100644 --- a/src/main/java/appeng/items/storage/ItemBasicStorageCell.java +++ b/src/main/java/appeng/items/storage/ItemBasicStorageCell.java @@ -259,14 +259,14 @@ public final class ItemBasicStorageCell extends AEBaseItem implements IStorageCe } // 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 ) { player.dropItem( extraA, false ); } - } + } ); if( player.inventoryContainer != null ) { @@ -289,12 +289,8 @@ public final class ItemBasicStorageCell extends AEBaseItem implements IStorageCe @Override public ItemStack getContainerItem( final ItemStack itemStack ) { - for( final ItemStack stack : AEApi.instance().definitions().materials().emptyStorageCell().maybeStack( 1 ).asSet() ) - { - return stack; - } - - throw new MissingDefinition( "Tried to use empty storage cells while basic storage cells are defined." ); + return AEApi.instance().definitions().materials().emptyStorageCell().maybeStack( 1 ) + .orElseThrow( () -> new MissingDefinition( "Tried to use empty storage cells while basic storage cells are defined." ) ); } @Override diff --git a/src/main/java/appeng/items/tools/powered/ToolMassCannon.java b/src/main/java/appeng/items/tools/powered/ToolMassCannon.java index 17bf1c11..0e2fa7e3 100644 --- a/src/main/java/appeng/items/tools/powered/ToolMassCannon.java +++ b/src/main/java/appeng/items/tools/powered/ToolMassCannon.java @@ -293,10 +293,10 @@ public class ToolMassCannon extends AEBasePoweredItem implements IStorageCell final Block whatsThere = w.getBlockState( hitPos ).getBlock(); 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 ); - } + } ); } final TileEntity te = w.getTileEntity( hitPos ); diff --git a/src/main/java/appeng/items/tools/powered/powersink/IC2.java b/src/main/java/appeng/items/tools/powered/powersink/IC2.java index eea80ebd..7d306dbc 100644 --- a/src/main/java/appeng/items/tools/powered/powersink/IC2.java +++ b/src/main/java/appeng/items/tools/powered/powersink/IC2.java @@ -19,7 +19,7 @@ package appeng.items.tools.powered.powersink; -//import com.google.common.base.Optional; +//import java.util.Optional; // //import net.minecraft.entity.EntityLivingBase; //import net.minecraft.item.Item; diff --git a/src/main/java/appeng/items/tools/powered/powersink/RedstoneFlux.java b/src/main/java/appeng/items/tools/powered/powersink/RedstoneFlux.java index bebd8b1b..bb12c87d 100644 --- a/src/main/java/appeng/items/tools/powered/powersink/RedstoneFlux.java +++ b/src/main/java/appeng/items/tools/powered/powersink/RedstoneFlux.java @@ -19,7 +19,7 @@ package appeng.items.tools.powered.powersink; -//import com.google.common.base.Optional; +//import java.util.Optional; // //import net.minecraft.item.ItemStack; // diff --git a/src/main/java/appeng/loot/ChestLoot.java b/src/main/java/appeng/loot/ChestLoot.java index 04964c67..c899ae9e 100644 --- a/src/main/java/appeng/loot/ChestLoot.java +++ b/src/main/java/appeng/loot/ChestLoot.java @@ -1,9 +1,6 @@ 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.LootEntryItem; 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. final IMaterials materials = AEApi.instance().definitions().materials(); - event.getTable().addPool( new LootPool( ( ( FluentIterable ) 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" ) ); - event.getTable().addPool( new LootPool( ( ( FluentIterable ) 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" ) ); + materials.certusQuartzCrystal().maybeStack( 1 ).ifPresent( is -> + { + 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" + ) + ); + } ); + } } diff --git a/src/main/java/appeng/me/cluster/implementations/QuantumCalculator.java b/src/main/java/appeng/me/cluster/implementations/QuantumCalculator.java index a5764a83..c8f28ce0 100644 --- a/src/main/java/appeng/me/cluster/implementations/QuantumCalculator.java +++ b/src/main/java/appeng/me/cluster/implementations/QuantumCalculator.java @@ -19,7 +19,6 @@ package appeng.me.cluster.implementations; -import net.minecraft.block.Block; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; 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 ) { - for( final Block block : def.maybeBlock().asSet() ) - { - return block == w.getBlockState( pos ).getBlock(); - } - - return false; + return def.maybeBlock().map( block -> block == w.getBlockState( pos ).getBlock() ).orElse( false ); } } diff --git a/src/main/java/appeng/parts/AEBasePart.java b/src/main/java/appeng/parts/AEBasePart.java index bbc851b5..3f856307 100644 --- a/src/main/java/appeng/parts/AEBasePart.java +++ b/src/main/java/appeng/parts/AEBasePart.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; +import java.util.Optional; import java.util.Random; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -479,9 +480,10 @@ public abstract class AEBasePart implements IPart, IGridProxyable, IActionHost, final IDefinitions definitions = AEApi.instance().definitions(); if( definitions.parts().iface().isSameAs( is ) ) { - for( final ItemStack iface : definitions.blocks().iface().maybeStack( 1 ).asSet() ) + Optional iface = definitions.blocks().iface().maybeStack( 1 ); + if( iface.isPresent() ) { - is = iface; + is = iface.get(); } } diff --git a/src/main/java/appeng/parts/PartPlacement.java b/src/main/java/appeng/parts/PartPlacement.java index 200b48f9..66361ec5 100644 --- a/src/main/java/appeng/parts/PartPlacement.java +++ b/src/main/java/appeng/parts/PartPlacement.java @@ -22,7 +22,7 @@ package appeng.parts; import java.util.LinkedList; import java.util.List; -import com.google.common.base.Optional; +import java.util.Optional; import net.minecraft.block.Block; import net.minecraft.block.SoundType; @@ -379,12 +379,11 @@ public class PartPlacement final AEPartLocation mySide = host.addPart( held, AEPartLocation.fromFacing( side ), player, hand ); if( mySide != null ) { - for( final Block multiPartBlock : multiPart.maybeBlock().asSet() ) - { + multiPart.maybeBlock().ifPresent( multiPartBlock -> { 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 ); - } + }); if( !player.capabilities.isCreativeMode ) { diff --git a/src/main/java/appeng/parts/p2p/PartP2PTunnel.java b/src/main/java/appeng/parts/p2p/PartP2PTunnel.java index 0db84100..027f33a8 100644 --- a/src/main/java/appeng/parts/p2p/PartP2PTunnel.java +++ b/src/main/java/appeng/parts/p2p/PartP2PTunnel.java @@ -21,17 +21,13 @@ package appeng.parts.p2p; import java.util.ArrayList; 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.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumHand; 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.config.Actionable; @@ -216,17 +212,14 @@ public abstract class PartP2PTunnel extends PartBasicSt } else if( tt != null ) // attunement { - ItemStack newType = null; + final ItemStack newType; final IParts parts = AEApi.instance().definitions().parts(); switch( tt ) { case LIGHT: - for( final ItemStack stack : parts.p2PTunnelLight().maybeStack( 1 ).asSet() ) - { - newType = stack; - } + newType = parts.p2PTunnelLight().maybeStack( 1 ).orElse( null ); break; /* @@ -239,10 +232,7 @@ public abstract class PartP2PTunnel extends PartBasicSt */ case FLUID: - for( final ItemStack stack : parts.p2PTunnelLiquids().maybeStack( 1 ).asSet() ) - { - newType = stack; - } + newType = parts.p2PTunnelLiquids().maybeStack( 1 ).orElse( null ); break; /* @@ -255,24 +245,15 @@ public abstract class PartP2PTunnel extends PartBasicSt */ case ITEM: - for( final ItemStack stack : parts.p2PTunnelItems().maybeStack( 1 ).asSet() ) - { - newType = stack; - } + newType = parts.p2PTunnelItems().maybeStack( 1 ).orElse( null ); break; case ME: - for( final ItemStack stack : parts.p2PTunnelME().maybeStack( 1 ).asSet() ) - { - newType = stack; - } + newType = parts.p2PTunnelME().maybeStack( 1 ).orElse( null ); break; case REDSTONE: - for( final ItemStack stack : parts.p2PTunnelRedstone().maybeStack( 1 ).asSet() ) - { - newType = stack; - } + newType = parts.p2PTunnelRedstone().maybeStack( 1 ).orElse( null ); break; /* @@ -291,6 +272,7 @@ public abstract class PartP2PTunnel extends PartBasicSt */ default: + newType = null; break; } diff --git a/src/main/java/appeng/recipes/RecipeHandler.java b/src/main/java/appeng/recipes/RecipeHandler.java index 99786fd7..6f8de945 100644 --- a/src/main/java/appeng/recipes/RecipeHandler.java +++ b/src/main/java/appeng/recipes/RecipeHandler.java @@ -34,7 +34,7 @@ import java.util.zip.ZipOutputStream; import javax.annotation.Nonnull; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.HashMultimap; diff --git a/src/main/java/appeng/recipes/game/DisassembleRecipe.java b/src/main/java/appeng/recipes/game/DisassembleRecipe.java index 4c37d501..a5a56016 100644 --- a/src/main/java/appeng/recipes/game/DisassembleRecipe.java +++ b/src/main/java/appeng/recipes/game/DisassembleRecipe.java @@ -21,12 +21,10 @@ package appeng.recipes.game; import java.util.HashMap; import java.util.Map; - +import java.util.Optional; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import com.google.common.base.Optional; - import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; @@ -100,8 +98,10 @@ public final class DisassembleRecipe implements IRecipe } // handle storage cells - for( final ItemStack storageCellStack : this.getCellOutput( stackInSlot ).asSet() ) + Optional maybeCellOutput = this.getCellOutput( stackInSlot ); + if( maybeCellOutput.isPresent() ) { + ItemStack storageCellStack = maybeCellOutput.get(); // make sure the storage cell stackInSlot empty... final IMEInventory cellInv = AEApi.instance().registries().cell().getCellInventory( stackInSlot, null, StorageChannel.ITEMS ); if( cellInv != null ) @@ -117,10 +117,7 @@ public final class DisassembleRecipe implements IRecipe } // handle crafting storage blocks - for( final ItemStack craftingStorageStack : this.getNonCellOutput( stackInSlot ).asSet() ) - { - output = craftingStorageStack; - } + output = getNonCellOutput( stackInSlot ).orElse( output ); } } @@ -138,7 +135,7 @@ public final class DisassembleRecipe implements IRecipe } } - return Optional.absent(); + return Optional.empty(); } @Nonnull @@ -152,7 +149,7 @@ public final class DisassembleRecipe implements IRecipe } } - return Optional.absent(); + return Optional.empty(); } @Nullable diff --git a/src/main/java/appeng/recipes/game/FacadeRecipe.java b/src/main/java/appeng/recipes/game/FacadeRecipe.java index 63a744cd..f1cd171a 100644 --- a/src/main/java/appeng/recipes/game/FacadeRecipe.java +++ b/src/main/java/appeng/recipes/game/FacadeRecipe.java @@ -19,10 +19,9 @@ package appeng.recipes.game; +import java.util.Optional; import javax.annotation.Nullable; -import com.google.common.base.Optional; - import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryCrafting; 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 ) ) ) { - for( final Item facadeItemDefinition : this.maybeFacade.asSet() ) + return this.maybeFacade.map( facadeItemDefinition -> { final ItemFacade facade = (ItemFacade) facadeItemDefinition; @@ -73,7 +72,7 @@ public final class FacadeRecipe implements IRecipe facades.stackSize = 4; } return facades; - } + } ).orElse( null ); } } diff --git a/src/main/java/appeng/services/CompassService.java b/src/main/java/appeng/services/CompassService.java index 6c8edf96..59675a37 100644 --- a/src/main/java/appeng/services/CompassService.java +++ b/src/main/java/appeng/services/CompassService.java @@ -22,12 +22,12 @@ package appeng.services; import java.io.File; import java.util.HashMap; import java.util.Map; +import java.util.Optional; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; - import javax.annotation.Nonnull; import com.google.common.base.Preconditions; @@ -133,8 +133,10 @@ public final class CompassService // lower level... final Chunk c = w.getChunkFromChunkCoords( cx, cz ); - for( final Block skyStoneBlock : AEApi.instance().definitions().blocks().skyStoneBlock().maybeBlock().asSet() ) + Optional maybeBlock = AEApi.instance().definitions().blocks().skyStoneBlock().maybeBlock(); + if( maybeBlock.isPresent() ) { + Block skyStoneBlock = maybeBlock.get(); for( int i = 0; i < CHUNK_SIZE; i++ ) { for( int j = 0; j < CHUNK_SIZE; j++ ) diff --git a/src/main/java/appeng/spatial/CachedPlane.java b/src/main/java/appeng/spatial/CachedPlane.java index 85b6cbd4..b1fb77d6 100644 --- a/src/main/java/appeng/spatial/CachedPlane.java +++ b/src/main/java/appeng/spatial/CachedPlane.java @@ -403,13 +403,13 @@ public class CachedPlane 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 ) { blk[0] = Platform.AIR_BLOCK; } - } + } ); final ExtendedBlockStorage extendedBlockStorage = this.storage[y >> 4]; extendedBlockStorage.set( this.x, y & 15, this.z, (IBlockState) blk[0] ); diff --git a/src/main/java/appeng/spatial/StorageChunkProvider.java b/src/main/java/appeng/spatial/StorageChunkProvider.java index f9943b0a..e80dad4a 100644 --- a/src/main/java/appeng/spatial/StorageChunkProvider.java +++ b/src/main/java/appeng/spatial/StorageChunkProvider.java @@ -42,13 +42,12 @@ public class StorageChunkProvider extends ChunkProviderOverworld { 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++ ) { BLOCKS[x] = matrixFrameBlock; } - } + } ); } private final World world; diff --git a/src/main/java/appeng/spatial/StorageHelper.java b/src/main/java/appeng/spatial/StorageHelper.java index 28c99f1f..14f5e77c 100644 --- a/src/main/java/appeng/spatial/StorageHelper.java +++ b/src/main/java/appeng/spatial/StorageHelper.java @@ -25,8 +25,6 @@ import java.util.List; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityHanging; -import net.minecraft.entity.EntityList; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; @@ -178,10 +176,9 @@ public class StorageHelper , 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 ) { - for( final Block matrixFrameBlock : AEApi.instance().definitions().blocks().matrixFrame().maybeBlock().asSet() ) - { - this.transverseEdges( i - 1, j - 1, k - 1, i + scaleX + 1, j + scaleY + 1, k + scaleZ + 1, new WrapInMatrixFrame( matrixFrameBlock.getDefaultState(), dst ) ); - } + 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 ) ) + ); final AxisAlignedBB srcBox = new AxisAlignedBB( x, y, z, x + scaleX + 1, y + scaleY + 1, z + scaleZ + 1 ); diff --git a/src/main/java/appeng/tile/AEBaseTile.java b/src/main/java/appeng/tile/AEBaseTile.java index b032fe25..a532c8c1 100644 --- a/src/main/java/appeng/tile/AEBaseTile.java +++ b/src/main/java/appeng/tile/AEBaseTile.java @@ -68,7 +68,7 @@ public class AEBaseTile extends TileEntity implements ITickable, IOrientable, IC private static final ThreadLocal> DROP_NO_ITEMS = new ThreadLocal>(); private static final Map, Map>> HANDLERS = new HashMap, Map>>(); - private static final Map, IStackSrc> ITEM_STACKS = new HashMap, IStackSrc>(); + private static final Map, IStackSrc> ITEM_STACKS = new HashMap<>(); private int renderFragment = 0; @Nullable private String customName; diff --git a/src/main/java/appeng/tile/crafting/TileCraftingStorageTile.java b/src/main/java/appeng/tile/crafting/TileCraftingStorageTile.java index c96b83fe..d202ac58 100644 --- a/src/main/java/appeng/tile/crafting/TileCraftingStorageTile.java +++ b/src/main/java/appeng/tile/crafting/TileCraftingStorageTile.java @@ -19,6 +19,8 @@ package appeng.tile.crafting; +import java.util.Optional; + import net.minecraft.item.ItemStack; import appeng.api.AEApi; @@ -36,29 +38,25 @@ public class TileCraftingStorageTile extends TileCraftingTile final IBlocks blocks = AEApi.instance().definitions().blocks(); final int storage = ( (TileCraftingTile) obj ).getStorageBytes() / KILO_SCALAR; + Optional is; + switch( storage ) { case 4: - for( final ItemStack stack : blocks.craftingStorage4k().maybeStack( 1 ).asSet() ) - { - return stack; - } + is = blocks.craftingStorage4k().maybeStack( 1 ); break; case 16: - for( final ItemStack stack : blocks.craftingStorage16k().maybeStack( 1 ).asSet() ) - { - return stack; - } + is = blocks.craftingStorage16k().maybeStack( 1 ); break; case 64: - for( final ItemStack stack : blocks.craftingStorage64k().maybeStack( 1 ).asSet() ) - { - return stack; - } + is = blocks.craftingStorage64k().maybeStack( 1 ); + break; + default: + is = Optional.empty(); break; } - return super.getItemFromTile( obj ); + return is.orElseGet( () -> super.getItemFromTile( obj ) ); } @Override diff --git a/src/main/java/appeng/tile/crafting/TileCraftingTile.java b/src/main/java/appeng/tile/crafting/TileCraftingTile.java index 8cecd72c..dfb9967e 100644 --- a/src/main/java/appeng/tile/crafting/TileCraftingTile.java +++ b/src/main/java/appeng/tile/crafting/TileCraftingTile.java @@ -23,6 +23,7 @@ import java.util.Collections; import java.util.EnumSet; import java.util.Iterator; import java.util.LinkedList; +import java.util.Optional; import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; @@ -79,15 +80,14 @@ public class TileCraftingTile extends AENetworkTile implements IAEMultiBlock, IP @Override protected ItemStack getItemFromTile( final Object obj ) { + Optional is = Optional.empty(); + if( ( (TileCraftingTile) obj ).isAccelerator() ) { - for( final ItemStack accelerator : AEApi.instance().definitions().blocks().craftingAccelerator().maybeStack( 1 ).asSet() ) - { - return accelerator; - } + is = AEApi.instance().definitions().blocks().craftingAccelerator().maybeStack( 1 ); } - return super.getItemFromTile( obj ); + return is.orElseGet( () -> super.getItemFromTile( obj ) ); } @Override diff --git a/src/main/java/appeng/tile/misc/TileCharger.java b/src/main/java/appeng/tile/misc/TileCharger.java index a99d8a21..1873977b 100644 --- a/src/main/java/appeng/tile/misc/TileCharger.java +++ b/src/main/java/appeng/tile/misc/TileCharger.java @@ -167,10 +167,8 @@ public class TileCharger extends AENetworkPowerTile implements ICrankable, ITick { this.extractAEPower( this.getInternalMaxPower(), Actionable.MODULATE, PowerMultiplier.CONFIG );// 1500 - for( final ItemStack charged : materials.certusQuartzCrystalCharged().maybeStack( myItem.stackSize ).asSet() ) - { - this.setInventorySlotContents( 0, charged ); - } + materials.certusQuartzCrystalCharged().maybeStack( myItem.stackSize ).ifPresent( 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 - for( final ItemStack charged : materials.certusQuartzCrystalCharged().maybeStack( myItem.stackSize ).asSet() ) - { - this.setInventorySlotContents( 0, charged ); - } + materials.certusQuartzCrystalCharged().maybeStack( myItem.stackSize ).ifPresent( charged -> + this.setInventorySlotContents( 0, charged ) ); } } } diff --git a/src/main/java/appeng/tile/misc/TileCondenser.java b/src/main/java/appeng/tile/misc/TileCondenser.java index 4e37969f..c07ce557 100644 --- a/src/main/java/appeng/tile/misc/TileCondenser.java +++ b/src/main/java/appeng/tile/misc/TileCondenser.java @@ -144,21 +144,15 @@ public class TileCondenser extends AEBaseInvTile implements IFluidHandler, IConf switch( (CondenserOutput) this.cm.getSetting( Settings.CONDENSER_OUTPUT ) ) { case MATTER_BALLS: - for( final ItemStack matterBallStack : materials.matterBall().maybeStack( 1 ).asSet() ) - { - return matterBallStack; - } + return materials.matterBall().maybeStack( 1 ).orElse( null ); case SINGULARITY: - for( final ItemStack singularityStack : materials.singularity().maybeStack( 1 ).asSet() ) - { - return singularityStack; - } + return materials.singularity().maybeStack( 1 ).orElse( null ); case TRASH: default: + return null; } - return null; } public double getRequiredPower() diff --git a/src/main/java/appeng/tile/misc/TileInscriber.java b/src/main/java/appeng/tile/misc/TileInscriber.java index e55919bf..5bfee74d 100644 --- a/src/main/java/appeng/tile/misc/TileInscriber.java +++ b/src/main/java/appeng/tile/misc/TileInscriber.java @@ -399,11 +399,11 @@ public class TileInscriber extends AENetworkPowerTile implements IGridTickable, for( final IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes() ) { - final boolean matchA = ( plateA == null && !recipe.getTopOptional().isPresent() ) || ( Platform.isSameItemPrecise( plateA, recipe.getTopOptional().orNull() ) ) && // and... - ( plateB == null && !recipe.getBottomOptional().isPresent() ) | ( Platform.isSameItemPrecise( plateB, recipe.getBottomOptional().orNull() ) ); + 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().orElse( null ) ) ); - final boolean matchB = ( plateB == null && !recipe.getTopOptional().isPresent() ) || ( Platform.isSameItemPrecise( plateB, recipe.getTopOptional().orNull() ) ) && // and... - ( plateA == null && !recipe.getBottomOptional().isPresent() ) | ( Platform.isSameItemPrecise( plateA, recipe.getBottomOptional().orNull() ) ); + 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().orElse( null ) ) ); if( matchA || matchB ) { diff --git a/src/main/java/appeng/tile/qnb/TileQuantumBridge.java b/src/main/java/appeng/tile/qnb/TileQuantumBridge.java index f1e71a5b..51c2fe3b 100644 --- a/src/main/java/appeng/tile/qnb/TileQuantumBridge.java +++ b/src/main/java/appeng/tile/qnb/TileQuantumBridge.java @@ -20,8 +20,7 @@ package appeng.tile.qnb; import java.util.EnumSet; - -import com.google.common.base.Optional; +import java.util.Optional; import io.netty.buffer.ByteBuf; @@ -143,12 +142,9 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock private boolean isCenter() { - for( final Block link : AEApi.instance().definitions().blocks().quantumLink().maybeBlock().asSet() ) - { - return this.getBlockType() == link; - } - - return false; + return AEApi.instance().definitions().blocks().quantumLink().maybeBlock() + .map( link -> getBlockType() == link ) + .orElse( false ); } @MENetworkEventSubscribe diff --git a/src/main/java/appeng/util/ClassInstantiation.java b/src/main/java/appeng/util/ClassInstantiation.java index 583212a9..d1bb4ca0 100644 --- a/src/main/java/appeng/util/ClassInstantiation.java +++ b/src/main/java/appeng/util/ClassInstantiation.java @@ -22,7 +22,7 @@ package appeng.util; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; -import com.google.common.base.Optional; +import java.util.Optional; import appeng.core.AELog; @@ -82,7 +82,7 @@ public class ClassInstantiation } } - return Optional.absent(); + return Optional.empty(); } private boolean isClassMatch( Class expected, Class got, final Object value ) diff --git a/src/main/java/appeng/worldgen/MeteoritePlacer.java b/src/main/java/appeng/worldgen/MeteoritePlacer.java index 5b68cae9..47fb3855 100644 --- a/src/main/java/appeng/worldgen/MeteoritePlacer.java +++ b/src/main/java/appeng/worldgen/MeteoritePlacer.java @@ -94,10 +94,7 @@ public final class MeteoritePlacer this.validSpawn.add( Blocks.SNOW ); this.validSpawn.add( Blocks.STAINED_HARDENED_CLAY ); - for( final Block skyStoneBlock : this.skyStoneDefinition.maybeBlock().asSet() ) - { - this.invalidSpawn.add( skyStoneBlock ); - } + this.skyStoneDefinition.maybeBlock().ifPresent( this.invalidSpawn::add ); this.invalidSpawn.add( Blocks.PLANKS ); this.invalidSpawn.add( Blocks.IRON_DOOR ); 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 ) { - 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 - 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 ) - { - for( final Block skyStoneBlock : this.skyStoneDefinition.maybeBlock().asSet() ) - { - this.putter.put( w, i, j, k, skyStoneBlock ); - } - } - } - } - } + this.skyStoneDefinition.maybeBlock().ifPresent( block -> placeMeteoriteSkyStone( w, x, y, z, block ) ); if( AEConfig.instance.isFeatureEnabled( AEFeature.SpawnPressesInMeteorites ) ) { - for( final Block skyChestBlock : this.skyChestDefinition.maybeBlock().asSet() ) - { - this.putter.put( w, x, y, z, skyChestBlock ); - } + this.skyChestDefinition.maybeBlock().ifPresent( block -> this.putter.put( w, x, y, z, block ) ); final TileEntity te = w.getTileEntity( x, y, z ); if( te instanceof IInventory ) @@ -264,8 +236,8 @@ public final class MeteoritePlacer for( int zz = 0; zz < primary; zz++ ) { - int r = 0; - boolean duplicate = false; + int r; + boolean duplicate; do { @@ -286,28 +258,16 @@ public final class MeteoritePlacer switch( r % 4 ) { case 0: - for( final ItemStack calc : materials.calcProcessorPress().maybeStack( 1 ).asSet() ) - { - toAdd = calc; - } + toAdd = materials.calcProcessorPress().maybeStack( 1 ).orElse( null ); break; case 1: - for( final ItemStack calc : materials.engProcessorPress().maybeStack( 1 ).asSet() ) - { - toAdd = calc; - } + toAdd = materials.engProcessorPress().maybeStack( 1 ).orElse( null ); break; case 2: - for( final ItemStack calc : materials.logicProcessorPress().maybeStack( 1 ).asSet() ) - { - toAdd = calc; - } + toAdd = materials.logicProcessorPress().maybeStack( 1 ).orElse( null ); break; case 3: - for( final ItemStack calc : materials.siliconPress().maybeStack( 1 ).asSet() ) - { - toAdd = calc; - } + toAdd = materials.siliconPress().maybeStack( 1 ).orElse( null ); break; default: } @@ -334,10 +294,7 @@ public final class MeteoritePlacer { case 0: final int amount = (int) ( ( Math.random() * SKYSTONE_SPAWN_LIMIT ) + 1 ); - for( final ItemStack skyStoneStack : this.skyStoneDefinition.maybeStack( amount ).asSet() ) - { - ap.addItems( skyStoneStack ); - } + this.skyStoneDefinition.maybeStack( amount ).ifPresent( ap::addItems ); break; case 1: final List possibles = new LinkedList(); @@ -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 ) { double randomShit = 0; diff --git a/src/main/java/appeng/worldgen/QuartzWorldGen.java b/src/main/java/appeng/worldgen/QuartzWorldGen.java index 8c15f846..2da7395f 100644 --- a/src/main/java/appeng/worldgen/QuartzWorldGen.java +++ b/src/main/java/appeng/worldgen/QuartzWorldGen.java @@ -48,8 +48,8 @@ public final class QuartzWorldGen implements IWorldGenerator final IBlockDefinition oreDefinition = blocks.quartzOre(); final IBlockDefinition chargedDefinition = blocks.quartzOreCharged(); - final Block ore = oreDefinition.maybeBlock().orNull(); - final Block charged = chargedDefinition.maybeBlock().orNull(); + final Block ore = oreDefinition.maybeBlock().orElse( null ); + final Block charged = chargedDefinition.maybeBlock().orElse( null ); this.oreNormal = new WorldGenMinable( ore.getDefaultState(), AEConfig.instance.quartzOresPerCluster ); this.oreCharged = new WorldGenMinable( charged.getDefaultState(), AEConfig.instance.quartzOresPerCluster ); diff --git a/src/main/java/appeng/worldgen/meteorite/Fallout.java b/src/main/java/appeng/worldgen/meteorite/Fallout.java index 229595b3..ab436306 100644 --- a/src/main/java/appeng/worldgen/meteorite/Fallout.java +++ b/src/main/java/appeng/worldgen/meteorite/Fallout.java @@ -2,7 +2,6 @@ package appeng.worldgen.meteorite; -import net.minecraft.block.Block; import net.minecraft.init.Blocks; import appeng.api.definitions.IBlockDefinition; @@ -63,10 +62,7 @@ public class Fallout } else if( a > 0.6 ) { - for( final Block skyStoneBlock : this.skyStoneDefinition.maybeBlock().asSet() ) - { - this.putter.put( w, x, y, z, skyStoneBlock ); - } + skyStoneDefinition.maybeBlock().ifPresent( block -> this.putter.put( w, x, y, z, block ) ); } else if( a > 0.5 ) {