From 970630a90dfe5abafacc3a58d9bcf16e2ac34aa7 Mon Sep 17 00:00:00 2001 From: yueh Date: Tue, 12 Sep 2017 11:39:00 +0200 Subject: [PATCH] Refactored the BaseActionSource (#3063) * Refactored the BaseActionSource It now uses an interface `IActionSource` instead of a concrete class and further subclasses. Instead of relying on a specific class for a certain action type, it now uses methods with Optional as return values to determine a player or machine issuing an action. Refer to the JavaDocs for the exact behaviour. * `IActionHost` no longer extends `IGridHost` It never used the additional functionality and if needed the `IGridNode` will also provide a reference to the corresponding `IGridHost`. Due to most crafting related GUIs being hardcoded to `IGridHost`, they no longer work when `IActionHost` is not extending it. Actually `IActionHost` is the better solution for it, as it prevents us from looking the grid up via the `IGridHost` and potentially finding a wrong grid. * Interfaces now only lock the currently worked slot. This allows `DualityInterface#onChangeInventory` to update slots of the same interface, should they be the source for a requested item and therefore updating their working set accordingly to queue further crafting requests for unfulfilled stack requirements. --- .../api/networking/crafting/ICraftingCPU.java | 4 +- .../networking/crafting/ICraftingGrid.java | 6 +- .../networking/security/BaseActionSource.java | 41 ---------- .../api/networking/security/IActionHost.java | 3 +- .../networking/security/IActionSource.java | 77 +++++++++++++++++++ .../networking/security/MachineSource.java | 44 ----------- .../api/networking/security/PlayerSource.java | 49 ------------ .../networking/storage/IStackWatcherHost.java | 4 +- .../api/networking/storage/IStorageGrid.java | 4 +- .../java/appeng/api/storage/IMEInventory.java | 6 +- .../storage/IMEMonitorHandlerReceiver.java | 4 +- .../appeng/api/storage/IStorageHelper.java | 6 +- .../storage/IStorageMonitorableAccessor.java | 4 +- .../appeng/api/storage/MEMonitorHandler.java | 12 +-- .../capabilities/NullMENetworkAccessor.java | 4 +- .../appeng/container/AEBaseContainer.java | 8 +- .../implementations/ContainerCraftAmount.java | 6 +- .../ContainerCraftConfirm.java | 6 +- .../implementations/ContainerCraftingCPU.java | 30 ++------ .../ContainerMEMonitorable.java | 22 +++++- .../implementations/ContainerPatternTerm.java | 2 +- .../container/slot/SlotCraftingTerm.java | 6 +- .../container/slot/SlotPatternTerm.java | 4 +- src/main/java/appeng/core/api/ApiStorage.java | 6 +- .../core/sync/packets/PacketCraftRequest.java | 9 +-- .../java/appeng/crafting/CraftingJob.java | 25 +++--- .../appeng/crafting/CraftingTreeNode.java | 6 +- .../appeng/crafting/CraftingTreeProcess.java | 6 +- .../appeng/crafting/MECraftingInventory.java | 10 +-- .../java/appeng/helpers/DualityInterface.java | 77 +++++++++++++------ .../helpers/IContainerCraftingPacket.java | 4 +- .../appeng/helpers/MultiCraftingTracker.java | 4 +- .../helpers/WirelessTerminalGuiObject.java | 31 ++------ .../modules/jei/CondenserCategory.java | 2 +- .../modules/jei/CondenserOutputHandler.java | 2 +- .../modules/jei/CondenserOutputWrapper.java | 2 +- .../modules/jei/GrinderRecipeCategory.java | 6 +- .../modules/jei/GrinderRecipeHandler.java | 2 +- .../modules/jei/GrinderRecipeWrapper.java | 2 +- .../modules/jei/InscriberRecipeCategory.java | 3 +- .../modules/jei/InscriberRecipeHandler.java | 2 +- .../modules/jei/InscriberRecipeWrapper.java | 2 +- .../integration/modules/jei/JEIPlugin.java | 6 +- .../modules/jei/ShapelessRecipeWrapper.java | 2 +- .../tools/powered/ToolColorApplicator.java | 2 +- .../items/tools/powered/ToolMatterCannon.java | 2 +- .../appeng/me/cache/CraftingGridCache.java | 11 +-- .../appeng/me/cache/GridStorageCache.java | 19 ++--- .../java/appeng/me/cache/NetworkMonitor.java | 14 ++-- .../implementations/CraftingCPUCluster.java | 14 ++-- .../appeng/me/helpers/BaseActionSource.java | 50 ++++++++++++ .../java/appeng/me/helpers/MachineSource.java | 58 ++++++++++++++ .../java/appeng/me/helpers/PlayerSource.java | 62 +++++++++++++++ .../java/appeng/me/storage/CellInventory.java | 6 +- .../me/storage/CreativeCellInventory.java | 6 +- .../java/appeng/me/storage/DriveWatcher.java | 6 +- .../appeng/me/storage/ITickingMonitor.java | 4 +- .../appeng/me/storage/MEInventoryHandler.java | 6 +- .../me/storage/MEMonitorIInventory.java | 12 +-- .../me/storage/MEMonitorPassThrough.java | 10 +-- .../java/appeng/me/storage/MEPassThrough.java | 6 +- .../me/storage/NetworkInventoryHandler.java | 18 ++--- .../java/appeng/me/storage/NullInventory.java | 6 +- .../me/storage/SecurityStationInventory.java | 13 ++-- .../automation/PartAnnihilationPlane.java | 6 +- .../parts/automation/PartExportBus.java | 6 +- .../parts/automation/PartFormationPlane.java | 6 +- .../parts/automation/PartImportBus.java | 6 +- .../parts/automation/PartLevelEmitter.java | 6 +- .../appeng/parts/misc/ItemHandlerAdapter.java | 10 +-- .../appeng/parts/misc/PartStorageBus.java | 8 +- .../parts/reporting/AbstractPartMonitor.java | 4 +- .../reporting/PartConversionMonitor.java | 2 +- .../tile/misc/CondenserFluidInventory.java | 6 +- .../tile/misc/CondenserItemInventory.java | 6 +- .../java/appeng/tile/misc/TileCondenser.java | 4 +- .../java/appeng/tile/storage/TileChest.java | 21 +++-- .../java/appeng/tile/storage/TileDrive.java | 6 +- .../java/appeng/tile/storage/TileIOPort.java | 6 +- src/main/java/appeng/util/Platform.java | 42 +++++----- src/main/java/appeng/util/inv/IMEAdaptor.java | 6 +- 81 files changed, 572 insertions(+), 465 deletions(-) delete mode 100644 src/api/java/appeng/api/networking/security/BaseActionSource.java create mode 100644 src/api/java/appeng/api/networking/security/IActionSource.java delete mode 100644 src/api/java/appeng/api/networking/security/MachineSource.java delete mode 100644 src/api/java/appeng/api/networking/security/PlayerSource.java create mode 100644 src/main/java/appeng/me/helpers/BaseActionSource.java create mode 100644 src/main/java/appeng/me/helpers/MachineSource.java create mode 100644 src/main/java/appeng/me/helpers/PlayerSource.java diff --git a/src/api/java/appeng/api/networking/crafting/ICraftingCPU.java b/src/api/java/appeng/api/networking/crafting/ICraftingCPU.java index 5dbc40e8..5888bf7a 100644 --- a/src/api/java/appeng/api/networking/crafting/ICraftingCPU.java +++ b/src/api/java/appeng/api/networking/crafting/ICraftingCPU.java @@ -24,7 +24,7 @@ package appeng.api.networking.crafting; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IBaseMonitor; import appeng.api.storage.data.IAEItemStack; @@ -40,7 +40,7 @@ public interface ICraftingCPU extends IBaseMonitor /** * @return the action source for the CPU. */ - BaseActionSource getActionSource(); + IActionSource getActionSource(); /** * @return the available storage in bytes diff --git a/src/api/java/appeng/api/networking/crafting/ICraftingGrid.java b/src/api/java/appeng/api/networking/crafting/ICraftingGrid.java index 7e0cc94e..a14fa528 100644 --- a/src/api/java/appeng/api/networking/crafting/ICraftingGrid.java +++ b/src/api/java/appeng/api/networking/crafting/ICraftingGrid.java @@ -33,7 +33,7 @@ import net.minecraft.world.World; import appeng.api.networking.IGrid; import appeng.api.networking.IGridCache; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.data.IAEItemStack; @@ -63,7 +63,7 @@ public interface ICraftingGrid extends IGridCache * @return a future which will at an undetermined point in the future get you the {@link ICraftingJob} do not wait * on this, your be waiting forever. */ - Future beginCraftingJob( World world, IGrid grid, BaseActionSource actionSrc, IAEItemStack craftWhat, ICraftingCallback callback ); + Future beginCraftingJob( World world, IGrid grid, IActionSource actionSrc, IAEItemStack craftWhat, ICraftingCallback callback ); /** * Submit the job to the Crafting system for processing. @@ -82,7 +82,7 @@ public interface ICraftingGrid extends IGridCache * {@link ICraftingRequester} methods. if you send null, this object should be discarded after verifying the * return state. */ - ICraftingLink submitJob( ICraftingJob job, ICraftingRequester requestingMachine, ICraftingCPU target, boolean prioritizePower, BaseActionSource src ); + ICraftingLink submitJob( ICraftingJob job, ICraftingRequester requestingMachine, ICraftingCPU target, boolean prioritizePower, IActionSource src ); /** * @return list of all the crafting cpus on the grid diff --git a/src/api/java/appeng/api/networking/security/BaseActionSource.java b/src/api/java/appeng/api/networking/security/BaseActionSource.java deleted file mode 100644 index 1a7b6e79..00000000 --- a/src/api/java/appeng/api/networking/security/BaseActionSource.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 AlgorithmX2 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package appeng.api.networking.security; - -/** - * TODO: Consider refactoring. - */ -public class BaseActionSource -{ - - public boolean isPlayer() - { - return false; - } - - public boolean isMachine() - { - return false; - } -} diff --git a/src/api/java/appeng/api/networking/security/IActionHost.java b/src/api/java/appeng/api/networking/security/IActionHost.java index 90c056d8..02cd2c41 100644 --- a/src/api/java/appeng/api/networking/security/IActionHost.java +++ b/src/api/java/appeng/api/networking/security/IActionHost.java @@ -24,11 +24,10 @@ package appeng.api.networking.security; -import appeng.api.networking.IGridHost; import appeng.api.networking.IGridNode; -public interface IActionHost extends IGridHost +public interface IActionHost { /** diff --git a/src/api/java/appeng/api/networking/security/IActionSource.java b/src/api/java/appeng/api/networking/security/IActionSource.java new file mode 100644 index 00000000..0b5b0307 --- /dev/null +++ b/src/api/java/appeng/api/networking/security/IActionSource.java @@ -0,0 +1,77 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2013 AlgorithmX2 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package appeng.api.networking.security; + + +import java.util.Optional; + +import javax.annotation.Nonnull; + +import net.minecraft.entity.player.EntityPlayer; + + +/** + * The source of any action. + * + * This can either be a {@link EntityPlayer} or an {@link IActionHost}. + * + * In most cases this is used for security checks, but can be used to validate the source itself. + * + */ +public interface IActionSource +{ + + /** + * If present, AE will consider the player being the source for the action. + * + * This will take precedence over {@link IActionSource#machine()} in any case. + * + * @return An optional player issuing the action. + */ + @Nonnull + Optional player(); + + /** + * If present, it indicates the {@link IActionHost} of the source. + * + * Should {@link IActionSource#player()} be absent, it will consider a machine as source. + * + * It is recommended to include the machine even when a player is present. + * + * @return An optional machine issuing the action or acting as proxy for a player. + */ + @Nonnull + Optional machine(); + + /** + * An {@link IActionSource} can have multiple optional contexts. + * + * It is strongly recommended to limit the uses for absolutely necessary cases. + * + * Currently there are no public contexts made available by AE. + * An example would be the context interfaces use internally to avoid looping items between each other. + */ + @Nonnull + Optional context( @Nonnull Class key ); +} \ No newline at end of file diff --git a/src/api/java/appeng/api/networking/security/MachineSource.java b/src/api/java/appeng/api/networking/security/MachineSource.java deleted file mode 100644 index 7a6924ee..00000000 --- a/src/api/java/appeng/api/networking/security/MachineSource.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 AlgorithmX2 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package appeng.api.networking.security; - -/** - * TODO: Consider refactoring. - */ -public class MachineSource extends BaseActionSource -{ - - public final IActionHost via; - - public MachineSource( final IActionHost v ) - { - this.via = v; - } - - @Override - public boolean isMachine() - { - return true; - } -} diff --git a/src/api/java/appeng/api/networking/security/PlayerSource.java b/src/api/java/appeng/api/networking/security/PlayerSource.java deleted file mode 100644 index 76e047e6..00000000 --- a/src/api/java/appeng/api/networking/security/PlayerSource.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 AlgorithmX2 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package appeng.api.networking.security; - - -import net.minecraft.entity.player.EntityPlayer; - -/** - * TODO: Consider refactoring. - */ -public class PlayerSource extends BaseActionSource -{ - - public final EntityPlayer player; - public final IActionHost via; - - public PlayerSource( final EntityPlayer p, final IActionHost v ) - { - this.player = p; - this.via = v; - } - - @Override - public boolean isPlayer() - { - return true; - } -} diff --git a/src/api/java/appeng/api/networking/storage/IStackWatcherHost.java b/src/api/java/appeng/api/networking/storage/IStackWatcherHost.java index ca411821..ade1d699 100644 --- a/src/api/java/appeng/api/networking/storage/IStackWatcherHost.java +++ b/src/api/java/appeng/api/networking/storage/IStackWatcherHost.java @@ -24,7 +24,7 @@ package appeng.api.networking.storage; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEStack; import appeng.api.storage.data.IItemList; @@ -50,5 +50,5 @@ public interface IStackWatcherHost * @param src action source * @param chan storage channel */ - void onStackChange( IItemList o, IAEStack fullStack, IAEStack diffStack, BaseActionSource src, StorageChannel chan ); + void onStackChange( IItemList o, IAEStack fullStack, IAEStack diffStack, IActionSource src, StorageChannel chan ); } diff --git a/src/api/java/appeng/api/networking/storage/IStorageGrid.java b/src/api/java/appeng/api/networking/storage/IStorageGrid.java index 31e8277f..9a06998f 100644 --- a/src/api/java/appeng/api/networking/storage/IStorageGrid.java +++ b/src/api/java/appeng/api/networking/storage/IStorageGrid.java @@ -26,7 +26,7 @@ package appeng.api.networking.storage; import appeng.api.networking.IGridCache; import appeng.api.networking.IGridHost; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.ICellContainer; import appeng.api.storage.ICellProvider; import appeng.api.storage.IStorageMonitorable; @@ -50,7 +50,7 @@ public interface IStorageGrid extends IGridCache, IStorageMonitorable * * @param input injected items */ - void postAlterationOfStoredItems( StorageChannel chan, Iterable input, BaseActionSource src ); + void postAlterationOfStoredItems( StorageChannel chan, Iterable input, IActionSource src ); /** * Used to add a cell provider to the storage system diff --git a/src/api/java/appeng/api/storage/IMEInventory.java b/src/api/java/appeng/api/storage/IMEInventory.java index c6896004..3c16a51a 100644 --- a/src/api/java/appeng/api/storage/IMEInventory.java +++ b/src/api/java/appeng/api/storage/IMEInventory.java @@ -25,7 +25,7 @@ package appeng.api.storage; import appeng.api.config.Actionable; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.data.IAEStack; import appeng.api.storage.data.IItemList; @@ -52,7 +52,7 @@ public interface IMEInventory * * @return returns the number of items not added. */ - StackType injectItems( StackType input, Actionable type, BaseActionSource src ); + StackType injectItems( StackType input, Actionable type, IActionSource src ); /** * Extract the specified item from the ME Inventory @@ -62,7 +62,7 @@ public interface IMEInventory * * @return returns the number of items extracted, null */ - StackType extractItems( StackType request, Actionable mode, BaseActionSource src ); + StackType extractItems( StackType request, Actionable mode, IActionSource src ); /** * request a full report of all available items, storage. diff --git a/src/api/java/appeng/api/storage/IMEMonitorHandlerReceiver.java b/src/api/java/appeng/api/storage/IMEMonitorHandlerReceiver.java index 30bbb745..8e2b574d 100644 --- a/src/api/java/appeng/api/storage/IMEMonitorHandlerReceiver.java +++ b/src/api/java/appeng/api/storage/IMEMonitorHandlerReceiver.java @@ -24,7 +24,7 @@ package appeng.api.storage; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IBaseMonitor; import appeng.api.storage.data.IAEStack; @@ -46,7 +46,7 @@ public interface IMEMonitorHandlerReceiver * * @param change done change */ - void postChange( IBaseMonitor monitor, Iterable change, BaseActionSource actionSource ); + void postChange( IBaseMonitor monitor, Iterable change, IActionSource actionSource ); /** * called when the list updates its contents, this is mostly for handling power events. diff --git a/src/api/java/appeng/api/storage/IStorageHelper.java b/src/api/java/appeng/api/storage/IStorageHelper.java index c48b0e0a..10c95d87 100644 --- a/src/api/java/appeng/api/storage/IStorageHelper.java +++ b/src/api/java/appeng/api/storage/IStorageHelper.java @@ -35,7 +35,7 @@ import net.minecraftforge.fluids.FluidStack; import appeng.api.networking.crafting.ICraftingLink; import appeng.api.networking.crafting.ICraftingRequester; import appeng.api.networking.energy.IEnergySource; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; @@ -109,7 +109,7 @@ public interface IStorageHelper * * @return items that successfully extracted. */ - IAEItemStack poweredExtraction( IEnergySource energy, IMEInventory cell, IAEItemStack request, BaseActionSource src ); + IAEItemStack poweredExtraction( IEnergySource energy, IMEInventory cell, IAEItemStack request, IActionSource src ); /** * use energy from energy, to inject input items into cell, at the request of src @@ -121,5 +121,5 @@ public interface IStorageHelper * * @return items that failed to insert. */ - IAEItemStack poweredInsert( IEnergySource energy, IMEInventory cell, IAEItemStack input, BaseActionSource src ); + IAEItemStack poweredInsert( IEnergySource energy, IMEInventory cell, IAEItemStack input, IActionSource src ); } diff --git a/src/api/java/appeng/api/storage/IStorageMonitorableAccessor.java b/src/api/java/appeng/api/storage/IStorageMonitorableAccessor.java index 33b0f306..970e3a50 100644 --- a/src/api/java/appeng/api/storage/IStorageMonitorableAccessor.java +++ b/src/api/java/appeng/api/storage/IStorageMonitorableAccessor.java @@ -4,7 +4,7 @@ package appeng.api.storage; import javax.annotation.Nullable; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; /** @@ -22,5 +22,5 @@ public interface IStorageMonitorableAccessor * @return Null if the network cannot be accessed by the given action source (i.e. security doesn't permit it). */ @Nullable - IStorageMonitorable getInventory( BaseActionSource src ); + IStorageMonitorable getInventory( IActionSource src ); } diff --git a/src/api/java/appeng/api/storage/MEMonitorHandler.java b/src/api/java/appeng/api/storage/MEMonitorHandler.java index 4cbae08b..defe58a8 100644 --- a/src/api/java/appeng/api/storage/MEMonitorHandler.java +++ b/src/api/java/appeng/api/storage/MEMonitorHandler.java @@ -32,7 +32,7 @@ import com.google.common.collect.ImmutableList; import appeng.api.config.AccessRestriction; import appeng.api.config.Actionable; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.data.IAEStack; import appeng.api.storage.data.IItemList; @@ -81,7 +81,7 @@ public class MEMonitorHandler implements IMEMonitor< } @Override - public StackType injectItems( final StackType input, final Actionable mode, final BaseActionSource src ) + public StackType injectItems( final StackType input, final Actionable mode, final IActionSource src ) { if( mode == Actionable.SIMULATE ) { @@ -95,7 +95,7 @@ public class MEMonitorHandler implements IMEMonitor< return this.internalHandler; } - private StackType monitorDifference( final IAEStack original, final StackType leftOvers, final boolean extraction, final BaseActionSource src ) + private StackType monitorDifference( final IAEStack original, final StackType leftOvers, final boolean extraction, final IActionSource src ) { final StackType diff = (StackType) original.copy(); @@ -116,12 +116,12 @@ public class MEMonitorHandler implements IMEMonitor< return leftOvers; } - protected void postChangesToListeners( final Iterable changes, final BaseActionSource src ) + protected void postChangesToListeners( final Iterable changes, final IActionSource src ) { this.notifyListenersOfChange( changes, src ); } - protected void notifyListenersOfChange( final Iterable diff, final BaseActionSource src ) + protected void notifyListenersOfChange( final Iterable diff, final IActionSource src ) { this.hasChanged = true;// need to update the cache. final Iterator, Object>> i = this.getListeners(); @@ -146,7 +146,7 @@ public class MEMonitorHandler implements IMEMonitor< } @Override - public StackType extractItems( final StackType request, final Actionable mode, final BaseActionSource src ) + public StackType extractItems( final StackType request, final Actionable mode, final IActionSource src ) { if( mode == Actionable.SIMULATE ) { diff --git a/src/main/java/appeng/capabilities/NullMENetworkAccessor.java b/src/main/java/appeng/capabilities/NullMENetworkAccessor.java index 67496b5e..c4b67f00 100644 --- a/src/main/java/appeng/capabilities/NullMENetworkAccessor.java +++ b/src/main/java/appeng/capabilities/NullMENetworkAccessor.java @@ -19,7 +19,7 @@ package appeng.capabilities; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.IStorageMonitorable; import appeng.api.storage.IStorageMonitorableAccessor; @@ -28,7 +28,7 @@ class NullMENetworkAccessor implements IStorageMonitorableAccessor { @Override - public IStorageMonitorable getInventory( BaseActionSource src ) + public IStorageMonitorable getInventory( IActionSource src ) { return null; } diff --git a/src/main/java/appeng/container/AEBaseContainer.java b/src/main/java/appeng/container/AEBaseContainer.java index dddea768..59992e63 100644 --- a/src/main/java/appeng/container/AEBaseContainer.java +++ b/src/main/java/appeng/container/AEBaseContainer.java @@ -51,10 +51,9 @@ import appeng.api.networking.IGrid; import appeng.api.networking.IGridNode; import appeng.api.networking.energy.IEnergyGrid; import appeng.api.networking.energy.IEnergySource; -import appeng.api.networking.security.BaseActionSource; import appeng.api.networking.security.IActionHost; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.security.ISecurityGrid; -import appeng.api.networking.security.PlayerSource; import appeng.api.parts.IPart; import appeng.api.storage.IMEInventoryHandler; import appeng.api.storage.data.IAEItemStack; @@ -77,6 +76,7 @@ import appeng.core.sync.packets.PacketPartialItem; import appeng.core.sync.packets.PacketValueConfig; import appeng.helpers.ICustomNameObject; import appeng.helpers.InventoryAction; +import appeng.me.helpers.PlayerSource; import appeng.util.InventoryAdaptor; import appeng.util.Platform; import appeng.util.inv.AdaptorItemHandler; @@ -87,7 +87,7 @@ import appeng.util.item.AEItemStack; public abstract class AEBaseContainer extends Container { private final InventoryPlayer invPlayer; - private final BaseActionSource mySrc; + private final IActionSource mySrc; private final HashSet locked = new HashSet<>(); private final TileEntity tileEntity; private final IPart part; @@ -280,7 +280,7 @@ public abstract class AEBaseContainer extends Container this.clientRequestedTargetItem = stack == null ? null : stack.copy(); } - public BaseActionSource getActionSource() + public IActionSource getActionSource() { return this.mySrc; } diff --git a/src/main/java/appeng/container/implementations/ContainerCraftAmount.java b/src/main/java/appeng/container/implementations/ContainerCraftAmount.java index 036a28e7..a0bc4120 100644 --- a/src/main/java/appeng/container/implementations/ContainerCraftAmount.java +++ b/src/main/java/appeng/container/implementations/ContainerCraftAmount.java @@ -27,13 +27,13 @@ import net.minecraft.world.World; import appeng.api.config.SecurityPermissions; import appeng.api.networking.IGrid; -import appeng.api.networking.security.BaseActionSource; import appeng.api.networking.security.IActionHost; -import appeng.api.networking.security.PlayerSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.ITerminalHost; import appeng.api.storage.data.IAEItemStack; import appeng.container.AEBaseContainer; import appeng.container.slot.SlotInaccessible; +import appeng.me.helpers.PlayerSource; import appeng.tile.inventory.AppEngInternalInventory; @@ -69,7 +69,7 @@ public class ContainerCraftAmount extends AEBaseContainer return this.getPlayerInv().player.world; } - public BaseActionSource getActionSrc() + public IActionSource getActionSrc() { return new PlayerSource( this.getPlayerInv().player, (IActionHost) this.getTarget() ); } diff --git a/src/main/java/appeng/container/implementations/ContainerCraftConfirm.java b/src/main/java/appeng/container/implementations/ContainerCraftConfirm.java index 9438782f..bfaf60ef 100644 --- a/src/main/java/appeng/container/implementations/ContainerCraftConfirm.java +++ b/src/main/java/appeng/container/implementations/ContainerCraftConfirm.java @@ -44,9 +44,8 @@ import appeng.api.networking.crafting.ICraftingCPU; import appeng.api.networking.crafting.ICraftingGrid; import appeng.api.networking.crafting.ICraftingJob; import appeng.api.networking.crafting.ICraftingLink; -import appeng.api.networking.security.BaseActionSource; import appeng.api.networking.security.IActionHost; -import appeng.api.networking.security.PlayerSource; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IStorageGrid; import appeng.api.storage.IMEInventory; import appeng.api.storage.ITerminalHost; @@ -60,6 +59,7 @@ import appeng.core.sync.network.NetworkHandler; import appeng.core.sync.packets.PacketMEInventoryUpdate; import appeng.core.sync.packets.PacketSwitchGuis; import appeng.helpers.WirelessTerminalGuiObject; +import appeng.me.helpers.PlayerSource; import appeng.parts.reporting.PartCraftingTerminal; import appeng.parts.reporting.PartPatternTerminal; import appeng.parts.reporting.PartTerminal; @@ -361,7 +361,7 @@ public class ContainerCraftConfirm extends AEBaseContainer } } - private BaseActionSource getActionSrc() + private IActionSource getActionSrc() { return new PlayerSource( this.getPlayerInv().player, (IActionHost) this.getTarget() ); } diff --git a/src/main/java/appeng/container/implementations/ContainerCraftingCPU.java b/src/main/java/appeng/container/implementations/ContainerCraftingCPU.java index a39fd959..2604336a 100644 --- a/src/main/java/appeng/container/implementations/ContainerCraftingCPU.java +++ b/src/main/java/appeng/container/implementations/ContainerCraftingCPU.java @@ -28,16 +28,14 @@ import net.minecraft.inventory.IContainerListener; import appeng.api.AEApi; import appeng.api.networking.IGrid; -import appeng.api.networking.IGridHost; -import appeng.api.networking.IGridNode; import appeng.api.networking.crafting.CraftingItemList; import appeng.api.networking.crafting.ICraftingCPU; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionHost; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IBaseMonitor; import appeng.api.storage.IMEMonitorHandlerReceiver; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; -import appeng.api.util.AEPartLocation; import appeng.container.AEBaseContainer; import appeng.container.guisync.GuiSync; import appeng.core.AELog; @@ -65,15 +63,11 @@ public class ContainerCraftingCPU extends AEBaseContainer implements IMEMonitorH public ContainerCraftingCPU( final InventoryPlayer ip, final Object te ) { super( ip, te ); - final IGridHost host = (IGridHost) ( te instanceof IGridHost ? te : null ); + final IActionHost host = (IActionHost) ( te instanceof IActionHost ? te : null ); - if( host != null ) + if( host != null && host.getActionableNode() != null ) { - this.findNode( host, AEPartLocation.INTERNAL ); - for( final AEPartLocation d : AEPartLocation.SIDE_LOCATIONS ) - { - this.findNode( host, d ); - } + this.setNetwork( host.getActionableNode().getGrid() ); } if( te instanceof TileCraftingTile ) @@ -87,18 +81,6 @@ public class ContainerCraftingCPU extends AEBaseContainer implements IMEMonitorH } } - private void findNode( final IGridHost host, final AEPartLocation d ) - { - if( this.getNetwork() == null ) - { - final IGridNode node = host.getGridNode( d ); - if( node != null ) - { - this.setNetwork( node.getGrid() ); - } - } - } - protected void setCPU( final ICraftingCPU c ) { if( c == this.getMonitor() ) @@ -238,7 +220,7 @@ public class ContainerCraftingCPU extends AEBaseContainer implements IMEMonitorH } @Override - public void postChange( final IBaseMonitor monitor, final Iterable change, final BaseActionSource actionSource ) + public void postChange( final IBaseMonitor monitor, final Iterable change, final IActionSource actionSource ) { for( IAEItemStack is : change ) { diff --git a/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java b/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java index 819761a5..2e1e3006 100644 --- a/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java +++ b/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java @@ -47,7 +47,8 @@ import appeng.api.networking.IGridHost; import appeng.api.networking.IGridNode; import appeng.api.networking.energy.IEnergyGrid; import appeng.api.networking.energy.IEnergySource; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionHost; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IBaseMonitor; import appeng.api.parts.IPart; import appeng.api.storage.IMEMonitor; @@ -122,9 +123,22 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa { this.setPowerSource( (IEnergySource) monitorable ); } - else if( monitorable instanceof IGridHost ) + else if( monitorable instanceof IGridHost || monitorable instanceof IActionHost ) { - final IGridNode node = ( (IGridHost) monitorable ).getGridNode( AEPartLocation.INTERNAL ); + final IGridNode node; + if( monitorable instanceof IGridHost ) + { + node = ( (IGridHost) monitorable ).getGridNode( AEPartLocation.INTERNAL ); + } + else if( monitorable instanceof IActionHost ) + { + node = ( (IActionHost) monitorable ).getActionableNode(); + } + else + { + node = null; + } + if( node != null ) { this.networkNode = node; @@ -374,7 +388,7 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa } @Override - public void postChange( final IBaseMonitor monitor, final Iterable change, final BaseActionSource source ) + public void postChange( final IBaseMonitor monitor, final Iterable change, final IActionSource source ) { for( final IAEItemStack is : change ) { diff --git a/src/main/java/appeng/container/implementations/ContainerPatternTerm.java b/src/main/java/appeng/container/implementations/ContainerPatternTerm.java index a5872167..f6ff82a1 100644 --- a/src/main/java/appeng/container/implementations/ContainerPatternTerm.java +++ b/src/main/java/appeng/container/implementations/ContainerPatternTerm.java @@ -43,7 +43,6 @@ import net.minecraftforge.items.wrapper.PlayerInvWrapper; import appeng.api.AEApi; import appeng.api.config.Actionable; import appeng.api.definitions.IDefinitions; -import appeng.api.networking.security.MachineSource; import appeng.api.storage.IMEMonitor; import appeng.api.storage.ITerminalHost; import appeng.api.storage.data.IAEItemStack; @@ -59,6 +58,7 @@ import appeng.container.slot.SlotRestrictedInput; import appeng.core.sync.packets.PacketPatternSlot; import appeng.helpers.IContainerCraftingPacket; import appeng.items.storage.ItemViewCell; +import appeng.me.helpers.MachineSource; import appeng.parts.reporting.PartPatternTerminal; import appeng.tile.inventory.AppEngInternalInventory; import appeng.util.InventoryAdaptor; diff --git a/src/main/java/appeng/container/slot/SlotCraftingTerm.java b/src/main/java/appeng/container/slot/SlotCraftingTerm.java index be9d33ab..5127350f 100644 --- a/src/main/java/appeng/container/slot/SlotCraftingTerm.java +++ b/src/main/java/appeng/container/slot/SlotCraftingTerm.java @@ -36,7 +36,7 @@ import net.minecraftforge.items.IItemHandler; import appeng.api.config.Actionable; import appeng.api.networking.energy.IEnergySource; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.IMEMonitor; import appeng.api.storage.IStorageMonitorable; import appeng.api.storage.data.IAEItemStack; @@ -61,12 +61,12 @@ public class SlotCraftingTerm extends AppEngCraftingSlot private final IItemHandler craftInv; private final IItemHandler pattern; - private final BaseActionSource mySrc; + private final IActionSource mySrc; private final IEnergySource energySrc; private final IStorageMonitorable storage; private final IContainerCraftingPacket container; - public SlotCraftingTerm( final EntityPlayer player, final BaseActionSource mySrc, final IEnergySource energySrc, final IStorageMonitorable storage, final IItemHandler cMatrix, final IItemHandler secondMatrix, final IItemHandler output, final int x, final int y, final IContainerCraftingPacket ccp ) + public SlotCraftingTerm( final EntityPlayer player, final IActionSource mySrc, final IEnergySource energySrc, final IStorageMonitorable storage, final IItemHandler cMatrix, final IItemHandler secondMatrix, final IItemHandler output, final int x, final int y, final IContainerCraftingPacket ccp ) { super( player, cMatrix, output, 0, x, y ); this.energySrc = energySrc; diff --git a/src/main/java/appeng/container/slot/SlotPatternTerm.java b/src/main/java/appeng/container/slot/SlotPatternTerm.java index e6153b77..3494ce1a 100644 --- a/src/main/java/appeng/container/slot/SlotPatternTerm.java +++ b/src/main/java/appeng/container/slot/SlotPatternTerm.java @@ -27,7 +27,7 @@ import net.minecraftforge.items.IItemHandler; import appeng.api.AEApi; import appeng.api.networking.energy.IEnergySource; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.IStorageMonitorable; import appeng.core.sync.AppEngPacket; import appeng.core.sync.packets.PacketPatternSlot; @@ -40,7 +40,7 @@ public class SlotPatternTerm extends SlotCraftingTerm private final int groupNum; private final IOptionalSlotHost host; - public SlotPatternTerm( final EntityPlayer player, final BaseActionSource mySrc, final IEnergySource energySrc, final IStorageMonitorable storage, final IItemHandler cMatrix, final IItemHandler secondMatrix, final IItemHandler output, final int x, final int y, final IOptionalSlotHost h, final int groupNumber, final IContainerCraftingPacket c ) + public SlotPatternTerm( final EntityPlayer player, final IActionSource mySrc, final IEnergySource energySrc, final IStorageMonitorable storage, final IItemHandler cMatrix, final IItemHandler secondMatrix, final IItemHandler output, final int x, final int y, final IOptionalSlotHost h, final int groupNumber, final IContainerCraftingPacket c ) { super( player, mySrc, energySrc, storage, cMatrix, secondMatrix, output, x, y, c ); diff --git a/src/main/java/appeng/core/api/ApiStorage.java b/src/main/java/appeng/core/api/ApiStorage.java index 503a6c74..5db0f86a 100644 --- a/src/main/java/appeng/core/api/ApiStorage.java +++ b/src/main/java/appeng/core/api/ApiStorage.java @@ -30,7 +30,7 @@ import net.minecraftforge.fluids.FluidStack; import appeng.api.networking.crafting.ICraftingLink; import appeng.api.networking.crafting.ICraftingRequester; import appeng.api.networking.energy.IEnergySource; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.IMEInventory; import appeng.api.storage.IStorageHelper; import appeng.api.storage.data.IAEFluidStack; @@ -90,13 +90,13 @@ public class ApiStorage implements IStorageHelper } @Override - public IAEItemStack poweredExtraction( final IEnergySource energy, final IMEInventory cell, final IAEItemStack request, final BaseActionSource src ) + public IAEItemStack poweredExtraction( final IEnergySource energy, final IMEInventory cell, final IAEItemStack request, final IActionSource src ) { return Platform.poweredExtraction( energy, cell, request, src ); } @Override - public IAEItemStack poweredInsert( final IEnergySource energy, final IMEInventory cell, final IAEItemStack input, final BaseActionSource src ) + public IAEItemStack poweredInsert( final IEnergySource energy, final IMEInventory cell, final IAEItemStack input, final IActionSource src ) { return Platform.poweredInsert( energy, cell, input, src ); } diff --git a/src/main/java/appeng/core/sync/packets/PacketCraftRequest.java b/src/main/java/appeng/core/sync/packets/PacketCraftRequest.java index e36d5e9c..5f867a44 100644 --- a/src/main/java/appeng/core/sync/packets/PacketCraftRequest.java +++ b/src/main/java/appeng/core/sync/packets/PacketCraftRequest.java @@ -28,11 +28,10 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import appeng.api.networking.IGrid; -import appeng.api.networking.IGridHost; import appeng.api.networking.IGridNode; import appeng.api.networking.crafting.ICraftingGrid; import appeng.api.networking.crafting.ICraftingJob; -import appeng.api.util.AEPartLocation; +import appeng.api.networking.security.IActionHost; import appeng.container.ContainerOpenContext; import appeng.container.implementations.ContainerCraftAmount; import appeng.container.implementations.ContainerCraftConfirm; @@ -77,10 +76,10 @@ public class PacketCraftRequest extends AppEngPacket { final ContainerCraftAmount cca = (ContainerCraftAmount) player.openContainer; final Object target = cca.getTarget(); - if( target instanceof IGridHost ) + if( target instanceof IActionHost ) { - final IGridHost gh = (IGridHost) target; - final IGridNode gn = gh.getGridNode( AEPartLocation.INTERNAL ); + final IActionHost ah = (IActionHost) target; + final IGridNode gn = ah.getActionableNode(); if( gn == null ) { return; diff --git a/src/main/java/appeng/crafting/CraftingJob.java b/src/main/java/appeng/crafting/CraftingJob.java index c4ea012b..9203ced4 100644 --- a/src/main/java/appeng/crafting/CraftingJob.java +++ b/src/main/java/appeng/crafting/CraftingJob.java @@ -37,10 +37,8 @@ import appeng.api.networking.crafting.ICraftingCallback; import appeng.api.networking.crafting.ICraftingGrid; import appeng.api.networking.crafting.ICraftingJob; import appeng.api.networking.crafting.ICraftingPatternDetails; -import appeng.api.networking.security.BaseActionSource; import appeng.api.networking.security.IActionHost; -import appeng.api.networking.security.MachineSource; -import appeng.api.networking.security.PlayerSource; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IStorageGrid; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; @@ -66,7 +64,7 @@ public class CraftingJob implements Runnable, ICraftingJob private boolean simulate = false; private MECraftingInventory availableCheck; private long bytes = 0; - private final BaseActionSource actionSrc; + private final IActionSource actionSrc; private final ICraftingCallback callback; private boolean running = false; private boolean done = false; @@ -78,7 +76,7 @@ public class CraftingJob implements Runnable, ICraftingJob return w; } - public CraftingJob( final World w, final IGrid grid, final BaseActionSource actionSrc, final IAEItemStack what, final ICraftingCallback callback ) + public CraftingJob( final World w, final IGrid grid, final IActionSource actionSrc, final IAEItemStack what, final ICraftingCallback callback ) { this.world = this.wrapWorld( w ); this.output = what.copy(); @@ -375,22 +373,21 @@ public class CraftingJob implements Runnable, ICraftingJob final long elapsedTime = timer.elapsed( TimeUnit.MILLISECONDS ); final String actionSource; - if( this.actionSrc instanceof MachineSource ) + if( this.actionSrc.player().isPresent() ) { - final IActionHost machineSource = ( (MachineSource) this.actionSrc ).via; + final EntityPlayer player = this.actionSrc.player().get(); + + actionSource = player.toString(); + } + else if( this.actionSrc.machine().isPresent() ) + { + final IActionHost machineSource = this.actionSrc.machine().get(); final IGridNode actionableNode = machineSource.getActionableNode(); final IGridHost machine = actionableNode.getMachine(); final DimensionalCoord location = actionableNode.getGridBlock().getLocation(); actionSource = String.format( LOG_MACHINE_SOURCE_DETAILS, machine, location ); } - else if( this.actionSrc instanceof PlayerSource ) - { - final PlayerSource source = (PlayerSource) this.actionSrc; - final EntityPlayer player = source.player; - - actionSource = player.toString(); - } else { actionSource = "[unknown source]"; diff --git a/src/main/java/appeng/crafting/CraftingTreeNode.java b/src/main/java/appeng/crafting/CraftingTreeNode.java index 750e4068..8c05e0af 100644 --- a/src/main/java/appeng/crafting/CraftingTreeNode.java +++ b/src/main/java/appeng/crafting/CraftingTreeNode.java @@ -33,7 +33,7 @@ import appeng.api.config.Actionable; import appeng.api.config.FuzzyMode; import appeng.api.networking.crafting.ICraftingGrid; import appeng.api.networking.crafting.ICraftingPatternDetails; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; import appeng.me.cluster.implementations.CraftingCPUCluster; @@ -117,7 +117,7 @@ public class CraftingTreeNode return this.parent.notRecursive( details ); } - IAEItemStack request( final MECraftingInventory inv, long l, final BaseActionSource src ) throws CraftBranchFailure, InterruptedException + IAEItemStack request( final MECraftingInventory inv, long l, final IActionSource src ) throws CraftBranchFailure, InterruptedException { this.job.handlePausing(); @@ -346,7 +346,7 @@ public class CraftingTreeNode } } - public void setJob( final MECraftingInventory storage, final CraftingCPUCluster craftingCPUCluster, final BaseActionSource src ) throws CraftBranchFailure + public void setJob( final MECraftingInventory storage, final CraftingCPUCluster craftingCPUCluster, final IActionSource src ) throws CraftBranchFailure { for( final IAEItemStack i : this.used ) { diff --git a/src/main/java/appeng/crafting/CraftingTreeProcess.java b/src/main/java/appeng/crafting/CraftingTreeProcess.java index e456576b..41c084a9 100644 --- a/src/main/java/appeng/crafting/CraftingTreeProcess.java +++ b/src/main/java/appeng/crafting/CraftingTreeProcess.java @@ -33,7 +33,7 @@ import appeng.api.AEApi; import appeng.api.config.Actionable; import appeng.api.networking.crafting.ICraftingGrid; import appeng.api.networking.crafting.ICraftingPatternDetails; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; import appeng.container.ContainerNull; @@ -184,7 +184,7 @@ public class CraftingTreeProcess return ( remaining / stackSize ) + ( remaining % stackSize != 0 ? 1 : 0 ); } - void request( final MECraftingInventory inv, final long i, final BaseActionSource src ) throws CraftBranchFailure, InterruptedException + void request( final MECraftingInventory inv, final long i, final IActionSource src ) throws CraftBranchFailure, InterruptedException { this.job.handlePausing(); @@ -297,7 +297,7 @@ public class CraftingTreeProcess } } - void setJob( final MECraftingInventory storage, final CraftingCPUCluster craftingCPUCluster, final BaseActionSource src ) throws CraftBranchFailure + void setJob( final MECraftingInventory storage, final CraftingCPUCluster craftingCPUCluster, final IActionSource src ) throws CraftBranchFailure { craftingCPUCluster.addCrafting( this.details, this.crafts ); diff --git a/src/main/java/appeng/crafting/MECraftingInventory.java b/src/main/java/appeng/crafting/MECraftingInventory.java index ff0c6771..e5663da9 100644 --- a/src/main/java/appeng/crafting/MECraftingInventory.java +++ b/src/main/java/appeng/crafting/MECraftingInventory.java @@ -21,7 +21,7 @@ package appeng.crafting; import appeng.api.AEApi; import appeng.api.config.Actionable; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.IMEInventory; import appeng.api.storage.IMEMonitor; import appeng.api.storage.StorageChannel; @@ -99,7 +99,7 @@ public class MECraftingInventory implements IMEInventory this.par = parent; } - public MECraftingInventory( final IMEMonitor target, final BaseActionSource src, final boolean logExtracted, final boolean logInjections, final boolean logMissing ) + public MECraftingInventory( final IMEMonitor target, final IActionSource src, final boolean logExtracted, final boolean logInjections, final boolean logMissing ) { this.target = target; this.logExtracted = logExtracted; @@ -181,7 +181,7 @@ public class MECraftingInventory implements IMEInventory } @Override - public IAEItemStack injectItems( final IAEItemStack input, final Actionable mode, final BaseActionSource src ) + public IAEItemStack injectItems( final IAEItemStack input, final Actionable mode, final IActionSource src ) { if( input == null ) { @@ -201,7 +201,7 @@ public class MECraftingInventory implements IMEInventory } @Override - public IAEItemStack extractItems( final IAEItemStack request, final Actionable mode, final BaseActionSource src ) + public IAEItemStack extractItems( final IAEItemStack request, final Actionable mode, final IActionSource src ) { if( request == null ) { @@ -265,7 +265,7 @@ public class MECraftingInventory implements IMEInventory return this.localCache; } - public boolean commit( final BaseActionSource src ) + public boolean commit( final IActionSource src ) { final IItemList added = AEApi.instance().storage().createItemList(); final IItemList pulled = AEApi.instance().storage().createItemList(); diff --git a/src/main/java/appeng/helpers/DualityInterface.java b/src/main/java/appeng/helpers/DualityInterface.java index db35cfb2..b86dce57 100644 --- a/src/main/java/appeng/helpers/DualityInterface.java +++ b/src/main/java/appeng/helpers/DualityInterface.java @@ -25,6 +25,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; +import java.util.Optional; import javax.annotation.Nullable; @@ -66,9 +67,8 @@ import appeng.api.networking.crafting.ICraftingProvider; import appeng.api.networking.crafting.ICraftingProviderHelper; import appeng.api.networking.energy.IEnergySource; import appeng.api.networking.events.MENetworkCraftingPatternChange; -import appeng.api.networking.security.BaseActionSource; import appeng.api.networking.security.IActionHost; -import appeng.api.networking.security.MachineSource; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.ticking.IGridTickable; import appeng.api.networking.ticking.TickRateModulation; import appeng.api.networking.ticking.TickingRequest; @@ -88,6 +88,7 @@ import appeng.capabilities.Capabilities; import appeng.core.settings.TickRates; import appeng.me.GridAccessException; import appeng.me.helpers.AENetworkProxy; +import appeng.me.helpers.MachineSource; import appeng.me.storage.MEMonitorIInventory; import appeng.me.storage.MEMonitorPassThrough; import appeng.me.storage.NullInventory; @@ -118,8 +119,8 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn private final MultiCraftingTracker craftingTracker; private final AENetworkProxy gridProxy; private final IInterfaceHost iHost; - private final BaseActionSource mySource; - private final BaseActionSource interfaceRequestSource; + private final IActionSource mySource; + private final IActionSource interfaceRequestSource; private final ConfigManager cm = new ConfigManager( this ); private final AppEngInternalAEInventory config = new AppEngInternalAEInventory( this, NUMBER_OF_CONFIG_SLOTS ); private final AppEngInternalInventory storage = new AppEngInternalInventory( this, NUMBER_OF_STORAGE_SLOTS ); @@ -132,7 +133,7 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn private List craftingList = null; private List waitingToSend = null; private IMEInventory destination; - private boolean isWorking = false; + private int isWorking = -1; private final Accessor accessor = new Accessor(); public DualityInterface( final AENetworkProxy networkProxy, final IInterfaceHost ih ) @@ -164,7 +165,7 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn @Override public void onChangeInventory( final IItemHandler inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added ) { - if( this.isWorking ) + if( this.isWorking == slot ) { return; } @@ -407,34 +408,34 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn req = null; } - final ItemStack Stored = this.storage.getStackInSlot( slot ); + final ItemStack stored = this.storage.getStackInSlot( slot ); - if( req == null && !Stored.isEmpty() ) + if( req == null && !stored.isEmpty() ) { - final IAEItemStack work = AEApi.instance().storage().createItemStack( Stored ); + final IAEItemStack work = AEApi.instance().storage().createItemStack( stored ); this.requireWork[slot] = work.setStackSize( -work.getStackSize() ); return; } else if( req != null ) { - if( Stored.isEmpty() ) // need to add stuff! + if( stored.isEmpty() ) // need to add stuff! { this.requireWork[slot] = req.copy(); return; } - else if( req.isSameType( Stored ) ) // same type ( qty different? )! + else if( req.isSameType( stored ) ) // same type ( qty different? )! { - if( req.getStackSize() != Stored.getCount() ) + if( req.getStackSize() != stored.getCount() ) { this.requireWork[slot] = req.copy(); - this.requireWork[slot].setStackSize( req.getStackSize() - Stored.getCount() ); + this.requireWork[slot].setStackSize( req.getStackSize() - stored.getCount() ); return; } } else // Stored != null; dispose! { - final IAEItemStack work = AEApi.instance().storage().createItemStack( Stored ); + final IAEItemStack work = AEApi.instance().storage().createItemStack( stored ); this.requireWork[slot] = work.setStackSize( -work.getStackSize() ); return; } @@ -657,7 +658,7 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn private boolean usePlan( final int x, final IAEItemStack itemStack ) { final InventoryAdaptor adaptor = this.getAdaptor( x ); - this.isWorking = true; + this.isWorking = x; boolean changed = false; try @@ -742,7 +743,7 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn this.updatePlan( x ); } - this.isWorking = false; + this.isWorking = -1; return changed; } @@ -865,7 +866,7 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn this.craftingTracker.cancel(); } - public IStorageMonitorable getMonitorable( final BaseActionSource src, final IStorageMonitorable myInterface ) + public IStorageMonitorable getMonitorable( final IActionSource src, final IStorageMonitorable myInterface ) { if( Platform.canAccess( this.gridProxy, src ) ) { @@ -1275,10 +1276,34 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn private class InterfaceRequestSource extends MachineSource { + private final InterfaceRequestContext context; - public InterfaceRequestSource( final IActionHost v ) + public InterfaceRequestSource( IActionHost v ) { super( v ); + this.context = new InterfaceRequestContext(); + } + + @Override + public Optional context( Class key ) + { + if( key == InterfaceRequestContext.class ) + { + return (Optional) Optional.of( this.context ); + } + + return super.context( key ); + } + + } + + private class InterfaceRequestContext implements Comparable + { + + @Override + public int compareTo( Integer o ) + { + return Integer.compare( DualityInterface.this.priority, o ); } } @@ -1292,9 +1317,12 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn } @Override - public IAEItemStack injectItems( final IAEItemStack input, final Actionable type, final BaseActionSource src ) + public IAEItemStack injectItems( final IAEItemStack input, final Actionable type, final IActionSource src ) { - if( src instanceof InterfaceRequestSource ) + final Optional context = src.context( InterfaceRequestContext.class ); + final boolean isInterface = context.isPresent(); + + if( isInterface ) { return input; } @@ -1303,9 +1331,12 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn } @Override - public IAEItemStack extractItems( final IAEItemStack request, final Actionable type, final BaseActionSource src ) + public IAEItemStack extractItems( final IAEItemStack request, final Actionable type, final IActionSource src ) { - if( src instanceof InterfaceRequestSource ) + final Optional context = src.context( InterfaceRequestContext.class ); + final boolean hasLowerOrEqualPriority = context.map( c -> c.compareTo( DualityInterface.this.priority ) <= 0 ).orElse( false ); + + if( hasLowerOrEqualPriority ) { return null; } @@ -1319,7 +1350,7 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn @Nullable @Override - public IStorageMonitorable getInventory( BaseActionSource src ) + public IStorageMonitorable getInventory( IActionSource src ) { return DualityInterface.this.getMonitorable( src, DualityInterface.this ); } diff --git a/src/main/java/appeng/helpers/IContainerCraftingPacket.java b/src/main/java/appeng/helpers/IContainerCraftingPacket.java index 8bac361a..338062b1 100644 --- a/src/main/java/appeng/helpers/IContainerCraftingPacket.java +++ b/src/main/java/appeng/helpers/IContainerCraftingPacket.java @@ -23,7 +23,7 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.items.IItemHandler; import appeng.api.networking.IGridNode; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; public interface IContainerCraftingPacket @@ -44,7 +44,7 @@ public interface IContainerCraftingPacket /** * @return who are we? */ - BaseActionSource getActionSource(); + IActionSource getActionSource(); /** * @return consume items? diff --git a/src/main/java/appeng/helpers/MultiCraftingTracker.java b/src/main/java/appeng/helpers/MultiCraftingTracker.java index 68250a64..7d122303 100644 --- a/src/main/java/appeng/helpers/MultiCraftingTracker.java +++ b/src/main/java/appeng/helpers/MultiCraftingTracker.java @@ -33,7 +33,7 @@ import appeng.api.networking.crafting.ICraftingGrid; import appeng.api.networking.crafting.ICraftingJob; import appeng.api.networking.crafting.ICraftingLink; import appeng.api.networking.crafting.ICraftingRequester; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.data.IAEItemStack; import appeng.util.InventoryAdaptor; @@ -81,7 +81,7 @@ public class MultiCraftingTracker } } - public boolean handleCrafting( final int x, final long itemToCraft, final IAEItemStack ais, final InventoryAdaptor d, final World w, final IGrid g, final ICraftingGrid cg, final BaseActionSource mySrc ) + public boolean handleCrafting( final int x, final long itemToCraft, final IAEItemStack ais, final InventoryAdaptor d, final World w, final IGrid g, final ICraftingGrid cg, final IActionSource mySrc ) { if( ais != null && d.simulateAdd( ais.getItemStack() ).isEmpty() ) { diff --git a/src/main/java/appeng/helpers/WirelessTerminalGuiObject.java b/src/main/java/appeng/helpers/WirelessTerminalGuiObject.java index 904d95f6..f451da11 100644 --- a/src/main/java/appeng/helpers/WirelessTerminalGuiObject.java +++ b/src/main/java/appeng/helpers/WirelessTerminalGuiObject.java @@ -32,11 +32,10 @@ import appeng.api.features.IWirelessTermHandler; import appeng.api.implementations.guiobjects.IPortableCell; import appeng.api.implementations.tiles.IWirelessAccessPoint; import appeng.api.networking.IGrid; -import appeng.api.networking.IGridHost; import appeng.api.networking.IGridNode; import appeng.api.networking.IMachineSet; -import appeng.api.networking.security.BaseActionSource; import appeng.api.networking.security.IActionHost; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IStorageGrid; import appeng.api.storage.IMEMonitor; import appeng.api.storage.IMEMonitorHandlerReceiver; @@ -44,8 +43,6 @@ import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; -import appeng.api.util.AECableType; -import appeng.api.util.AEPartLocation; import appeng.api.util.DimensionalCoord; import appeng.api.util.IConfigManager; import appeng.container.interfaces.IInventorySlotAware; @@ -87,9 +84,9 @@ public class WirelessTerminalGuiObject implements IPortableCell, IActionHost, II // :P } - if( obj instanceof IGridHost ) + if( obj instanceof IActionHost ) { - final IGridNode n = ( (IGridHost) obj ).getGridNode( AEPartLocation.INTERNAL ); + final IGridNode n = ( (IActionHost) obj ).getActionableNode(); if( n != null ) { this.targetGrid = n.getGrid(); @@ -225,7 +222,7 @@ public class WirelessTerminalGuiObject implements IPortableCell, IActionHost, II } @Override - public IAEItemStack injectItems( final IAEItemStack input, final Actionable type, final BaseActionSource src ) + public IAEItemStack injectItems( final IAEItemStack input, final Actionable type, final IActionSource src ) { if( this.itemStorage != null ) { @@ -235,7 +232,7 @@ public class WirelessTerminalGuiObject implements IPortableCell, IActionHost, II } @Override - public IAEItemStack extractItems( final IAEItemStack request, final Actionable mode, final BaseActionSource src ) + public IAEItemStack extractItems( final IAEItemStack request, final Actionable mode, final IActionSource src ) { if( this.itemStorage != null ) { @@ -280,24 +277,6 @@ public class WirelessTerminalGuiObject implements IPortableCell, IActionHost, II return this.wth.getConfigManager( this.effectiveItem ); } - @Override - public IGridNode getGridNode( final AEPartLocation dir ) - { - return this.getActionableNode(); - } - - @Override - public AECableType getCableConnectionType( final AEPartLocation dir ) - { - return AECableType.NONE; - } - - @Override - public void securityBreak() - { - - } - @Override public IGridNode getActionableNode() { diff --git a/src/main/java/appeng/integration/modules/jei/CondenserCategory.java b/src/main/java/appeng/integration/modules/jei/CondenserCategory.java index 8c2c3098..f44e5c6c 100644 --- a/src/main/java/appeng/integration/modules/jei/CondenserCategory.java +++ b/src/main/java/appeng/integration/modules/jei/CondenserCategory.java @@ -22,7 +22,6 @@ package appeng.integration.modules.jei; import java.util.ArrayList; import java.util.List; -import mezz.jei.api.recipe.IRecipeCategory; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; @@ -35,6 +34,7 @@ import mezz.jei.api.gui.IDrawableStatic; import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; import mezz.jei.api.ingredients.IIngredients; +import mezz.jei.api.recipe.IRecipeCategory; import appeng.api.AEApi; import appeng.api.config.CondenserOutput; diff --git a/src/main/java/appeng/integration/modules/jei/CondenserOutputHandler.java b/src/main/java/appeng/integration/modules/jei/CondenserOutputHandler.java index b2ec7cfa..9369960e 100644 --- a/src/main/java/appeng/integration/modules/jei/CondenserOutputHandler.java +++ b/src/main/java/appeng/integration/modules/jei/CondenserOutputHandler.java @@ -19,13 +19,13 @@ package appeng.integration.modules.jei; -import mezz.jei.api.recipe.IRecipeWrapperFactory; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.recipe.IRecipeWrapper; +import mezz.jei.api.recipe.IRecipeWrapperFactory; import appeng.api.config.CondenserOutput; import appeng.core.AppEng; diff --git a/src/main/java/appeng/integration/modules/jei/CondenserOutputWrapper.java b/src/main/java/appeng/integration/modules/jei/CondenserOutputWrapper.java index 54b210fa..b7754333 100644 --- a/src/main/java/appeng/integration/modules/jei/CondenserOutputWrapper.java +++ b/src/main/java/appeng/integration/modules/jei/CondenserOutputWrapper.java @@ -26,7 +26,6 @@ import javax.annotation.Nullable; import com.google.common.base.Splitter; -import mezz.jei.api.recipe.IRecipeWrapper; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; @@ -34,6 +33,7 @@ import net.minecraftforge.fml.client.config.HoverChecker; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.ingredients.IIngredients; +import mezz.jei.api.recipe.IRecipeWrapper; import appeng.api.config.CondenserOutput; diff --git a/src/main/java/appeng/integration/modules/jei/GrinderRecipeCategory.java b/src/main/java/appeng/integration/modules/jei/GrinderRecipeCategory.java index 44db4d3e..6e525656 100644 --- a/src/main/java/appeng/integration/modules/jei/GrinderRecipeCategory.java +++ b/src/main/java/appeng/integration/modules/jei/GrinderRecipeCategory.java @@ -19,17 +19,17 @@ package appeng.integration.modules.jei; -import mezz.jei.api.IJeiHelpers; -import mezz.jei.api.recipe.IRecipeCategory; -import mezz.jei.api.recipe.IRecipeCategoryRegistration; import net.minecraft.client.resources.I18n; import net.minecraft.util.ResourceLocation; import mezz.jei.api.IGuiHelper; +import mezz.jei.api.IJeiHelpers; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; import mezz.jei.api.ingredients.IIngredients; +import mezz.jei.api.recipe.IRecipeCategory; +import mezz.jei.api.recipe.IRecipeCategoryRegistration; import appeng.core.AppEng; diff --git a/src/main/java/appeng/integration/modules/jei/GrinderRecipeHandler.java b/src/main/java/appeng/integration/modules/jei/GrinderRecipeHandler.java index b8733ea6..a0b39a43 100644 --- a/src/main/java/appeng/integration/modules/jei/GrinderRecipeHandler.java +++ b/src/main/java/appeng/integration/modules/jei/GrinderRecipeHandler.java @@ -20,9 +20,9 @@ package appeng.integration.modules.jei; import mezz.jei.api.recipe.IRecipeWrapper; +import mezz.jei.api.recipe.IRecipeWrapperFactory; import appeng.api.features.IGrinderRecipe; -import mezz.jei.api.recipe.IRecipeWrapperFactory; class GrinderRecipeHandler implements IRecipeWrapperFactory diff --git a/src/main/java/appeng/integration/modules/jei/GrinderRecipeWrapper.java b/src/main/java/appeng/integration/modules/jei/GrinderRecipeWrapper.java index 9f827de7..14b2fa56 100644 --- a/src/main/java/appeng/integration/modules/jei/GrinderRecipeWrapper.java +++ b/src/main/java/appeng/integration/modules/jei/GrinderRecipeWrapper.java @@ -23,13 +23,13 @@ import java.awt.Color; import java.util.ArrayList; import java.util.List; -import mezz.jei.api.recipe.IRecipeWrapper; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.item.ItemStack; import mezz.jei.api.ingredients.IIngredients; +import mezz.jei.api.recipe.IRecipeWrapper; import appeng.api.features.IGrinderRecipe; diff --git a/src/main/java/appeng/integration/modules/jei/InscriberRecipeCategory.java b/src/main/java/appeng/integration/modules/jei/InscriberRecipeCategory.java index 274cc2bc..f5415c27 100644 --- a/src/main/java/appeng/integration/modules/jei/InscriberRecipeCategory.java +++ b/src/main/java/appeng/integration/modules/jei/InscriberRecipeCategory.java @@ -19,8 +19,6 @@ package appeng.integration.modules.jei; -import mezz.jei.api.recipe.IRecipeCategory; -import mezz.jei.api.recipe.IRecipeCategoryRegistration; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; import net.minecraft.util.ResourceLocation; @@ -32,6 +30,7 @@ import mezz.jei.api.gui.IDrawableStatic; import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; import mezz.jei.api.ingredients.IIngredients; +import mezz.jei.api.recipe.IRecipeCategory; import appeng.core.AppEng; diff --git a/src/main/java/appeng/integration/modules/jei/InscriberRecipeHandler.java b/src/main/java/appeng/integration/modules/jei/InscriberRecipeHandler.java index 2c6e1566..e87371d0 100644 --- a/src/main/java/appeng/integration/modules/jei/InscriberRecipeHandler.java +++ b/src/main/java/appeng/integration/modules/jei/InscriberRecipeHandler.java @@ -20,9 +20,9 @@ package appeng.integration.modules.jei; import mezz.jei.api.recipe.IRecipeWrapper; +import mezz.jei.api.recipe.IRecipeWrapperFactory; import appeng.api.features.IInscriberRecipe; -import mezz.jei.api.recipe.IRecipeWrapperFactory; class InscriberRecipeHandler implements IRecipeWrapperFactory diff --git a/src/main/java/appeng/integration/modules/jei/InscriberRecipeWrapper.java b/src/main/java/appeng/integration/modules/jei/InscriberRecipeWrapper.java index d380f5d4..40e6fab5 100644 --- a/src/main/java/appeng/integration/modules/jei/InscriberRecipeWrapper.java +++ b/src/main/java/appeng/integration/modules/jei/InscriberRecipeWrapper.java @@ -23,10 +23,10 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import mezz.jei.api.recipe.IRecipeWrapper; import net.minecraft.item.ItemStack; import mezz.jei.api.ingredients.IIngredients; +import mezz.jei.api.recipe.IRecipeWrapper; import appeng.api.features.IInscriberRecipe; diff --git a/src/main/java/appeng/integration/modules/jei/JEIPlugin.java b/src/main/java/appeng/integration/modules/jei/JEIPlugin.java index ba461706..9f235ba7 100644 --- a/src/main/java/appeng/integration/modules/jei/JEIPlugin.java +++ b/src/main/java/appeng/integration/modules/jei/JEIPlugin.java @@ -23,9 +23,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; -import appeng.api.features.IGrinderRecipe; -import appeng.recipes.game.ShapedRecipe; -import appeng.recipes.game.ShapelessRecipe; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; @@ -43,6 +40,7 @@ import appeng.api.config.CondenserOutput; import appeng.api.definitions.IDefinitions; import appeng.api.definitions.IItemDefinition; import appeng.api.definitions.IMaterials; +import appeng.api.features.IGrinderRecipe; import appeng.api.features.IInscriberRecipe; import appeng.container.implementations.ContainerCraftingTerm; import appeng.container.implementations.ContainerPatternTerm; @@ -51,6 +49,8 @@ import appeng.core.features.AEFeature; import appeng.core.localization.GuiText; import appeng.integration.Integrations; import appeng.items.parts.ItemFacade; +import appeng.recipes.game.ShapedRecipe; +import appeng.recipes.game.ShapelessRecipe; @mezz.jei.api.JEIPlugin diff --git a/src/main/java/appeng/integration/modules/jei/ShapelessRecipeWrapper.java b/src/main/java/appeng/integration/modules/jei/ShapelessRecipeWrapper.java index 88e16520..95c82956 100644 --- a/src/main/java/appeng/integration/modules/jei/ShapelessRecipeWrapper.java +++ b/src/main/java/appeng/integration/modules/jei/ShapelessRecipeWrapper.java @@ -24,10 +24,10 @@ import java.util.List; import com.google.common.collect.Lists; -import mezz.jei.api.recipe.IRecipeWrapper; import net.minecraft.item.ItemStack; import mezz.jei.api.ingredients.IIngredients; +import mezz.jei.api.recipe.IRecipeWrapper; import appeng.api.exceptions.MissingIngredientError; import appeng.api.exceptions.RegistrationError; diff --git a/src/main/java/appeng/items/tools/powered/ToolColorApplicator.java b/src/main/java/appeng/items/tools/powered/ToolColorApplicator.java index e53805d8..fa1fec7e 100644 --- a/src/main/java/appeng/items/tools/powered/ToolColorApplicator.java +++ b/src/main/java/appeng/items/tools/powered/ToolColorApplicator.java @@ -58,7 +58,6 @@ import appeng.api.config.FuzzyMode; import appeng.api.implementations.items.IItemGroup; import appeng.api.implementations.items.IStorageCell; import appeng.api.implementations.tiles.IColorableTile; -import appeng.api.networking.security.BaseActionSource; import appeng.api.storage.ICellInventory; import appeng.api.storage.ICellInventoryHandler; import appeng.api.storage.IMEInventory; @@ -77,6 +76,7 @@ import appeng.items.contents.CellConfig; import appeng.items.contents.CellUpgrades; import appeng.items.misc.ItemPaintBall; import appeng.items.tools.powered.powersink.AEBasePoweredItem; +import appeng.me.helpers.BaseActionSource; import appeng.me.storage.CellInventoryHandler; import appeng.tile.misc.TilePaint; import appeng.util.ItemSorters; diff --git a/src/main/java/appeng/items/tools/powered/ToolMatterCannon.java b/src/main/java/appeng/items/tools/powered/ToolMatterCannon.java index 36f35dda..cd0bc588 100644 --- a/src/main/java/appeng/items/tools/powered/ToolMatterCannon.java +++ b/src/main/java/appeng/items/tools/powered/ToolMatterCannon.java @@ -52,7 +52,6 @@ import appeng.api.config.Actionable; import appeng.api.config.FuzzyMode; import appeng.api.config.Upgrades; import appeng.api.implementations.items.IStorageCell; -import appeng.api.networking.security.PlayerSource; import appeng.api.storage.ICellInventory; import appeng.api.storage.ICellInventoryHandler; import appeng.api.storage.IMEInventory; @@ -76,6 +75,7 @@ import appeng.items.contents.CellConfig; import appeng.items.contents.CellUpgrades; import appeng.items.misc.ItemPaintBall; import appeng.items.tools.powered.powersink.AEBasePoweredItem; +import appeng.me.helpers.PlayerSource; import appeng.me.storage.CellInventoryHandler; import appeng.tile.misc.TilePaint; import appeng.util.LookDirection; diff --git a/src/main/java/appeng/me/cache/CraftingGridCache.java b/src/main/java/appeng/me/cache/CraftingGridCache.java index e9e30a8e..1afe8c31 100644 --- a/src/main/java/appeng/me/cache/CraftingGridCache.java +++ b/src/main/java/appeng/me/cache/CraftingGridCache.java @@ -67,7 +67,7 @@ import appeng.api.networking.events.MENetworkCraftingCpuChange; import appeng.api.networking.events.MENetworkCraftingPatternChange; import appeng.api.networking.events.MENetworkEventSubscribe; import appeng.api.networking.events.MENetworkPostCacheConstruction; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IStorageGrid; import appeng.api.storage.ICellProvider; import appeng.api.storage.IMEInventoryHandler; @@ -80,6 +80,7 @@ import appeng.crafting.CraftingLink; import appeng.crafting.CraftingLinkNexus; import appeng.crafting.CraftingWatcher; import appeng.me.cluster.implementations.CraftingCPUCluster; +import appeng.me.helpers.BaseActionSource; import appeng.me.helpers.GenericInterestManager; import appeng.tile.crafting.TileCraftingStorageTile; import appeng.tile.crafting.TileCraftingTile; @@ -431,7 +432,7 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper } @Override - public IAEStack injectItems( IAEStack input, final Actionable type, final BaseActionSource src ) + public IAEStack injectItems( IAEStack input, final Actionable type, final IActionSource src ) { for( final CraftingCPUCluster cpu : this.craftingCPUClusters ) { @@ -442,7 +443,7 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper } @Override - public IAEStack extractItems( final IAEStack request, final Actionable mode, final BaseActionSource src ) + public IAEStack extractItems( final IAEStack request, final Actionable mode, final IActionSource src ) { return null; } @@ -498,7 +499,7 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper } @Override - public Future beginCraftingJob( final World world, final IGrid grid, final BaseActionSource actionSrc, final IAEItemStack slotItem, final ICraftingCallback cb ) + public Future beginCraftingJob( final World world, final IGrid grid, final IActionSource actionSrc, final IAEItemStack slotItem, final ICraftingCallback cb ) { if( world == null || grid == null || actionSrc == null || slotItem == null ) { @@ -511,7 +512,7 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper } @Override - public ICraftingLink submitJob( final ICraftingJob job, final ICraftingRequester requestingMachine, final ICraftingCPU target, final boolean prioritizePower, final BaseActionSource src ) + public ICraftingLink submitJob( final ICraftingJob job, final ICraftingRequester requestingMachine, final ICraftingCPU target, final boolean prioritizePower, final IActionSource src ) { if( job.isSimulation() ) { diff --git a/src/main/java/appeng/me/cache/GridStorageCache.java b/src/main/java/appeng/me/cache/GridStorageCache.java index 54392706..976cddbb 100644 --- a/src/main/java/appeng/me/cache/GridStorageCache.java +++ b/src/main/java/appeng/me/cache/GridStorageCache.java @@ -34,10 +34,9 @@ import appeng.api.networking.IGridNode; import appeng.api.networking.IGridStorage; import appeng.api.networking.events.MENetworkCellArrayUpdate; import appeng.api.networking.events.MENetworkEventSubscribe; -import appeng.api.networking.security.BaseActionSource; import appeng.api.networking.security.IActionHost; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.security.ISecurityGrid; -import appeng.api.networking.security.MachineSource; import appeng.api.networking.storage.IStackWatcher; import appeng.api.networking.storage.IStackWatcherHost; import appeng.api.networking.storage.IStorageGrid; @@ -50,7 +49,9 @@ import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEStack; import appeng.api.storage.data.IItemList; +import appeng.me.helpers.BaseActionSource; import appeng.me.helpers.GenericInterestManager; +import appeng.me.helpers.MachineSource; import appeng.me.storage.ItemWatcher; import appeng.me.storage.NetworkInventoryHandler; @@ -161,7 +162,7 @@ public class GridStorageCache implements IStorageGrid this.inactiveCellProviders.remove( cc ); this.activeCellProviders.add( cc ); - BaseActionSource actionSrc = new BaseActionSource(); + IActionSource actionSrc = new BaseActionSource(); if( cc instanceof IActionHost ) { actionSrc = new MachineSource( (IActionHost) cc ); @@ -188,7 +189,7 @@ public class GridStorageCache implements IStorageGrid this.activeCellProviders.remove( cc ); this.inactiveCellProviders.add( cc ); - BaseActionSource actionSrc = new BaseActionSource(); + IActionSource actionSrc = new BaseActionSource(); if( cc instanceof IActionHost ) { @@ -254,7 +255,7 @@ public class GridStorageCache implements IStorageGrid tracker.applyChanges(); } - private void postChangesToNetwork( final StorageChannel chan, final int upOrDown, final IItemList availableItems, final BaseActionSource src ) + private void postChangesToNetwork( final StorageChannel chan, final int upOrDown, final IItemList availableItems, final IActionSource src ) { switch( chan ) { @@ -317,7 +318,7 @@ public class GridStorageCache implements IStorageGrid } @Override - public void postAlterationOfStoredItems( final StorageChannel chan, final Iterable input, final BaseActionSource src ) + public void postAlterationOfStoredItems( final StorageChannel chan, final Iterable input, final IActionSource src ) { if( chan == StorageChannel.ITEMS ) { @@ -371,9 +372,9 @@ public class GridStorageCache implements IStorageGrid final StorageChannel channel; final int up_or_down; final IItemList list; - final BaseActionSource src; + final IActionSource src; - public CellChangeTrackerRecord( final StorageChannel channel, final int i, final IMEInventoryHandler h, final BaseActionSource actionSrc ) + public CellChangeTrackerRecord( final StorageChannel channel, final int i, final IMEInventoryHandler h, final IActionSource actionSrc ) { this.channel = channel; this.up_or_down = i; @@ -404,7 +405,7 @@ public class GridStorageCache implements IStorageGrid final List data = new LinkedList<>(); - public void postChanges( final StorageChannel channel, final int i, final IMEInventoryHandler h, final BaseActionSource actionSrc ) + public void postChanges( final StorageChannel channel, final int i, final IMEInventoryHandler h, final IActionSource actionSrc ) { this.data.add( new CellChangeTrackerRecord( channel, i, h, actionSrc ) ); } diff --git a/src/main/java/appeng/me/cache/NetworkMonitor.java b/src/main/java/appeng/me/cache/NetworkMonitor.java index 553d6dec..6b05a329 100644 --- a/src/main/java/appeng/me/cache/NetworkMonitor.java +++ b/src/main/java/appeng/me/cache/NetworkMonitor.java @@ -36,7 +36,7 @@ import com.google.common.collect.Lists; import appeng.api.config.AccessRestriction; import appeng.api.config.Actionable; import appeng.api.networking.events.MENetworkStorageEvent; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.IMEInventoryHandler; import appeng.api.storage.IMEMonitor; import appeng.api.storage.IMEMonitorHandlerReceiver; @@ -86,7 +86,7 @@ public class NetworkMonitor> implements IMEMonitor } @Override - public T extractItems( final T request, final Actionable mode, final BaseActionSource src ) + public T extractItems( final T request, final Actionable mode, final IActionSource src ) { if( mode == Actionable.SIMULATE ) { @@ -150,7 +150,7 @@ public class NetworkMonitor> implements IMEMonitor } @Override - public T injectItems( final T input, final Actionable mode, final BaseActionSource src ) + public T injectItems( final T input, final Actionable mode, final IActionSource src ) { if( mode == Actionable.SIMULATE ) { @@ -207,7 +207,7 @@ public class NetworkMonitor> implements IMEMonitor return this.listeners.entrySet().iterator(); } - private T monitorDifference( final IAEStack original, final T leftOvers, final boolean extraction, final BaseActionSource src ) + private T monitorDifference( final IAEStack original, final T leftOvers, final boolean extraction, final IActionSource src ) { final T diff = (T) original.copy(); @@ -228,7 +228,7 @@ public class NetworkMonitor> implements IMEMonitor return leftOvers; } - private void notifyListenersOfChange( final Iterable diff, final BaseActionSource src ) + private void notifyListenersOfChange( final Iterable diff, final IActionSource src ) { this.hasChanged = true; final Iterator, Object>> i = this.getListeners(); @@ -248,12 +248,12 @@ public class NetworkMonitor> implements IMEMonitor } } - private void postChangesToListeners( final Iterable changes, final BaseActionSource src ) + private void postChangesToListeners( final Iterable changes, final IActionSource src ) { this.postChange( true, changes, src ); } - protected void postChange( final boolean add, final Iterable changes, final BaseActionSource src ) + protected void postChange( final boolean add, final Iterable changes, final IActionSource src ) { if( this.localDepthSemaphore > 0 || GLOBAL_DEPTH.contains( this ) ) { diff --git a/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java b/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java index 20d75d26..4b670fab 100644 --- a/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java +++ b/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java @@ -55,8 +55,7 @@ import appeng.api.networking.crafting.ICraftingPatternDetails; import appeng.api.networking.crafting.ICraftingRequester; import appeng.api.networking.energy.IEnergyGrid; import appeng.api.networking.events.MENetworkCraftingCpuChange; -import appeng.api.networking.security.BaseActionSource; -import appeng.api.networking.security.MachineSource; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IStorageGrid; import appeng.api.storage.IMEInventory; import appeng.api.storage.IMEMonitorHandlerReceiver; @@ -73,6 +72,7 @@ import appeng.crafting.CraftingWatcher; import appeng.crafting.MECraftingInventory; import appeng.me.cache.CraftingGridCache; import appeng.me.cluster.IAECluster; +import appeng.me.helpers.MachineSource; import appeng.tile.crafting.TileCraftingMonitorTile; import appeng.tile.crafting.TileCraftingTile; import appeng.util.Platform; @@ -236,7 +236,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU return false; } - public IAEStack injectItems( final IAEStack input, final Actionable type, final BaseActionSource src ) + public IAEStack injectItems( final IAEStack input, final Actionable type, final IActionSource src ) { if( !( input instanceof IAEItemStack ) ) { @@ -365,7 +365,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU return input; } - private void postChange( final IAEItemStack diff, final BaseActionSource src ) + private void postChange( final IAEItemStack diff, final IActionSource src ) { final Iterator, Object>> i = this.getListeners(); @@ -469,7 +469,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { return null; } - return (TileCraftingTile) this.machineSrc.via; + return (TileCraftingTile) this.machineSrc.machine().get(); } private IGrid getGrid() @@ -844,7 +844,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU this.markDirty(); } - public ICraftingLink submitJob( final IGrid g, final ICraftingJob job, final BaseActionSource src, final ICraftingRequester requestingMachine ) + public ICraftingLink submitJob( final IGrid g, final ICraftingJob job, final IActionSource src, final ICraftingRequester requestingMachine ) { if( !this.tasks.isEmpty() || !this.waitingFor.isEmpty() ) { @@ -935,7 +935,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU } @Override - public BaseActionSource getActionSource() + public IActionSource getActionSource() { return this.machineSrc; } diff --git a/src/main/java/appeng/me/helpers/BaseActionSource.java b/src/main/java/appeng/me/helpers/BaseActionSource.java new file mode 100644 index 00000000..4c7ded5b --- /dev/null +++ b/src/main/java/appeng/me/helpers/BaseActionSource.java @@ -0,0 +1,50 @@ +/* + * This file is part of Applied Energistics 2. + * Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved. + * + * Applied Energistics 2 is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Applied Energistics 2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Applied Energistics 2. If not, see . + */ + +package appeng.me.helpers; + + +import java.util.Optional; + +import net.minecraft.entity.player.EntityPlayer; + +import appeng.api.networking.security.IActionHost; +import appeng.api.networking.security.IActionSource; + + +public class BaseActionSource implements IActionSource +{ + + @Override + public Optional player() + { + return Optional.empty(); + } + + @Override + public Optional machine() + { + return Optional.empty(); + } + + @Override + public Optional context( Class key ) + { + return Optional.empty(); + } +} diff --git a/src/main/java/appeng/me/helpers/MachineSource.java b/src/main/java/appeng/me/helpers/MachineSource.java new file mode 100644 index 00000000..27bc9c38 --- /dev/null +++ b/src/main/java/appeng/me/helpers/MachineSource.java @@ -0,0 +1,58 @@ +/* + * This file is part of Applied Energistics 2. + * Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved. + * + * Applied Energistics 2 is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Applied Energistics 2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Applied Energistics 2. If not, see . + */ + +package appeng.me.helpers; + + +import java.util.Optional; + +import net.minecraft.entity.player.EntityPlayer; + +import appeng.api.networking.security.IActionHost; +import appeng.api.networking.security.IActionSource; + + +public class MachineSource implements IActionSource +{ + + private final IActionHost via; + + public MachineSource( final IActionHost v ) + { + this.via = v; + } + + @Override + public Optional player() + { + return Optional.empty(); + } + + @Override + public Optional machine() + { + return Optional.of( this.via ); + } + + @Override + public Optional context( Class key ) + { + return Optional.empty(); + } + +} diff --git a/src/main/java/appeng/me/helpers/PlayerSource.java b/src/main/java/appeng/me/helpers/PlayerSource.java new file mode 100644 index 00000000..2024d56f --- /dev/null +++ b/src/main/java/appeng/me/helpers/PlayerSource.java @@ -0,0 +1,62 @@ +/* + * This file is part of Applied Energistics 2. + * Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved. + * + * Applied Energistics 2 is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Applied Energistics 2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Applied Energistics 2. If not, see . + */ + +package appeng.me.helpers; + + +import java.util.Optional; + +import com.google.common.base.Preconditions; + +import net.minecraft.entity.player.EntityPlayer; + +import appeng.api.networking.security.IActionHost; +import appeng.api.networking.security.IActionSource; + + +public class PlayerSource implements IActionSource +{ + + private final EntityPlayer player; + private final IActionHost via; + + public PlayerSource( final EntityPlayer p, final IActionHost v ) + { + Preconditions.checkNotNull( p ); + this.player = p; + this.via = v; + } + + @Override + public Optional player() + { + return Optional.of( this.player ); + } + + @Override + public Optional machine() + { + return Optional.ofNullable( this.via ); + } + + @Override + public Optional context( Class key ) + { + return Optional.empty(); + } +} diff --git a/src/main/java/appeng/me/storage/CellInventory.java b/src/main/java/appeng/me/storage/CellInventory.java index b9bedeea..50b46afe 100644 --- a/src/main/java/appeng/me/storage/CellInventory.java +++ b/src/main/java/appeng/me/storage/CellInventory.java @@ -33,7 +33,7 @@ import appeng.api.config.Actionable; import appeng.api.config.FuzzyMode; import appeng.api.exceptions.AppEngException; import appeng.api.implementations.items.IStorageCell; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.ICellInventory; import appeng.api.storage.IMEInventory; import appeng.api.storage.IMEInventoryHandler; @@ -202,7 +202,7 @@ public class CellInventory implements ICellInventory } @Override - public IAEItemStack injectItems( final IAEItemStack input, final Actionable mode, final BaseActionSource src ) + public IAEItemStack injectItems( final IAEItemStack input, final Actionable mode, final IActionSource src ) { if( input == null ) { @@ -299,7 +299,7 @@ public class CellInventory implements ICellInventory } @Override - public IAEItemStack extractItems( final IAEItemStack request, final Actionable mode, final BaseActionSource src ) + public IAEItemStack extractItems( final IAEItemStack request, final Actionable mode, final IActionSource src ) { if( request == null ) { diff --git a/src/main/java/appeng/me/storage/CreativeCellInventory.java b/src/main/java/appeng/me/storage/CreativeCellInventory.java index a89bf785..3cd6c50c 100644 --- a/src/main/java/appeng/me/storage/CreativeCellInventory.java +++ b/src/main/java/appeng/me/storage/CreativeCellInventory.java @@ -24,7 +24,7 @@ import net.minecraft.item.ItemStack; import appeng.api.AEApi; import appeng.api.config.AccessRestriction; import appeng.api.config.Actionable; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.IMEInventoryHandler; import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEItemStack; @@ -58,7 +58,7 @@ public class CreativeCellInventory implements IMEInventoryHandler } @Override - public IAEItemStack injectItems( final IAEItemStack input, final Actionable mode, final BaseActionSource src ) + public IAEItemStack injectItems( final IAEItemStack input, final Actionable mode, final IActionSource src ) { final IAEItemStack local = this.itemListCache.findPrecise( input ); if( local == null ) @@ -70,7 +70,7 @@ public class CreativeCellInventory implements IMEInventoryHandler } @Override - public IAEItemStack extractItems( final IAEItemStack request, final Actionable mode, final BaseActionSource src ) + public IAEItemStack extractItems( final IAEItemStack request, final Actionable mode, final IActionSource src ) { final IAEItemStack local = this.itemListCache.findPrecise( request ); if( local == null ) diff --git a/src/main/java/appeng/me/storage/DriveWatcher.java b/src/main/java/appeng/me/storage/DriveWatcher.java index c827aa25..43147b4f 100644 --- a/src/main/java/appeng/me/storage/DriveWatcher.java +++ b/src/main/java/appeng/me/storage/DriveWatcher.java @@ -23,7 +23,7 @@ import net.minecraft.item.ItemStack; import appeng.api.config.Actionable; import appeng.api.implementations.tiles.IChestOrDrive; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.ICellHandler; import appeng.api.storage.IMEInventory; import appeng.api.storage.data.IAEStack; @@ -46,7 +46,7 @@ public class DriveWatcher> extends MEInventoryHandler } @Override - public T injectItems( final T input, final Actionable type, final BaseActionSource src ) + public T injectItems( final T input, final Actionable type, final IActionSource src ) { final long size = input.getStackSize(); @@ -67,7 +67,7 @@ public class DriveWatcher> extends MEInventoryHandler } @Override - public T extractItems( final T request, final Actionable type, final BaseActionSource src ) + public T extractItems( final T request, final Actionable type, final IActionSource src ) { final T a = super.extractItems( request, type, src ); diff --git a/src/main/java/appeng/me/storage/ITickingMonitor.java b/src/main/java/appeng/me/storage/ITickingMonitor.java index 1dca452a..8ddf4b87 100644 --- a/src/main/java/appeng/me/storage/ITickingMonitor.java +++ b/src/main/java/appeng/me/storage/ITickingMonitor.java @@ -19,7 +19,7 @@ package appeng.me.storage; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.ticking.TickRateModulation; @@ -28,6 +28,6 @@ public interface ITickingMonitor TickRateModulation onTick(); - void setActionSource( BaseActionSource actionSource ); + void setActionSource( IActionSource actionSource ); } diff --git a/src/main/java/appeng/me/storage/MEInventoryHandler.java b/src/main/java/appeng/me/storage/MEInventoryHandler.java index 3049daef..2404c816 100644 --- a/src/main/java/appeng/me/storage/MEInventoryHandler.java +++ b/src/main/java/appeng/me/storage/MEInventoryHandler.java @@ -22,7 +22,7 @@ package appeng.me.storage; import appeng.api.config.AccessRestriction; import appeng.api.config.Actionable; import appeng.api.config.IncludeExclude; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.IMEInventory; import appeng.api.storage.IMEInventoryHandler; import appeng.api.storage.StorageChannel; @@ -96,7 +96,7 @@ public class MEInventoryHandler> implements IMEInventoryHa } @Override - public T injectItems( final T input, final Actionable type, final BaseActionSource src ) + public T injectItems( final T input, final Actionable type, final IActionSource src ) { if( !this.canAccept( input ) ) { @@ -107,7 +107,7 @@ public class MEInventoryHandler> implements IMEInventoryHa } @Override - public T extractItems( final T request, final Actionable type, final BaseActionSource src ) + public T extractItems( final T request, final Actionable type, final IActionSource src ) { if( !this.hasReadAccess ) { diff --git a/src/main/java/appeng/me/storage/MEMonitorIInventory.java b/src/main/java/appeng/me/storage/MEMonitorIInventory.java index c5845081..0b572360 100644 --- a/src/main/java/appeng/me/storage/MEMonitorIInventory.java +++ b/src/main/java/appeng/me/storage/MEMonitorIInventory.java @@ -32,7 +32,7 @@ import appeng.api.AEApi; import appeng.api.config.AccessRestriction; import appeng.api.config.Actionable; import appeng.api.config.StorageFilter; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.ticking.TickRateModulation; import appeng.api.storage.IMEMonitor; import appeng.api.storage.IMEMonitorHandlerReceiver; @@ -51,7 +51,7 @@ public class MEMonitorIInventory implements IMEMonitor, ITickingMo private final IItemList list = AEApi.instance().storage().createItemList(); private final HashMap, Object> listeners = new HashMap<>(); private final NavigableMap memory; - private BaseActionSource mySource; + private IActionSource mySource; private StorageFilter mode = StorageFilter.EXTRACTABLE_ONLY; public MEMonitorIInventory( final InventoryAdaptor adaptor ) @@ -73,7 +73,7 @@ public class MEMonitorIInventory implements IMEMonitor, ITickingMo } @Override - public IAEItemStack injectItems( final IAEItemStack input, final Actionable type, final BaseActionSource src ) + public IAEItemStack injectItems( final IAEItemStack input, final Actionable type, final IActionSource src ) { ItemStack out = ItemStack.EMPTY; @@ -103,7 +103,7 @@ public class MEMonitorIInventory implements IMEMonitor, ITickingMo } @Override - public IAEItemStack extractItems( final IAEItemStack request, final Actionable type, final BaseActionSource src ) + public IAEItemStack extractItems( final IAEItemStack request, final Actionable type, final IActionSource src ) { ItemStack out = ItemStack.EMPTY; @@ -325,13 +325,13 @@ public class MEMonitorIInventory implements IMEMonitor, ITickingMo this.mode = mode; } - private BaseActionSource getActionSource() + private IActionSource getActionSource() { return this.mySource; } @Override - public void setActionSource( final BaseActionSource mySource ) + public void setActionSource( final IActionSource mySource ) { this.mySource = mySource; } diff --git a/src/main/java/appeng/me/storage/MEMonitorPassThrough.java b/src/main/java/appeng/me/storage/MEMonitorPassThrough.java index 8b41d0b1..14b7943d 100644 --- a/src/main/java/appeng/me/storage/MEMonitorPassThrough.java +++ b/src/main/java/appeng/me/storage/MEMonitorPassThrough.java @@ -23,7 +23,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IBaseMonitor; import appeng.api.storage.IMEInventory; import appeng.api.storage.IMEMonitor; @@ -39,7 +39,7 @@ public class MEMonitorPassThrough> extends MEPassThrough, Object> listeners = new HashMap<>(); - private BaseActionSource changeSource; + private IActionSource changeSource; private IMEMonitor monitor; public MEMonitorPassThrough( final IMEInventory i, final StorageChannel channel ) @@ -118,7 +118,7 @@ public class MEMonitorPassThrough> extends MEPassThrough monitor, final Iterable change, final BaseActionSource source ) + public void postChange( final IBaseMonitor monitor, final Iterable change, final IActionSource source ) { final Iterator, Object>> i = this.listeners.entrySet().iterator(); while( i.hasNext() ) @@ -155,12 +155,12 @@ public class MEMonitorPassThrough> extends MEPassThrough> implements IMEInventoryHandler } @Override - public T injectItems( final T input, final Actionable type, final BaseActionSource src ) + public T injectItems( final T input, final Actionable type, final IActionSource src ) { return this.internal.injectItems( input, type, src ); } @Override - public T extractItems( final T request, final Actionable type, final BaseActionSource src ) + public T extractItems( final T request, final Actionable type, final IActionSource src ) { return this.internal.extractItems( request, type, src ); } diff --git a/src/main/java/appeng/me/storage/NetworkInventoryHandler.java b/src/main/java/appeng/me/storage/NetworkInventoryHandler.java index 63a79931..8dff6cfa 100644 --- a/src/main/java/appeng/me/storage/NetworkInventoryHandler.java +++ b/src/main/java/appeng/me/storage/NetworkInventoryHandler.java @@ -32,10 +32,8 @@ import appeng.api.config.Actionable; import appeng.api.config.SecurityPermissions; import appeng.api.networking.IGrid; import appeng.api.networking.IGridNode; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.security.ISecurityGrid; -import appeng.api.networking.security.MachineSource; -import appeng.api.networking.security.PlayerSource; import appeng.api.storage.IMEInventoryHandler; import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEStack; @@ -77,7 +75,7 @@ public class NetworkInventoryHandler> implements IMEInvent } @Override - public T injectItems( T input, final Actionable type, final BaseActionSource src ) + public T injectItems( T input, final Actionable type, final IActionSource src ) { if( this.diveList( this, type ) ) { @@ -137,20 +135,20 @@ public class NetworkInventoryHandler> implements IMEInvent return false; } - private boolean testPermission( final BaseActionSource src, final SecurityPermissions permission ) + private boolean testPermission( final IActionSource src, final SecurityPermissions permission ) { - if( src.isPlayer() ) + if( src.player().isPresent() ) { - if( !this.security.hasPermission( ( (PlayerSource) src ).player, permission ) ) + if( !this.security.hasPermission( src.player().get(), permission ) ) { return true; } } - else if( src.isMachine() ) + else if( src.machine().isPresent() ) { if( this.security.isAvailable() ) { - final IGridNode n = ( (MachineSource) src ).via.getActionableNode(); + final IGridNode n = src.machine().get().getActionableNode(); if( n == null ) { return true; @@ -197,7 +195,7 @@ public class NetworkInventoryHandler> implements IMEInvent } @Override - public T extractItems( T request, final Actionable mode, final BaseActionSource src ) + public T extractItems( T request, final Actionable mode, final IActionSource src ) { if( this.diveList( this, mode ) ) { diff --git a/src/main/java/appeng/me/storage/NullInventory.java b/src/main/java/appeng/me/storage/NullInventory.java index f674a192..6e0faae5 100644 --- a/src/main/java/appeng/me/storage/NullInventory.java +++ b/src/main/java/appeng/me/storage/NullInventory.java @@ -21,7 +21,7 @@ package appeng.me.storage; import appeng.api.config.AccessRestriction; import appeng.api.config.Actionable; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.IMEInventoryHandler; import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEStack; @@ -32,13 +32,13 @@ public class NullInventory> implements IMEInventoryHandler { @Override - public T injectItems( final T input, final Actionable mode, final BaseActionSource src ) + public T injectItems( final T input, final Actionable mode, final IActionSource src ) { return input; } @Override - public T extractItems( final T request, final Actionable mode, final BaseActionSource src ) + public T extractItems( final T request, final Actionable mode, final IActionSource src ) { return null; } diff --git a/src/main/java/appeng/me/storage/SecurityStationInventory.java b/src/main/java/appeng/me/storage/SecurityStationInventory.java index f6727cf2..91061136 100644 --- a/src/main/java/appeng/me/storage/SecurityStationInventory.java +++ b/src/main/java/appeng/me/storage/SecurityStationInventory.java @@ -26,8 +26,7 @@ import appeng.api.config.AccessRestriction; import appeng.api.config.Actionable; import appeng.api.config.SecurityPermissions; import appeng.api.implementations.items.IBiometricCard; -import appeng.api.networking.security.BaseActionSource; -import appeng.api.networking.security.PlayerSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.IMEInventoryHandler; import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEItemStack; @@ -48,7 +47,7 @@ public class SecurityStationInventory implements IMEInventoryHandler destination = null; private IAEItemStack lastItemChecked = null; private int itemToSend; // used in tickingRequest diff --git a/src/main/java/appeng/parts/automation/PartLevelEmitter.java b/src/main/java/appeng/parts/automation/PartLevelEmitter.java index 729c0bec..a525e19f 100644 --- a/src/main/java/appeng/parts/automation/PartLevelEmitter.java +++ b/src/main/java/appeng/parts/automation/PartLevelEmitter.java @@ -54,7 +54,7 @@ import appeng.api.networking.events.MENetworkChannelsChanged; import appeng.api.networking.events.MENetworkCraftingPatternChange; import appeng.api.networking.events.MENetworkEventSubscribe; import appeng.api.networking.events.MENetworkPowerStatusChange; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IBaseMonitor; import appeng.api.networking.storage.IStackWatcher; import appeng.api.networking.storage.IStackWatcherHost; @@ -354,7 +354,7 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH } @Override - public void onStackChange( final IItemList o, final IAEStack fullStack, final IAEStack diffStack, final BaseActionSource src, final StorageChannel chan ) + public void onStackChange( final IItemList o, final IAEStack fullStack, final IAEStack diffStack, final IActionSource src, final StorageChannel chan ) { if( chan == StorageChannel.ITEMS && fullStack.equals( this.config.getAEStackInSlot( 0 ) ) && this.getInstalledUpgrades( Upgrades.FUZZY ) == 0 ) { @@ -391,7 +391,7 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH } @Override - public void postChange( final IBaseMonitor monitor, final Iterable change, final BaseActionSource actionSource ) + public void postChange( final IBaseMonitor monitor, final Iterable change, final IActionSource actionSource ) { this.updateReportingValue( (IMEMonitor) monitor ); } diff --git a/src/main/java/appeng/parts/misc/ItemHandlerAdapter.java b/src/main/java/appeng/parts/misc/ItemHandlerAdapter.java index 6ee6070e..5dd1c1dc 100644 --- a/src/main/java/appeng/parts/misc/ItemHandlerAdapter.java +++ b/src/main/java/appeng/parts/misc/ItemHandlerAdapter.java @@ -30,7 +30,7 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.items.IItemHandler; import appeng.api.config.Actionable; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IBaseMonitor; import appeng.api.networking.ticking.TickRateModulation; import appeng.api.storage.IMEInventory; @@ -52,7 +52,7 @@ class ItemHandlerAdapter implements IMEInventory, IBaseMonitor, Object> listeners = new HashMap<>(); - private BaseActionSource mySource; + private IActionSource mySource; private final IItemHandler itemHandler; @@ -66,7 +66,7 @@ class ItemHandlerAdapter implements IMEInventory, IBaseMonitor, IBaseMonitor, IBaseMonitor monitor, final Iterable change, final BaseActionSource source ) + public void postChange( final IBaseMonitor monitor, final Iterable change, final IActionSource source ) { try { diff --git a/src/main/java/appeng/parts/reporting/AbstractPartMonitor.java b/src/main/java/appeng/parts/reporting/AbstractPartMonitor.java index b6241079..6e4b5dd8 100644 --- a/src/main/java/appeng/parts/reporting/AbstractPartMonitor.java +++ b/src/main/java/appeng/parts/reporting/AbstractPartMonitor.java @@ -36,7 +36,7 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import appeng.api.implementations.parts.IPartStorageMonitor; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IStackWatcher; import appeng.api.networking.storage.IStackWatcherHost; import appeng.api.parts.IPartModel; @@ -287,7 +287,7 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements } @Override - public void onStackChange( final IItemList o, final IAEStack fullStack, final IAEStack diffStack, final BaseActionSource src, final StorageChannel chan ) + public void onStackChange( final IItemList o, final IAEStack fullStack, final IAEStack diffStack, final IActionSource src, final StorageChannel chan ) { if( this.configuredItem != null ) { diff --git a/src/main/java/appeng/parts/reporting/PartConversionMonitor.java b/src/main/java/appeng/parts/reporting/PartConversionMonitor.java index 08871164..ae622950 100644 --- a/src/main/java/appeng/parts/reporting/PartConversionMonitor.java +++ b/src/main/java/appeng/parts/reporting/PartConversionMonitor.java @@ -30,7 +30,6 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.Vec3d; import appeng.api.networking.energy.IEnergySource; -import appeng.api.networking.security.PlayerSource; import appeng.api.parts.IPartModel; import appeng.api.storage.IMEMonitor; import appeng.api.storage.data.IAEItemStack; @@ -38,6 +37,7 @@ import appeng.core.AppEng; import appeng.helpers.Reflected; import appeng.items.parts.PartModels; import appeng.me.GridAccessException; +import appeng.me.helpers.PlayerSource; import appeng.parts.PartModel; import appeng.util.InventoryAdaptor; import appeng.util.Platform; diff --git a/src/main/java/appeng/tile/misc/CondenserFluidInventory.java b/src/main/java/appeng/tile/misc/CondenserFluidInventory.java index 8bd07af7..39b51e3c 100644 --- a/src/main/java/appeng/tile/misc/CondenserFluidInventory.java +++ b/src/main/java/appeng/tile/misc/CondenserFluidInventory.java @@ -21,7 +21,7 @@ package appeng.tile.misc; import appeng.api.config.AccessRestriction; import appeng.api.config.Actionable; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.IMEMonitor; import appeng.api.storage.IMEMonitorHandlerReceiver; import appeng.api.storage.StorageChannel; @@ -41,7 +41,7 @@ class CondenserFluidInventory implements IMEMonitor } @Override - public IAEFluidStack injectItems( final IAEFluidStack input, final Actionable mode, final BaseActionSource src ) + public IAEFluidStack injectItems( final IAEFluidStack input, final Actionable mode, final IActionSource src ) { if( mode == Actionable.SIMULATE ) { @@ -56,7 +56,7 @@ class CondenserFluidInventory implements IMEMonitor } @Override - public IAEFluidStack extractItems( final IAEFluidStack request, final Actionable mode, final BaseActionSource src ) + public IAEFluidStack extractItems( final IAEFluidStack request, final Actionable mode, final IActionSource src ) { return null; } diff --git a/src/main/java/appeng/tile/misc/CondenserItemInventory.java b/src/main/java/appeng/tile/misc/CondenserItemInventory.java index a782e2c5..32832a77 100644 --- a/src/main/java/appeng/tile/misc/CondenserItemInventory.java +++ b/src/main/java/appeng/tile/misc/CondenserItemInventory.java @@ -21,7 +21,7 @@ package appeng.tile.misc; import appeng.api.config.AccessRestriction; import appeng.api.config.Actionable; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.IMEMonitor; import appeng.api.storage.IMEMonitorHandlerReceiver; import appeng.api.storage.StorageChannel; @@ -41,7 +41,7 @@ class CondenserItemInventory implements IMEMonitor } @Override - public IAEItemStack injectItems( final IAEItemStack input, final Actionable mode, final BaseActionSource src ) + public IAEItemStack injectItems( final IAEItemStack input, final Actionable mode, final IActionSource src ) { if( mode == Actionable.MODULATE && input != null ) { @@ -52,7 +52,7 @@ class CondenserItemInventory implements IMEMonitor } @Override - public IAEItemStack extractItems( final IAEItemStack request, final Actionable mode, final BaseActionSource src ) + public IAEItemStack extractItems( final IAEItemStack request, final Actionable mode, final IActionSource src ) { return null; } diff --git a/src/main/java/appeng/tile/misc/TileCondenser.java b/src/main/java/appeng/tile/misc/TileCondenser.java index 28c7c7a4..a25816d9 100644 --- a/src/main/java/appeng/tile/misc/TileCondenser.java +++ b/src/main/java/appeng/tile/misc/TileCondenser.java @@ -38,7 +38,7 @@ import appeng.api.config.CondenserOutput; import appeng.api.config.Settings; import appeng.api.definitions.IMaterials; import appeng.api.implementations.items.IStorageComponent; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.IMEMonitor; import appeng.api.storage.IStorageMonitorable; import appeng.api.storage.IStorageMonitorableAccessor; @@ -336,7 +336,7 @@ public class TileCondenser extends AEBaseInvTile implements IConfigManagerHost, @Nullable @Override - public IStorageMonitorable getInventory( BaseActionSource src ) + public IStorageMonitorable getInventory( IActionSource src ) { return this; } diff --git a/src/main/java/appeng/tile/storage/TileChest.java b/src/main/java/appeng/tile/storage/TileChest.java index 063aa4de..1a74ee71 100644 --- a/src/main/java/appeng/tile/storage/TileChest.java +++ b/src/main/java/appeng/tile/storage/TileChest.java @@ -64,11 +64,9 @@ import appeng.api.networking.events.MENetworkEventSubscribe; import appeng.api.networking.events.MENetworkPowerStatusChange; import appeng.api.networking.events.MENetworkPowerStorage; import appeng.api.networking.events.MENetworkPowerStorage.PowerEventType; -import appeng.api.networking.security.BaseActionSource; import appeng.api.networking.security.IActionHost; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.security.ISecurityGrid; -import appeng.api.networking.security.MachineSource; -import appeng.api.networking.security.PlayerSource; import appeng.api.networking.storage.IBaseMonitor; import appeng.api.networking.storage.IStorageGrid; import appeng.api.storage.ICellHandler; @@ -89,6 +87,7 @@ import appeng.api.util.IConfigManager; import appeng.capabilities.Capabilities; import appeng.helpers.IPriorityHost; import appeng.me.GridAccessException; +import appeng.me.helpers.MachineSource; import appeng.me.storage.MEInventoryHandler; import appeng.tile.grid.AENetworkPowerTile; import appeng.tile.inventory.AppEngInternalInventory; @@ -111,7 +110,7 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal private final AppEngInternalInventory cellInventory = new AppEngInternalInventory( this, 1 ); private final IItemHandler internalInventory = new WrapperChainedItemHandler( this.inputInventory, this.cellInventory ); - private final BaseActionSource mySrc = new MachineSource( this ); + private final IActionSource mySrc = new MachineSource( this ); private final IConfigManager config = new ConfigManager( this ); private ItemStack storageType = ItemStack.EMPTY; private long lastStateChange = 0; @@ -797,9 +796,9 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal } @Override - public void postChange( final IBaseMonitor monitor, final Iterable change, final BaseActionSource source ) + public void postChange( final IBaseMonitor monitor, final Iterable change, final IActionSource source ) { - if( source == TileChest.this.mySrc || ( source instanceof PlayerSource && ( (PlayerSource) source ).via == TileChest.this ) ) + if( source == TileChest.this.mySrc || source.machine().map( machine -> machine == TileChest.this ).orElse( false ) ) { try { @@ -843,9 +842,9 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal } @Override - public T injectItems( final T input, final Actionable mode, final BaseActionSource src ) + public T injectItems( final T input, final Actionable mode, final IActionSource src ) { - if( src.isPlayer() && !this.securityCheck( ( (PlayerSource) src ).player, SecurityPermissions.INJECT ) ) + if( src.player().map( player -> !this.securityCheck( player, SecurityPermissions.INJECT ) ).orElse( false ) ) { return input; } @@ -887,9 +886,9 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal } @Override - public T extractItems( final T request, final Actionable mode, final BaseActionSource src ) + public T extractItems( final T request, final Actionable mode, final IActionSource src ) { - if( src.isPlayer() && !this.securityCheck( ( (PlayerSource) src ).player, SecurityPermissions.EXTRACT ) ) + if( src.player().map( player -> !this.securityCheck( player, SecurityPermissions.EXTRACT ) ).orElse( false ) ) { return null; } @@ -930,7 +929,7 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, ITerminal { @Nullable @Override - public IStorageMonitorable getInventory( BaseActionSource src ) + public IStorageMonitorable getInventory( IActionSource src ) { if( Platform.canAccess( TileChest.this.getProxy(), src ) ) { diff --git a/src/main/java/appeng/tile/storage/TileDrive.java b/src/main/java/appeng/tile/storage/TileDrive.java index 1b4ddaf4..f040ffea 100644 --- a/src/main/java/appeng/tile/storage/TileDrive.java +++ b/src/main/java/appeng/tile/storage/TileDrive.java @@ -37,8 +37,7 @@ import appeng.api.networking.events.MENetworkCellArrayUpdate; import appeng.api.networking.events.MENetworkChannelsChanged; import appeng.api.networking.events.MENetworkEventSubscribe; import appeng.api.networking.events.MENetworkPowerStatusChange; -import appeng.api.networking.security.BaseActionSource; -import appeng.api.networking.security.MachineSource; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IStorageGrid; import appeng.api.storage.ICellHandler; import appeng.api.storage.IMEInventory; @@ -50,6 +49,7 @@ import appeng.api.util.AEPartLocation; import appeng.api.util.DimensionalCoord; import appeng.helpers.IPriorityHost; import appeng.me.GridAccessException; +import appeng.me.helpers.MachineSource; import appeng.me.storage.DriveWatcher; import appeng.me.storage.MEInventoryHandler; import appeng.tile.grid.AENetworkInvTile; @@ -69,7 +69,7 @@ public class TileDrive extends AENetworkInvTile implements IChestOrDrive, IPrior private final AppEngInternalInventory inv = new AppEngInternalInventory( this, 10, 1 ); private final ICellHandler[] handlersBySlot = new ICellHandler[10]; private final DriveWatcher[] invBySlot = new DriveWatcher[10]; - private final BaseActionSource mySrc; + private final IActionSource mySrc; private boolean isCached = false; private List items = new LinkedList<>(); private List fluids = new LinkedList<>(); diff --git a/src/main/java/appeng/tile/storage/TileIOPort.java b/src/main/java/appeng/tile/storage/TileIOPort.java index 4ec66ef1..7285d025 100644 --- a/src/main/java/appeng/tile/storage/TileIOPort.java +++ b/src/main/java/appeng/tile/storage/TileIOPort.java @@ -41,8 +41,7 @@ import appeng.api.implementations.IUpgradeableHost; import appeng.api.networking.GridFlags; import appeng.api.networking.IGridNode; import appeng.api.networking.energy.IEnergySource; -import appeng.api.networking.security.BaseActionSource; -import appeng.api.networking.security.MachineSource; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.ticking.IGridTickable; import appeng.api.networking.ticking.TickRateModulation; import appeng.api.networking.ticking.TickingRequest; @@ -59,6 +58,7 @@ import appeng.api.util.DimensionalCoord; import appeng.api.util.IConfigManager; import appeng.core.settings.TickRates; import appeng.me.GridAccessException; +import appeng.me.helpers.MachineSource; import appeng.parts.automation.BlockUpgradeInventory; import appeng.parts.automation.UpgradeInventory; import appeng.tile.grid.AENetworkInvTile; @@ -87,7 +87,7 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC private final IItemHandler outputCellsExt = new WrapperFilteredItemHandler( this.outputCells, AEItemFilters.EXTRACT_ONLY ); private final UpgradeInventory upgrades; - private final BaseActionSource mySrc; + private final IActionSource mySrc; private YesNo lastRedstoneState; private ItemStack currentCell; private IMEInventory cachedFluid; diff --git a/src/main/java/appeng/util/Platform.java b/src/main/java/appeng/util/Platform.java index 6e5b6692..25afdf3d 100644 --- a/src/main/java/appeng/util/Platform.java +++ b/src/main/java/appeng/util/Platform.java @@ -71,11 +71,9 @@ import net.minecraftforge.common.util.FakePlayerFactory; import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.ModContainer; -import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.oredict.OreDictionary; -import net.minecraftforge.registries.IForgeRegistry; import appeng.api.AEApi; import appeng.api.config.AccessRestriction; @@ -94,11 +92,9 @@ import appeng.api.networking.IGrid; import appeng.api.networking.IGridNode; import appeng.api.networking.energy.IEnergyGrid; import appeng.api.networking.energy.IEnergySource; -import appeng.api.networking.security.BaseActionSource; import appeng.api.networking.security.IActionHost; +import appeng.api.networking.security.IActionSource; import appeng.api.networking.security.ISecurityGrid; -import appeng.api.networking.security.MachineSource; -import appeng.api.networking.security.PlayerSource; import appeng.api.networking.storage.IStorageGrid; import appeng.api.storage.IMEInventory; import appeng.api.storage.IMEMonitor; @@ -1162,7 +1158,7 @@ public class Platform return 0; } - public static StackType poweredExtraction( final IEnergySource energy, final IMEInventory cell, final StackType request, final BaseActionSource src ) + public static StackType poweredExtraction( final IEnergySource energy, final IMEInventory cell, final StackType request, final IActionSource src ) { final StackType possible = cell.extractItems( (StackType) request.copy(), Actionable.SIMULATE, src ); @@ -1183,9 +1179,9 @@ public class Platform possible.setStackSize( itemToExtract ); final StackType ret = cell.extractItems( possible, Actionable.MODULATE, src ); - if( ret != null && src.isPlayer() ) + if( ret != null ) { - Stats.ItemsExtracted.addToPlayer( ( (PlayerSource) src ).player, (int) ret.getStackSize() ); + src.player().ifPresent( player -> Stats.ItemsExtracted.addToPlayer( player, (int) ret.getStackSize() ) ); } return ret; @@ -1194,7 +1190,7 @@ public class Platform return null; } - public static StackType poweredInsert( final IEnergySource energy, final IMEInventory cell, final StackType input, final BaseActionSource src ) + public static StackType poweredInsert( final IEnergySource energy, final IMEInventory cell, final StackType input, final IActionSource src ) { final StackType possible = cell.injectItems( (StackType) input.copy(), Actionable.SIMULATE, src ); @@ -1220,22 +1216,22 @@ public class Platform input.setStackSize( itemToAdd ); split.add( cell.injectItems( input, Actionable.MODULATE, src ) ); - if( src.isPlayer() ) + src.player().ifPresent( player -> { final long diff = original - split.getStackSize(); - Stats.ItemsInserted.addToPlayer( ( (PlayerSource) src ).player, (int) diff ); - } + Stats.ItemsInserted.addToPlayer( player, (int) diff ); + } ); return split; } final StackType ret = cell.injectItems( input, Actionable.MODULATE, src ); - if( src.isPlayer() ) + src.player().ifPresent( player -> { final long diff = ret == null ? input.getStackSize() : input.getStackSize() - ret.getStackSize(); - Stats.ItemsInserted.addToPlayer( ( (PlayerSource) src ).player, (int) diff ); - } + Stats.ItemsInserted.addToPlayer( player, (int) diff ); + } ); return ret; } @@ -1243,7 +1239,7 @@ public class Platform return input; } - public static void postChanges( final IStorageGrid gs, final ItemStack removed, final ItemStack added, final BaseActionSource src ) + public static void postChanges( final IStorageGrid gs, final ItemStack removed, final ItemStack added, final IActionSource src ) { final IItemList itemChanges = AEApi.instance().storage().createItemList(); final IItemList fluidChanges = AEApi.instance().storage().createFluidList(); @@ -1291,7 +1287,7 @@ public class Platform gs.postAlterationOfStoredItems( StorageChannel.ITEMS, itemChanges, src ); } - public static > void postListChanges( final IItemList before, final IItemList after, final IMEMonitorHandlerReceiver meMonitorPassthrough, final BaseActionSource source ) + public static > void postListChanges( final IItemList before, final IItemList after, final IMEMonitorHandlerReceiver meMonitorPassthrough, final IActionSource source ) { final LinkedList changes = new LinkedList<>(); @@ -1431,17 +1427,17 @@ public class Platform player.rotationYaw = player.prevCameraYaw = player.cameraYaw = yaw; } - public static boolean canAccess( final AENetworkProxy gridProxy, final BaseActionSource src ) + public static boolean canAccess( final AENetworkProxy gridProxy, final IActionSource src ) { try { - if( src.isPlayer() ) + if( src.player().isPresent() ) { - return gridProxy.getSecurity().hasPermission( ( (PlayerSource) src ).player, SecurityPermissions.BUILD ); + return gridProxy.getSecurity().hasPermission( src.player().get(), SecurityPermissions.BUILD ); } - else if( src.isMachine() ) + else if( src.machine().isPresent() ) { - final IActionHost te = ( (MachineSource) src ).via; + final IActionHost te = src.machine().get(); final IGridNode n = te.getActionableNode(); if( n == null ) { @@ -1462,7 +1458,7 @@ public class Platform } } - public static ItemStack extractItemsByRecipe( final IEnergySource energySrc, final BaseActionSource mySrc, final IMEMonitor src, final World w, final IRecipe r, final ItemStack output, final InventoryCrafting ci, final ItemStack providedTemplate, final int slot, final IItemList items, final Actionable realForFake, final IPartitionList filter ) + public static ItemStack extractItemsByRecipe( final IEnergySource energySrc, final IActionSource mySrc, final IMEMonitor src, final World w, final IRecipe r, final ItemStack output, final InventoryCrafting ci, final ItemStack providedTemplate, final int slot, final IItemList items, final Actionable realForFake, final IPartitionList filter ) { if( energySrc.extractAEPower( 1, Actionable.SIMULATE, PowerMultiplier.CONFIG ) > 0.9 ) { diff --git a/src/main/java/appeng/util/inv/IMEAdaptor.java b/src/main/java/appeng/util/inv/IMEAdaptor.java index 30c28d6a..3c2d61e5 100644 --- a/src/main/java/appeng/util/inv/IMEAdaptor.java +++ b/src/main/java/appeng/util/inv/IMEAdaptor.java @@ -28,7 +28,7 @@ import net.minecraft.item.ItemStack; import appeng.api.AEApi; import appeng.api.config.Actionable; import appeng.api.config.FuzzyMode; -import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.IActionSource; import appeng.api.storage.IMEInventory; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; @@ -40,10 +40,10 @@ public class IMEAdaptor extends InventoryAdaptor { private final IMEInventory target; - private final BaseActionSource src; + private final IActionSource src; private int maxSlots = 0; - public IMEAdaptor( final IMEInventory input, final BaseActionSource src ) + public IMEAdaptor( final IMEInventory input, final IActionSource src ) { this.target = input; this.src = src;