Showing preview only (5,410K chars total). Download the full file or copy to clipboard to get everything.
Repository: RS485/LogisticsPipes
Branch: dev
Commit: 122ea1c99f12
Files: 1401
Total size: 4.8 MB
Directory structure:
gitextract_3aq3x4ml/
├── .editorconfig
├── .gitattributes
├── .gitignore
├── .idea/
│ ├── .name
│ ├── codeInsightSettings.xml
│ ├── codeStyles/
│ │ ├── Project.xml
│ │ └── codeStyleConfig.xml
│ ├── copyright/
│ │ ├── RS485_Dual_MIT_MMPL.xml
│ │ └── profiles_settings.xml
│ ├── encodings.xml
│ ├── externalAnnotations/
│ │ └── net/
│ │ └── minecraft/
│ │ ├── block/
│ │ │ └── state/
│ │ │ └── annotations.xml
│ │ ├── client/
│ │ │ └── gui/
│ │ │ └── inventory/
│ │ │ └── annotations.xml
│ │ ├── item/
│ │ │ └── annotations.xml
│ │ └── world/
│ │ └── annotations.xml
│ ├── inspectionProfiles/
│ │ └── Project_Default.xml
│ ├── kotlinc.xml
│ ├── libraries-with-intellij-classes.xml
│ └── scopes/
│ └── network_rs485_package.xml
├── .travis.yml
├── BUILDING.md
├── LICENSE.md
├── README.md
├── build.gradle
├── common/
│ └── logisticspipes/
│ ├── LPBlocks.java
│ ├── LPConstants.java
│ ├── LPItems.java
│ ├── LogisticsEventListener.java
│ ├── LogisticsPipes.java
│ ├── api/
│ │ ├── IHUDArmor.java
│ │ ├── ILPPipe.java
│ │ ├── ILPPipeConfigTool.java
│ │ ├── ILPPipeTile.java
│ │ ├── ILogisticsPowerProvider.java
│ │ ├── IProgressProvider.java
│ │ └── IRoutedPowerProvider.java
│ ├── asm/
│ │ ├── ClientSideOnlyMethodContent.java
│ │ ├── IgnoreDisabledProxy.java
│ │ ├── LogisticsASMHookClass.java
│ │ ├── LogisticsClassTransformer.java
│ │ ├── LogisticsPipesClassInjector.java
│ │ ├── LogisticsPipesCoreLoader.java
│ │ ├── ModAccessTransformerRemapper.java
│ │ ├── ModDependentField.java
│ │ ├── ModDependentInterface.java
│ │ ├── ModDependentMethod.java
│ │ ├── ModDependentMethodName.java
│ │ ├── ModVersionedClass.java
│ │ ├── ParamProfiler.java
│ │ ├── addinfo/
│ │ │ ├── IAddInfo.java
│ │ │ └── IAddInfoProvider.java
│ │ ├── mcmp/
│ │ │ ├── ClassBlockMultipartContainerHandler.java
│ │ │ └── MCMPHooks.java
│ │ ├── td/
│ │ │ ├── ClassRenderDuctItemsHandler.java
│ │ │ ├── ClassTravelingItemHandler.java
│ │ │ ├── ILPTravelingItemInfo.java
│ │ │ └── ThermalDynamicsHooks.java
│ │ ├── te/
│ │ │ ├── ILPTEInformation.java
│ │ │ ├── ITileEntityChangeListener.java
│ │ │ └── LPTileEntityObject.java
│ │ ├── util/
│ │ │ └── ASMHelper.java
│ │ └── wrapper/
│ │ ├── AbstractSubWrapper.java
│ │ ├── AbstractWrapper.java
│ │ ├── CraftingRecipeProviderWrapper.java
│ │ ├── GenericLPPipeConfigToolWrapper.java
│ │ ├── GenericProgressProviderWrapper.java
│ │ ├── LogisticsWrapperHandler.java
│ │ └── WrapperState.java
│ ├── blocks/
│ │ ├── BlockDummy.java
│ │ ├── LogisticsProgramCompilerTileEntity.java
│ │ ├── LogisticsSecurityTileEntity.java
│ │ ├── LogisticsSolidBlock.java
│ │ ├── LogisticsSolidTileEntity.java
│ │ ├── crafting/
│ │ │ ├── AutoCraftingInventory.java
│ │ │ └── LogisticsCraftingTableTileEntity.java
│ │ ├── powertile/
│ │ │ ├── LogisticsIC2PowerProviderTileEntity.java
│ │ │ ├── LogisticsPowerJunctionTileEntity.java
│ │ │ ├── LogisticsPowerProviderTileEntity.java
│ │ │ └── LogisticsRFPowerProviderTileEntity.java
│ │ └── stats/
│ │ ├── LogisticsStatisticsTileEntity.java
│ │ └── TrackingTask.java
│ ├── commands/
│ │ ├── LogisticsPipesCommand.java
│ │ ├── MainCommandHandler.java
│ │ ├── abstracts/
│ │ │ ├── ICommandHandler.java
│ │ │ └── SubCommandHandler.java
│ │ ├── chathelper/
│ │ │ ├── LPChatListener.java
│ │ │ └── MorePageDisplay.java
│ │ ├── commands/
│ │ │ ├── BypassCommand.java
│ │ │ ├── ChangelogCommand.java
│ │ │ ├── ClearCommand.java
│ │ │ ├── DebugCommand.java
│ │ │ ├── DummyCommand.java
│ │ │ ├── DumpCommand.java
│ │ │ ├── NBTDebugCommand.java
│ │ │ ├── NameLookupCommand.java
│ │ │ ├── RoutingThreadCommand.java
│ │ │ ├── TestCommand.java
│ │ │ ├── TransferNamesCommand.java
│ │ │ ├── VersionCommand.java
│ │ │ ├── WrapperCommand.java
│ │ │ ├── debug/
│ │ │ │ ├── DebugGuiController.java
│ │ │ │ ├── HandCommand.java
│ │ │ │ ├── MeCommand.java
│ │ │ │ ├── PipeCommand.java
│ │ │ │ ├── RoutingTableCommand.java
│ │ │ │ └── TargetCommand.java
│ │ │ └── wrapper/
│ │ │ ├── EnableCommand.java
│ │ │ ├── ListCommand.java
│ │ │ └── ShowCommand.java
│ │ └── exception/
│ │ ├── CommandNotFoundException.java
│ │ ├── DuplicatedCommandException.java
│ │ ├── LPCommandException.java
│ │ ├── MissingArgumentException.java
│ │ └── PermissionDeniedException.java
│ ├── config/
│ │ └── Configs.java
│ ├── datafixer/
│ │ ├── DataFixerSolidBlockItems.java
│ │ ├── DataFixerTE.java
│ │ ├── LPDataFixer.java
│ │ └── MissingMappingHandler.java
│ ├── entity/
│ │ ├── FakeNetServerHandler.java
│ │ └── FakePlayerLP.java
│ ├── gui/
│ │ ├── GuiCardManager.java
│ │ ├── GuiChassisPipe.java
│ │ ├── GuiCraftingPipe.java
│ │ ├── GuiFirewall.java
│ │ ├── GuiFluidBasic.java
│ │ ├── GuiFluidSupplierMk2Pipe.java
│ │ ├── GuiFluidSupplierPipe.java
│ │ ├── GuiFluidTerminus.java
│ │ ├── GuiFreqCardContent.java
│ │ ├── GuiInvSysConnector.java
│ │ ├── GuiLogisticsCraftingTable.java
│ │ ├── GuiLogisticsSettings.java
│ │ ├── GuiPipeController.java
│ │ ├── GuiPowerJunction.java
│ │ ├── GuiPowerProvider.java
│ │ ├── GuiProgramCompiler.java
│ │ ├── GuiSatellitePipe.java
│ │ ├── GuiSecurityStation.java
│ │ ├── GuiStatistics.java
│ │ ├── GuiSupplierPipe.java
│ │ ├── ItemAmountSignCreationGui.java
│ │ ├── hud/
│ │ │ ├── BasicHUDGui.java
│ │ │ ├── GuiHUDSettings.java
│ │ │ ├── HUDCrafting.java
│ │ │ ├── HUDInvSysConnector.java
│ │ │ ├── HUDPowerLevel.java
│ │ │ ├── HUDProvider.java
│ │ │ ├── HUDSatellite.java
│ │ │ ├── HudChassisPipe.java
│ │ │ └── modules/
│ │ │ ├── HUDAdvancedExtractor.java
│ │ │ ├── HUDItemSink.java
│ │ │ ├── HUDOreDictItemSink.java
│ │ │ ├── HUDProviderModule.java
│ │ │ ├── HUDSimpleFilterModule.java
│ │ │ └── HUDStringBasedItemSink.java
│ │ ├── modules/
│ │ │ ├── GuiAdvancedExtractor.java
│ │ │ ├── GuiFluidSupplier.java
│ │ │ ├── GuiOreDictItemSink.java
│ │ │ ├── GuiSimpleFilter.java
│ │ │ ├── GuiSneakyConfigurator.java
│ │ │ ├── GuiStringBasedItemSink.java
│ │ │ └── ModuleBaseGui.java
│ │ ├── orderer/
│ │ │ ├── FluidGuiOrderer.java
│ │ │ ├── GuiOrderer.java
│ │ │ ├── GuiRequestTable.java
│ │ │ ├── NormalGuiOrderer.java
│ │ │ └── NormalMk2GuiOrderer.java
│ │ └── popup/
│ │ ├── ActionChoicePopup.java
│ │ ├── DisconnectionConfigurationPopup.java
│ │ ├── GuiAddChannelPopup.java
│ │ ├── GuiAddMacro.java
│ │ ├── GuiAddTracking.java
│ │ ├── GuiDiskPopup.java
│ │ ├── GuiEditCCAccessTable.java
│ │ ├── GuiEditChannelPopup.java
│ │ ├── GuiManageChannelPopup.java
│ │ ├── GuiMessagePopup.java
│ │ ├── GuiRecipeImport.java
│ │ ├── GuiRequestPopup.java
│ │ ├── GuiSecurityStationPopup.java
│ │ ├── GuiSelectChannelPopup.java
│ │ ├── GuiSelectSatellitePopup.java
│ │ ├── RequestMonitorPopup.java
│ │ ├── SelectItemOutOfList.java
│ │ └── SneakyConfigurationPopup.java
│ ├── hud/
│ │ └── HUDConfig.java
│ ├── interfaces/
│ │ ├── IBlockWatchingHandler.java
│ │ ├── IBufferItems.java
│ │ ├── IChainAddList.java
│ │ ├── IChangeListener.java
│ │ ├── IChestContentReceiver.java
│ │ ├── IClientInformationProvider.java
│ │ ├── IClientState.java
│ │ ├── IDebugHUDProvider.java
│ │ ├── IDiskProvider.java
│ │ ├── IFuzzySlot.java
│ │ ├── IGUIChannelInformationReceiver.java
│ │ ├── IGuiOpenControler.java
│ │ ├── IGuiTileEntity.java
│ │ ├── IHUDButton.java
│ │ ├── IHUDConfig.java
│ │ ├── IHUDModuleHandler.java
│ │ ├── IHUDModuleRenderer.java
│ │ ├── IHeadUpDisplayBlockRendererProvider.java
│ │ ├── IHeadUpDisplayRenderer.java
│ │ ├── IHeadUpDisplayRendererProvider.java
│ │ ├── IInventoryUtil.java
│ │ ├── IItemAdvancedExistance.java
│ │ ├── ILPItemAcceptor.java
│ │ ├── ILPPositionProvider.java
│ │ ├── ILegacyActiveModule.java
│ │ ├── ILogisticsItem.java
│ │ ├── IModuleInventoryReceive.java
│ │ ├── IModuleWatchReciver.java
│ │ ├── IOrderManagerContentReceiver.java
│ │ ├── IPipeServiceProvider.java
│ │ ├── IPipeUpgradeManager.java
│ │ ├── IPowerLevelDisplay.java
│ │ ├── IQueueCCEvent.java
│ │ ├── IRequestWatcher.java
│ │ ├── IRotationProvider.java
│ │ ├── IRoutingDebugAdapter.java
│ │ ├── ISecurityProvider.java
│ │ ├── ISecurityStationManager.java
│ │ ├── ISendQueueContentRecieiver.java
│ │ ├── ISendRoutedItem.java
│ │ ├── ISlotCheck.java
│ │ ├── ISlotClick.java
│ │ ├── ISlotUpgradeManager.java
│ │ ├── ISpawnParticles.java
│ │ ├── ISpecialInsertion.java
│ │ ├── ISpecialItemRenderer.java
│ │ ├── ISpecialTankAccessHandler.java
│ │ ├── ISpecialTankHandler.java
│ │ ├── ISpecialTankUtil.java
│ │ ├── IStringBasedModule.java
│ │ ├── ISubSystemPowerProvider.java
│ │ ├── ITankUtil.java
│ │ ├── ITileEntityPart.java
│ │ ├── ITubeOrientation.java
│ │ ├── ITubeRenderOrientation.java
│ │ ├── IWatchingHandler.java
│ │ ├── IWorldProvider.java
│ │ ├── PlayerListReciver.java
│ │ └── routing/
│ │ ├── IAdditionalTargetInformation.java
│ │ ├── IChannelConnectionManager.java
│ │ ├── IChannelManager.java
│ │ ├── IChannelManagerProvider.java
│ │ ├── IChannelRoutingConnection.java
│ │ ├── ICraft.java
│ │ ├── ICraftItems.java
│ │ ├── IFilter.java
│ │ ├── IFilteringPipe.java
│ │ ├── IFluidSink.java
│ │ ├── IItemSpaceControl.java
│ │ ├── IProvide.java
│ │ ├── IProvideFluids.java
│ │ ├── IProvideItems.java
│ │ ├── IRequest.java
│ │ ├── IRequestFluid.java
│ │ ├── IRequestItems.java
│ │ ├── IRequireReliableFluidTransport.java
│ │ ├── IRequireReliableTransport.java
│ │ ├── ISpecialPipedConnection.java
│ │ ├── ISpecialTileConnection.java
│ │ └── ITargetSlotInformation.java
│ ├── items/
│ │ ├── ItemBlankModule.java
│ │ ├── ItemDisk.java
│ │ ├── ItemHUDArmor.java
│ │ ├── ItemLogisticsChips.java
│ │ ├── ItemLogisticsPipe.java
│ │ ├── ItemLogisticsProgrammer.java
│ │ ├── ItemModule.java
│ │ ├── ItemParts.java
│ │ ├── ItemPipeController.java
│ │ ├── ItemPipeManager.java
│ │ ├── ItemPipeSignCreator.java
│ │ ├── ItemUpgrade.java
│ │ ├── LogisticsBrokenItem.java
│ │ ├── LogisticsFluidContainer.java
│ │ ├── LogisticsItem.java
│ │ ├── LogisticsItemCard.java
│ │ ├── LogisticsSolidBlockItem.java
│ │ └── RemoteOrderer.java
│ ├── logic/
│ │ ├── BaseLogicConnection.java
│ │ ├── BaseLogicTask.java
│ │ ├── LogicController.java
│ │ ├── LogicParameterType.java
│ │ ├── gui/
│ │ │ └── LogicLayoutGui.java
│ │ └── interfaces/
│ │ └── ILogicControllerTile.java
│ ├── logistics/
│ │ ├── ILogisticsFluidManager.java
│ │ ├── ILogisticsManager.java
│ │ ├── LogisticsFluidManager.java
│ │ └── LogisticsManager.java
│ ├── logisticspipes/
│ │ ├── ChassisTransportLayer.java
│ │ ├── IRoutedItem.java
│ │ ├── ITrackStatistics.java
│ │ ├── ItemModuleInformationManager.java
│ │ ├── PipeTransportLayer.java
│ │ ├── RouteLayer.java
│ │ └── TransportLayer.java
│ ├── modplugins/
│ │ ├── jei/
│ │ │ ├── AdvancedGuiHandler.java
│ │ │ ├── GhostIngredientHandler.java
│ │ │ ├── JEIPluginLoader.java
│ │ │ └── RecipeTransferHandler.java
│ │ ├── mcmp/
│ │ │ ├── LPMCMPAddon.java
│ │ │ ├── LPMultipartTile.java
│ │ │ └── LPPipeMultipart.java
│ │ └── nei/
│ │ ├── DebugHelper.java
│ │ ├── DrawHandler.java
│ │ ├── LoadingHelper.java
│ │ ├── LogisticsCraftingOverlayHandler.java
│ │ ├── NEILogisticsPipesConfig.java
│ │ └── NEISolderingStationRecipeManager.java
│ ├── modules/
│ │ ├── ChassisModule.java
│ │ ├── LogisticsModule.java
│ │ ├── ModuleActiveSupplier.java
│ │ ├── ModuleCrafter.java
│ │ ├── ModuleCreativeTabBasedItemSink.java
│ │ ├── ModuleEnchantmentSink.java
│ │ ├── ModuleEnchantmentSinkMK2.java
│ │ ├── ModuleFluidSupplier.java
│ │ ├── ModuleItemSink.java
│ │ ├── ModuleModBasedItemSink.java
│ │ ├── ModuleOreDictItemSink.java
│ │ ├── ModulePassiveSupplier.java
│ │ ├── ModulePolymorphicItemSink.java
│ │ ├── ModuleProvider.java
│ │ ├── ModuleSatellite.java
│ │ └── ModuleTerminus.java
│ ├── network/
│ │ ├── GuiHandler.java
│ │ ├── GuiIDs.java
│ │ ├── IReadListObject.java
│ │ ├── IWriteListObject.java
│ │ ├── NewGuiHandler.java
│ │ ├── PacketHandler.java
│ │ ├── PacketInboundHandler.java
│ │ ├── abstractguis/
│ │ │ ├── BooleanModuleCoordinatesGuiProvider.java
│ │ │ ├── CoordinatesGuiProvider.java
│ │ │ ├── CoordinatesPopupGuiProvider.java
│ │ │ ├── GuiProvider.java
│ │ │ ├── ModuleCoordinatesGuiProvider.java
│ │ │ ├── ModuleInHandGuiProvider.java
│ │ │ ├── NBTModuleCoordinatesGuiProvider.java
│ │ │ ├── PopupGuiProvider.java
│ │ │ └── UpgradeCoordinatesGuiProvider.java
│ │ ├── abstractpackets/
│ │ │ ├── BitSetCoordinatesPacket.java
│ │ │ ├── BooleanCoordinatesPacket.java
│ │ │ ├── BooleanModuleCoordinatesPacket.java
│ │ │ ├── ChannelInformationListCoordinatesPopupGuiProvider.java
│ │ │ ├── CoordinatesPacket.java
│ │ │ ├── DirectionModuleCoordinatesPacket.java
│ │ │ ├── GuiPacket.java
│ │ │ ├── Integer2CoordinatesPacket.java
│ │ │ ├── Integer2ModuleCoordinatesPacket.java
│ │ │ ├── IntegerCoordinatesPacket.java
│ │ │ ├── IntegerModuleCoordinatesPacket.java
│ │ │ ├── IntegerPacket.java
│ │ │ ├── InventoryModuleCoordinatesPacket.java
│ │ │ ├── ItemPacket.java
│ │ │ ├── ListSyncPacket.java
│ │ │ ├── ModernPacket.java
│ │ │ ├── ModuleCoordinatesPacket.java
│ │ │ ├── NBTCoordinatesPacket.java
│ │ │ ├── NBTModuleCoordinatesPacket.java
│ │ │ ├── RequestPacket.java
│ │ │ ├── SlotPacket.java
│ │ │ ├── StringCoordinatesPacket.java
│ │ │ └── StringListPacket.java
│ │ ├── exception/
│ │ │ ├── DelayPacketException.java
│ │ │ └── TargetNotFoundException.java
│ │ ├── guis/
│ │ │ ├── AddChannelGuiProvider.java
│ │ │ ├── EditChannelGuiProvider.java
│ │ │ ├── LogisticsPlayerSettingsGuiProvider.java
│ │ │ ├── OpenGuideBook.java
│ │ │ ├── block/
│ │ │ │ ├── AutoCraftingGui.java
│ │ │ │ ├── PowerJunctionGui.java
│ │ │ │ ├── PowerProviderGui.java
│ │ │ │ ├── ProgramCompilerGui.java
│ │ │ │ ├── SecurityChannelManagerGui.java
│ │ │ │ ├── SecurityStationGui.java
│ │ │ │ └── StatisticsGui.java
│ │ │ ├── item/
│ │ │ │ ├── ItemAmountSignGui.java
│ │ │ │ └── ItemMangerGui.java
│ │ │ ├── logic/
│ │ │ │ └── LogicControllerGuiProvider.java
│ │ │ ├── module/
│ │ │ │ ├── inhand/
│ │ │ │ │ ├── ActiveSupplierInHand.java
│ │ │ │ │ ├── AdvancedExtractorModuleInHand.java
│ │ │ │ │ ├── CraftingModuleInHand.java
│ │ │ │ │ ├── ItemSinkInHand.java
│ │ │ │ │ ├── OreDictItemSinkModuleInHand.java
│ │ │ │ │ ├── ProviderModuleInHand.java
│ │ │ │ │ ├── SimpleFilterInventoryInHand.java
│ │ │ │ │ ├── SneakyModuleInHandGuiProvider.java
│ │ │ │ │ └── StringBasedItemSinkModuleGuiInHand.java
│ │ │ │ └── inpipe/
│ │ │ │ ├── ActiveSupplierSlot.java
│ │ │ │ ├── AdvancedExtractorModuleSlot.java
│ │ │ │ ├── CraftingModuleSlot.java
│ │ │ │ ├── FluidSupplierSlot.java
│ │ │ │ ├── ItemSinkSlot.java
│ │ │ │ ├── OreDictItemSinkModuleSlot.java
│ │ │ │ ├── ProviderModuleGuiProvider.java
│ │ │ │ ├── SimpleFilterInventorySlot.java
│ │ │ │ ├── SneakyModuleInSlotGuiProvider.java
│ │ │ │ └── StringBasedItemSinkModuleGuiSlot.java
│ │ │ ├── pipe/
│ │ │ │ ├── ChassisGuiProvider.java
│ │ │ │ ├── InvSysConGuiProvider.java
│ │ │ │ ├── InvSysConSelectChannelPopupGUIProvider.java
│ │ │ │ └── PipeController.java
│ │ │ └── upgrade/
│ │ │ ├── DisconnectionUpgradeConfigGuiProvider.java
│ │ │ └── SneakyUpgradeConfigGuiProvider.java
│ │ ├── packetcontent/
│ │ │ ├── IPacketContent.java
│ │ │ ├── IntegerContent.java
│ │ │ ├── ItemStackContent.java
│ │ │ └── PacketContentBuilder.java
│ │ └── packets/
│ │ ├── ActivateNBTDebug.java
│ │ ├── AddNewChannelPacket.java
│ │ ├── BufferTransfer.java
│ │ ├── DeleteChannelPacket.java
│ │ ├── DummyPacket.java
│ │ ├── EditChannelPacket.java
│ │ ├── NEISetCraftingRecipe.java
│ │ ├── PlayerConfigToClientPacket.java
│ │ ├── PlayerConfigToServerPacket.java
│ │ ├── PlayerList.java
│ │ ├── PlayerListRequest.java
│ │ ├── RequestUpdateNamesPacket.java
│ │ ├── SetGhostItemPacket.java
│ │ ├── UpdateName.java
│ │ ├── block/
│ │ │ ├── AddItemToTrackPacket.java
│ │ │ ├── AmountTaskSubGui.java
│ │ │ ├── ClearCraftingGridPacket.java
│ │ │ ├── CompilerStatusPacket.java
│ │ │ ├── CompilerTriggerTaskPacket.java
│ │ │ ├── CraftingCycleRecipe.java
│ │ │ ├── CraftingSetType.java
│ │ │ ├── LogicControllerPacket.java
│ │ │ ├── PipeSolidSideCheck.java
│ │ │ ├── PowerJunctionCheatPacket.java
│ │ │ ├── PowerJunctionLevel.java
│ │ │ ├── PowerPacketLaser.java
│ │ │ ├── PowerProviderLevel.java
│ │ │ ├── RemoveAmoundTask.java
│ │ │ ├── RequestAmountTaskSubGui.java
│ │ │ ├── RequestRotationPacket.java
│ │ │ ├── RequestRunningCraftingTasks.java
│ │ │ ├── Rotation.java
│ │ │ ├── RunningCraftingTasks.java
│ │ │ ├── SaveSecurityPlayerPacket.java
│ │ │ ├── SecurityAddCCIdPacket.java
│ │ │ ├── SecurityAuthorizationPacket.java
│ │ │ ├── SecurityCardPacket.java
│ │ │ ├── SecurityRemoveCCIdPacket.java
│ │ │ ├── SecurityRequestCCIdsPacket.java
│ │ │ ├── SecurityStationAuthorizedList.java
│ │ │ ├── SecurityStationAutoDestroy.java
│ │ │ ├── SecurityStationCC.java
│ │ │ ├── SecurityStationCCIDs.java
│ │ │ ├── SecurityStationId.java
│ │ │ ├── SecurityStationOpenPlayer.java
│ │ │ └── SecurityStationOpenPlayerRequest.java
│ │ ├── chassis/
│ │ │ ├── ChassisGUI.java
│ │ │ ├── ChestGuiClosed.java
│ │ │ ├── ChestGuiOpened.java
│ │ │ └── EnableQuickSortMarker.java
│ │ ├── cpipe/
│ │ │ ├── CPipeCleanupImport.java
│ │ │ ├── CPipeSatelliteImport.java
│ │ │ ├── CPipeSatelliteImportBack.java
│ │ │ └── CraftingPipeOpenConnectedGuiPacket.java
│ │ ├── debug/
│ │ │ ├── PipeDebugLogAskForTarget.java
│ │ │ ├── PipeDebugLogResponse.java
│ │ │ ├── SendNewLogLine.java
│ │ │ ├── SendNewLogWindow.java
│ │ │ └── UpdateStatusEntries.java
│ │ ├── debuggui/
│ │ │ ├── DebugAskForTarget.java
│ │ │ ├── DebugDataPacket.java
│ │ │ ├── DebugPanelOpen.java
│ │ │ └── DebugTargetResponse.java
│ │ ├── gui/
│ │ │ ├── ChannelInformationPacket.java
│ │ │ ├── DummyContainerSlotClick.java
│ │ │ ├── FuzzySlotSettingsPacket.java
│ │ │ ├── GuiClosePacket.java
│ │ │ ├── GuiOpenChassis.java
│ │ │ ├── GuiReopenPacket.java
│ │ │ ├── OpenAddChannelGUIPacket.java
│ │ │ ├── OpenChatGui.java
│ │ │ ├── OpenEditChannelGUIPacket.java
│ │ │ ├── OpenGUIPacket.java
│ │ │ ├── OpenSecurityChannelManagerPacket.java
│ │ │ ├── OpenUpgradePacket.java
│ │ │ ├── ProvideSatellitePipeListPacket.java
│ │ │ └── RequestSatellitePipeListPacket.java
│ │ ├── hud/
│ │ │ ├── ChestContent.java
│ │ │ ├── HUDSettingsPacket.java
│ │ │ ├── HUDStartBlockWatchingPacket.java
│ │ │ ├── HUDStartModuleWatchingPacket.java
│ │ │ ├── HUDStartWatchingPacket.java
│ │ │ ├── HUDStopBlockWatchingPacket.java
│ │ │ ├── HUDStopModuleWatchingPacket.java
│ │ │ └── HUDStopWatchingPacket.java
│ │ ├── module/
│ │ │ ├── AdvancedExtractorSneakyGuiPacket.java
│ │ │ ├── ItemSinkImportPacket.java
│ │ │ ├── ModuleBasedItemSinkList.java
│ │ │ ├── ModuleInventory.java
│ │ │ ├── ModulePropertiesUpdate.java
│ │ │ └── OreDictItemSinkList.java
│ │ ├── modules/
│ │ │ ├── AdvancedExtractorInclude.java
│ │ │ ├── ItemSinkDefault.java
│ │ │ ├── ProviderModuleInclude.java
│ │ │ ├── ProviderModuleMode.java
│ │ │ ├── QuickSortState.java
│ │ │ ├── SneakyModuleDirectionUpdate.java
│ │ │ └── SupplierPipeMode.java
│ │ ├── multiblock/
│ │ │ └── MultiBlockCoordinatesPacket.java
│ │ ├── orderer/
│ │ │ ├── ComponentList.java
│ │ │ ├── DiscContent.java
│ │ │ ├── DiskDropPacket.java
│ │ │ ├── DiskMacroRequestPacket.java
│ │ │ ├── DiskRequestConectPacket.java
│ │ │ ├── DiskSetNamePacket.java
│ │ │ ├── MissingItems.java
│ │ │ ├── OrderWatchRemovePacket.java
│ │ │ ├── OrdererContent.java
│ │ │ ├── OrdererManagerContent.java
│ │ │ ├── OrdererRefreshRequestPacket.java
│ │ │ ├── OrdererWatchPacket.java
│ │ │ ├── RequestComponentPacket.java
│ │ │ ├── RequestFluidOrdererRefreshPacket.java
│ │ │ ├── RequestSubmitListPacket.java
│ │ │ ├── RequestSubmitPacket.java
│ │ │ └── SubmitFluidRequestPacket.java
│ │ ├── pipe/
│ │ │ ├── AskForOpenTarget.java
│ │ │ ├── ChassisOrientationPacket.java
│ │ │ ├── ChassisPipeModuleContent.java
│ │ │ ├── CraftingPipeSetSatellitePacket.java
│ │ │ ├── CraftingPipeUpdatePacket.java
│ │ │ ├── CraftingPriority.java
│ │ │ ├── FindMostLikelyRecipeComponents.java
│ │ │ ├── FireWallFlag.java
│ │ │ ├── FluidCraftingAmount.java
│ │ │ ├── FluidSupplierAmount.java
│ │ │ ├── FluidSupplierMinMode.java
│ │ │ ├── FluidSupplierMode.java
│ │ │ ├── InvSysConContent.java
│ │ │ ├── InvSysConContentRequest.java
│ │ │ ├── InvSysConOpenSelectChannelPopupPacket.java
│ │ │ ├── InvSysConResistance.java
│ │ │ ├── InvSysConSetChannelOnPipePacket.java
│ │ │ ├── ItemAmountSignUpdatePacket.java
│ │ │ ├── ItemBufferSyncPacket.java
│ │ │ ├── MostLikelyRecipeComponentsResponse.java
│ │ │ ├── ParticleFX.java
│ │ │ ├── PipeContentPacket.java
│ │ │ ├── PipeContentRequest.java
│ │ │ ├── PipeDebugAskForTarget.java
│ │ │ ├── PipeDebugResponse.java
│ │ │ ├── PipeFluidUpdate.java
│ │ │ ├── PipeManagerContentPacket.java
│ │ │ ├── PipeManagerWatchingPacket.java
│ │ │ ├── PipePositionPacket.java
│ │ │ ├── PipePropertiesUpdate.java
│ │ │ ├── PipeSignTypes.java
│ │ │ ├── PipeTileStatePacket.java
│ │ │ ├── RequestChassisOrientationPacket.java
│ │ │ ├── RequestPipeDimension.java
│ │ │ ├── RequestRoutingLasersPacket.java
│ │ │ ├── RequestSignPacket.java
│ │ │ ├── RoutingLaserPacket.java
│ │ │ ├── SendQueueContent.java
│ │ │ ├── SlotFinderActivatePacket.java
│ │ │ ├── SlotFinderNumberPacket.java
│ │ │ ├── SlotFinderOpenGuiPacket.java
│ │ │ └── StatUpdate.java
│ │ ├── routingdebug/
│ │ │ ├── RoutingUpdateAskForTarget.java
│ │ │ ├── RoutingUpdateCanidatePipe.java
│ │ │ ├── RoutingUpdateClearClient.java
│ │ │ ├── RoutingUpdateDebugCanidateList.java
│ │ │ ├── RoutingUpdateDebugClosedSet.java
│ │ │ ├── RoutingUpdateDebugFilters.java
│ │ │ ├── RoutingUpdateDoneDebug.java
│ │ │ ├── RoutingUpdateInitDebug.java
│ │ │ ├── RoutingUpdateSourcePipe.java
│ │ │ ├── RoutingUpdateTargetResponse.java
│ │ │ └── RoutingUpdateUntrace.java
│ │ ├── satpipe/
│ │ │ ├── SatelliteSetNamePacket.java
│ │ │ ├── SetNameResult.java
│ │ │ └── SyncSatelliteNamePacket.java
│ │ └── upgrade/
│ │ ├── SneakyUpgradeSidePacket.java
│ │ └── ToogleDisconnectionUpgradeSidePacket.java
│ ├── pipefxhandlers/
│ │ ├── EntityModelFX.java
│ │ ├── EntitySparkleFX.java
│ │ ├── GenericSparkleFactory.java
│ │ ├── ParticleProvider.java
│ │ ├── Particles.java
│ │ ├── PipeFXLaserPowerBall.java
│ │ ├── PipeFXLaserPowerBeam.java
│ │ ├── PipeFXRenderHandler.java
│ │ └── providers/
│ │ ├── EntityBlueSparkleFXProvider.java
│ │ ├── EntityGoldSparkleFXProvider.java
│ │ ├── EntityGreenSparkleFXProvider.java
│ │ ├── EntityLightGreenSparkleFXProvider.java
│ │ ├── EntityLightRedSparkleFXProvider.java
│ │ ├── EntityOrangeSparkleFXProvider.java
│ │ ├── EntityRedSparkleFXProvider.java
│ │ ├── EntityVioletSparkleFXProvider.java
│ │ └── EntityWhiteSparkleFXProvider.java
│ ├── pipes/
│ │ ├── PipeBlockRequestTable.java
│ │ ├── PipeFluidExtractor.java
│ │ ├── PipeFluidInsertion.java
│ │ ├── PipeFluidProvider.java
│ │ ├── PipeFluidRequestLogistics.java
│ │ ├── PipeFluidSatellite.java
│ │ ├── PipeFluidSupplierMk2.java
│ │ ├── PipeItemsBasicLogistics.java
│ │ ├── PipeItemsCraftingLogistics.java
│ │ ├── PipeItemsFirewall.java
│ │ ├── PipeItemsFluidSupplier.java
│ │ ├── PipeItemsInvSysConnector.java
│ │ ├── PipeItemsProviderLogistics.java
│ │ ├── PipeItemsRemoteOrdererLogistics.java
│ │ ├── PipeItemsRequestLogistics.java
│ │ ├── PipeItemsRequestLogisticsMk2.java
│ │ ├── PipeItemsSatelliteLogistics.java
│ │ ├── PipeItemsSupplierLogistics.java
│ │ ├── PipeItemsSystemDestinationLogistics.java
│ │ ├── PipeItemsSystemEntranceLogistics.java
│ │ ├── PipeLogisticsChassis.java
│ │ ├── PipeLogisticsChassisMk1.java
│ │ ├── PipeLogisticsChassisMk2.java
│ │ ├── PipeLogisticsChassisMk3.java
│ │ ├── PipeLogisticsChassisMk4.java
│ │ ├── PipeLogisticsChassisMk5.java
│ │ ├── SatelliteNamingResult.java
│ │ ├── basic/
│ │ │ ├── CoreMultiBlockPipe.java
│ │ │ ├── CoreRoutedPipe.java
│ │ │ ├── CoreUnroutedPipe.java
│ │ │ ├── ItemInsertionHandler.java
│ │ │ ├── LogisticsBlockGenericPipe.java
│ │ │ ├── LogisticsBlockGenericSubMultiBlock.java
│ │ │ ├── LogisticsTileGenericPipe.java
│ │ │ ├── LogisticsTileGenericSubMultiBlock.java
│ │ │ ├── PowerSupplierHandler.java
│ │ │ ├── debug/
│ │ │ │ ├── DebugLogController.java
│ │ │ │ ├── LogWindow.java
│ │ │ │ └── StatusEntry.java
│ │ │ ├── fluid/
│ │ │ │ └── FluidRoutedPipe.java
│ │ │ └── ltgpmodcompat/
│ │ │ ├── LPDuctHolderTileEntity.java
│ │ │ ├── LPMicroblockBlock.java
│ │ │ └── LPMicroblockTileEntity.java
│ │ ├── signs/
│ │ │ ├── CraftingPipeSign.java
│ │ │ ├── IPipeSign.java
│ │ │ └── ItemAmountPipeSign.java
│ │ ├── tubes/
│ │ │ ├── HSTubeCurve.java
│ │ │ ├── HSTubeGain.java
│ │ │ ├── HSTubeLine.java
│ │ │ ├── HSTubeSCurve.java
│ │ │ └── HSTubeSpeedup.java
│ │ ├── unrouted/
│ │ │ └── PipeItemsBasicTransport.java
│ │ └── upgrades/
│ │ ├── ActionSpeedUpgrade.java
│ │ ├── AdvancedSatelliteUpgrade.java
│ │ ├── CCRemoteControlUpgrade.java
│ │ ├── CombinedSneakyUpgrade.java
│ │ ├── ConnectionUpgradeConfig.java
│ │ ├── CraftingByproductUpgrade.java
│ │ ├── CraftingCleanupUpgrade.java
│ │ ├── CraftingMonitoringUpgrade.java
│ │ ├── FluidCraftingUpgrade.java
│ │ ├── FuzzyUpgrade.java
│ │ ├── IConfigPipeUpgrade.java
│ │ ├── IPipeUpgrade.java
│ │ ├── ItemExtractionUpgrade.java
│ │ ├── ItemStackExtractionUpgrade.java
│ │ ├── LogicControllerUpgrade.java
│ │ ├── ModuleUpgradeManager.java
│ │ ├── OpaqueUpgrade.java
│ │ ├── PatternUpgrade.java
│ │ ├── PowerTransportationUpgrade.java
│ │ ├── SneakyUpgradeConfig.java
│ │ ├── SpeedUpgrade.java
│ │ ├── UpgradeManager.java
│ │ ├── UpgradeModuleUpgrade.java
│ │ └── power/
│ │ ├── BCPowerSupplierUpgrade.java
│ │ ├── IC2EVPowerSupplierUpgrade.java
│ │ ├── IC2HVPowerSupplierUpgrade.java
│ │ ├── IC2LVPowerSupplierUpgrade.java
│ │ ├── IC2MVPowerSupplierUpgrade.java
│ │ ├── IC2PowerSupplierUpgrade.java
│ │ └── RFPowerSupplierUpgrade.java
│ ├── proxy/
│ │ ├── ConfigToolHandler.java
│ │ ├── DontLoadProxy.java
│ │ ├── MainProxy.java
│ │ ├── PowerProxy.java
│ │ ├── ProxyManager.java
│ │ ├── SimpleServiceLocator.java
│ │ ├── SpecialInventoryHandlerManager.java
│ │ ├── SpecialTankHandlerManager.java
│ │ ├── VersionNotSupportedException.java
│ │ ├── buildcraft/
│ │ │ ├── BCPipeInformationProvider.java
│ │ │ ├── BuildCraftProxy.java
│ │ │ ├── BuildCraftToolWrench.java
│ │ │ ├── recipeprovider/
│ │ │ │ └── AssemblyTable.java
│ │ │ └── subproxies/
│ │ │ ├── BCPipeCapabilityProvider.java
│ │ │ └── IBCPipeCapabilityProvider.java
│ │ ├── cc/
│ │ │ ├── CCConstants.java
│ │ │ ├── CCProxy.java
│ │ │ ├── LPASMHookCC.java
│ │ │ ├── LPPeripheralProvider.java
│ │ │ └── wrapper/
│ │ │ ├── CCCommandWrapper.java
│ │ │ ├── LPPeripheralTilePipeWrapper.java
│ │ │ └── LPPeripheralTileSolidWrapper.java
│ │ ├── ccl/
│ │ │ ├── CCLProxy.java
│ │ │ ├── Model3D.java
│ │ │ └── TransformationProxy.java
│ │ ├── cofh/
│ │ │ ├── CoFHToolHammer.java
│ │ │ └── subproxies/
│ │ │ ├── ICoFHEnergyReceiver.java
│ │ │ └── ICoFHEnergyStorage.java
│ │ ├── computers/
│ │ │ ├── interfaces/
│ │ │ │ ├── CCCommand.java
│ │ │ │ ├── CCDirectCall.java
│ │ │ │ ├── CCQueued.java
│ │ │ │ ├── CCSecurtiyCheck.java
│ │ │ │ ├── CCType.java
│ │ │ │ ├── ICCTypeWrapped.java
│ │ │ │ ├── ILPCCTypeDefinition.java
│ │ │ │ └── ILPCCTypeHolder.java
│ │ │ ├── objects/
│ │ │ │ ├── CCFilterInventory.java
│ │ │ │ ├── CCFluidIdentifier.java
│ │ │ │ ├── CCItemIdentifier.java
│ │ │ │ ├── CCItemIdentifierBuilder.java
│ │ │ │ ├── CCItemIdentifierInventory.java
│ │ │ │ ├── CCItemIdentifierStack.java
│ │ │ │ ├── CCPair.java
│ │ │ │ ├── CCQuartet.java
│ │ │ │ ├── CCResource.java
│ │ │ │ ├── CCSinkResponder.java
│ │ │ │ ├── CCTriplet.java
│ │ │ │ └── LPGlobalCCAccess.java
│ │ │ └── wrapper/
│ │ │ ├── CCObjectWrapper.java
│ │ │ ├── CCWrapperInformation.java
│ │ │ └── ICommandWrapper.java
│ │ ├── enderchest/
│ │ │ └── EnderStorageProxy.java
│ │ ├── endercore/
│ │ │ └── EnderCoreProgressProvider.java
│ │ ├── ic/
│ │ │ └── IronChestProxy.java
│ │ ├── ic2/
│ │ │ ├── IC2ProgressProvider.java
│ │ │ └── IC2Proxy.java
│ │ ├── interfaces/
│ │ │ ├── IBCProxy.java
│ │ │ ├── ICCLProxy.java
│ │ │ ├── ICCProxy.java
│ │ │ ├── ICraftingRecipeProvider.java
│ │ │ ├── IEnderStorageProxy.java
│ │ │ ├── IFuzzyRecipeProvider.java
│ │ │ ├── IGenericProgressProvider.java
│ │ │ ├── IIC2Proxy.java
│ │ │ ├── IIronChestProxy.java
│ │ │ ├── ILPPipeConfigToolWrapper.java
│ │ │ ├── INEIProxy.java
│ │ │ ├── IOpenComputersProxy.java
│ │ │ ├── IPowerProxy.java
│ │ │ ├── IProxy.java
│ │ │ ├── ITDProxy.java
│ │ │ └── IThermalExpansionProxy.java
│ │ ├── nei/
│ │ │ └── NEIProxy.java
│ │ ├── object3d/
│ │ │ ├── interfaces/
│ │ │ │ ├── I3DOperation.java
│ │ │ │ ├── IBounds.java
│ │ │ │ ├── IModel3D.java
│ │ │ │ ├── IRenderState.java
│ │ │ │ ├── ITranslation.java
│ │ │ │ ├── IVec3.java
│ │ │ │ └── TextureTransformation.java
│ │ │ └── operation/
│ │ │ ├── LPColourMultiplier.java
│ │ │ ├── LPRotation.java
│ │ │ ├── LPScale.java
│ │ │ ├── LPTranslation.java
│ │ │ ├── LPUVScale.java
│ │ │ ├── LPUVTransformationList.java
│ │ │ └── LPUVTranslation.java
│ │ ├── opencomputers/
│ │ │ ├── IOCTile.java
│ │ │ ├── OpenComputersProxy.java
│ │ │ └── asm/
│ │ │ ├── BaseWrapperClass.java
│ │ │ ├── ClassCreator.java
│ │ │ └── DummyWrapperClass.java
│ │ ├── progressprovider/
│ │ │ └── MachineProgressProvider.java
│ │ ├── recipeproviders/
│ │ │ ├── AssemblyAdvancedWorkbench.java
│ │ │ ├── AutoWorkbench.java
│ │ │ └── LogisticsCraftingTable.java
│ │ ├── side/
│ │ │ ├── ClientProxy.java
│ │ │ └── ServerProxy.java
│ │ ├── specialconnection/
│ │ │ ├── SpecialPipeConnection.java
│ │ │ ├── SpecialTileConnection.java
│ │ │ └── TeleportPipes.java
│ │ ├── specialinventoryhandler/
│ │ │ ├── AEInterfaceInventoryHandler.java
│ │ │ ├── BuildCraftTransactorHandler.java
│ │ │ └── SpecialInventoryHandler.java
│ │ ├── specialtankhandler/
│ │ │ ├── AETankHandler.java
│ │ │ ├── BuildCraftTankHandler.java
│ │ │ └── SpecialTankHandler.java
│ │ ├── td/
│ │ │ ├── LPDuctUnitItem.java
│ │ │ ├── TDDuctInformationProvider.java
│ │ │ ├── ThermalDynamicsProxy.java
│ │ │ └── subproxies/
│ │ │ ├── ITDPart.java
│ │ │ └── TDPart.java
│ │ └── te/
│ │ ├── ThermalExpansionProgressProvider.java
│ │ └── ThermalExpansionProxy.java
│ ├── recipes/
│ │ ├── CraftingPartRecipes.java
│ │ ├── CraftingParts.java
│ │ ├── CraftingRecipes.java
│ │ ├── IRecipeProvider.java
│ │ ├── LPChipRecipes.java
│ │ ├── ModuleChippedCraftingRecipes.java
│ │ ├── NBTIngredient.java
│ │ ├── PipeChippedCraftingRecipes.java
│ │ ├── RecipeManager.java
│ │ ├── ShapelessResetRecipe.java
│ │ ├── UpgradeChippedCraftingRecipes.java
│ │ ├── conditions/
│ │ │ └── ConditionOreExists.java
│ │ └── ingredients/
│ │ └── IngredientPart.java
│ ├── renderer/
│ │ ├── CustomBlockRenderer.java
│ │ ├── FluidContainerRenderer.java
│ │ ├── FluidRenderer.java
│ │ ├── GuiOverlay.java
│ │ ├── IIconProvider.java
│ │ ├── LogisticsHUDRenderer.java
│ │ ├── LogisticsPipeItemRenderer.java
│ │ ├── LogisticsPipeWorldRenderer.java
│ │ ├── LogisticsRenderPipe.java
│ │ ├── LogisticsSolidBlockWorldRenderer.java
│ │ ├── LogisticsTileRenderController.java
│ │ ├── newpipe/
│ │ │ ├── GLRenderList.java
│ │ │ ├── GLRenderListHandler.java
│ │ │ ├── IHighlightPlacementRenderer.java
│ │ │ ├── ISpecialPipeRenderer.java
│ │ │ ├── LogisticsBlockModel.java
│ │ │ ├── LogisticsNewPipeItemBoxRenderer.java
│ │ │ ├── LogisticsNewPipeItemRenderer.java
│ │ │ ├── LogisticsNewPipeModel.java
│ │ │ ├── LogisticsNewPipeWorldRenderer.java
│ │ │ ├── LogisticsNewRenderPipe.java
│ │ │ ├── LogisticsNewSolidBlockWorldRenderer.java
│ │ │ ├── PropertyCache.java
│ │ │ ├── PropertyRenderList.java
│ │ │ ├── RenderEntry.java
│ │ │ └── tube/
│ │ │ ├── CurveTubeRenderer.java
│ │ │ ├── GainTubeRenderer.java
│ │ │ ├── LineTubeRenderer.java
│ │ │ ├── SCurveTubeRenderer.java
│ │ │ └── SpeedupTubeRenderer.java
│ │ └── state/
│ │ ├── ConnectionMatrix.java
│ │ ├── PipeRenderState.java
│ │ ├── PipeSubRenderState.java
│ │ └── TextureMatrix.java
│ ├── request/
│ │ ├── DictCraftingTemplate.java
│ │ ├── ICraftingTemplate.java
│ │ ├── IExtraPromise.java
│ │ ├── IPromise.java
│ │ ├── IReqCraftingTemplate.java
│ │ ├── ItemCraftingTemplate.java
│ │ ├── RequestHandler.java
│ │ ├── RequestLog.java
│ │ ├── RequestTree.java
│ │ ├── RequestTreeNode.java
│ │ └── resources/
│ │ ├── DictResource.java
│ │ ├── FluidResource.java
│ │ ├── IResource.java
│ │ ├── ItemResource.java
│ │ └── ResourceNetwork.java
│ ├── routing/
│ │ ├── ClientRouter.java
│ │ ├── DummyRoutingDebugAdapter.java
│ │ ├── ExitRoute.java
│ │ ├── FluidLogisticsPromise.java
│ │ ├── IPaintPath.java
│ │ ├── IRouter.java
│ │ ├── IRouterQueuedTask.java
│ │ ├── ItemRoutingInformation.java
│ │ ├── LaserData.java
│ │ ├── LogisticsDictPromise.java
│ │ ├── LogisticsExtraDictPromise.java
│ │ ├── LogisticsExtraPromise.java
│ │ ├── LogisticsPromise.java
│ │ ├── PipeRoutingConnectionType.java
│ │ ├── RouterCost.java
│ │ ├── RouterManager.java
│ │ ├── ServerRouter.java
│ │ ├── channels/
│ │ │ ├── ChannelConnection.java
│ │ │ ├── ChannelInformation.java
│ │ │ ├── ChannelManager.java
│ │ │ └── ChannelManagerProvider.java
│ │ ├── debug/
│ │ │ ├── ClientViewController.java
│ │ │ ├── DebugController.java
│ │ │ ├── DebugWindow.java
│ │ │ ├── ExitRouteDebug.java
│ │ │ ├── HUDRoutingTableDebugProvider.java
│ │ │ ├── HUDRoutingTableGeneralInfo.java
│ │ │ └── RoutingTableDebugUpdateThread.java
│ │ ├── order/
│ │ │ ├── ClientSideOrderInfo.java
│ │ │ ├── DistanceTracker.java
│ │ │ ├── IDistanceTracker.java
│ │ │ ├── IOrderInfoProvider.java
│ │ │ ├── LinkedLogisticsOrderList.java
│ │ │ ├── LogisticsFluidOrder.java
│ │ │ ├── LogisticsFluidOrderManager.java
│ │ │ ├── LogisticsItemOrder.java
│ │ │ ├── LogisticsItemOrderManager.java
│ │ │ ├── LogisticsOrder.java
│ │ │ ├── LogisticsOrderLinkedList.java
│ │ │ └── LogisticsOrderManager.java
│ │ └── pathfinder/
│ │ ├── IPipeInformationProvider.java
│ │ ├── IRouteProvider.java
│ │ ├── ISubMultiBlockPipeInformationProvider.java
│ │ ├── PathFinder.java
│ │ ├── PipeInformationManager.java
│ │ └── changedetection/
│ │ └── TEControl.java
│ ├── security/
│ │ ├── PermissionException.java
│ │ └── SecuritySettings.java
│ ├── textures/
│ │ ├── Textures.java
│ │ └── provider/
│ │ ├── LPActionTriggerIconProvider.java
│ │ ├── LPPipeIconProvider.java
│ │ └── LPPipeIconTransformerProvider.java
│ ├── ticks/
│ │ ├── ClientPacketBufferHandlerThread.java
│ │ ├── HudUpdateTick.java
│ │ ├── LPTickHandler.java
│ │ ├── QueuedTasks.java
│ │ ├── RenderTickHandler.java
│ │ ├── RoutingTableUpdateThread.java
│ │ ├── ServerPacketBufferHandlerThread.java
│ │ └── VersionChecker.java
│ ├── transport/
│ │ ├── EntrencsTransport.java
│ │ ├── LPItemList.java
│ │ ├── LPTravelingItem.java
│ │ ├── PipeFluidTransportLogistics.java
│ │ ├── PipeMultiBlockTransportLogistics.java
│ │ ├── PipeTransportLogistics.java
│ │ └── TransportInvConnection.java
│ └── utils/
│ ├── CacheHolder.java
│ ├── CardManagementInventory.java
│ ├── ChainAddArrayList.java
│ ├── Color.java
│ ├── CraftingUtil.java
│ ├── DelayedGeneric.java
│ ├── DummyWorldProvider.java
│ ├── EnumFacingUtil.java
│ ├── EqualWeakReference.java
│ ├── FinalNBTTagCompound.java
│ ├── FinalPair.java
│ ├── FluidIdentifier.java
│ ├── FluidIdentifierStack.java
│ ├── FluidSinkReply.java
│ ├── IHavePriority.java
│ ├── IPositionRotateble.java
│ ├── ISimpleInventoryEventHandler.java
│ ├── InventoryHelper.java
│ ├── InventoryUtil.java
│ ├── InventoryUtilFactory.java
│ ├── LPPositionSet.java
│ ├── MinecraftColor.java
│ ├── ModStatusHelper.java
│ ├── OneList.java
│ ├── OrientationsUtil.java
│ ├── PlayerCollectionList.java
│ ├── PlayerIdentifier.java
│ ├── QuickSortChestMarkerStorage.java
│ ├── ReflectionHelper.java
│ ├── RoutedItemHelper.java
│ ├── SafeTimeTracker.java
│ ├── SinkReply.java
│ ├── SlidingWindowBitSet.java
│ ├── SpecialTankUtil.java
│ ├── StackTraceUtil.java
│ ├── StaticResolve.java
│ ├── StaticResolverUtil.java
│ ├── StreamHelper.java
│ ├── SyncList.java
│ ├── TankUtil.java
│ ├── TileBuffer.java
│ ├── gui/
│ │ ├── ColorSlot.java
│ │ ├── DummyContainer.java
│ │ ├── DummyModuleContainer.java
│ │ ├── DummySlot.java
│ │ ├── FluidSlot.java
│ │ ├── FuzzyDummySlot.java
│ │ ├── FuzzyUnmodifiableSlot.java
│ │ ├── GuiCheckBox.java
│ │ ├── GuiGraphics.java
│ │ ├── GuiStringHandlerButton.java
│ │ ├── HandelableSlot.java
│ │ ├── HudGraphics.java
│ │ ├── IGuiAccess.java
│ │ ├── IItemSearch.java
│ │ ├── IItemTextureRenderSlot.java
│ │ ├── IRenderSlot.java
│ │ ├── ISmallColorRenderSlot.java
│ │ ├── ISubGuiControler.java
│ │ ├── InputBar.java
│ │ ├── ItemDisplay.java
│ │ ├── LogisticsBaseGuiScreen.java
│ │ ├── LogisticsBaseTabGuiScreen.java
│ │ ├── ModuleSlot.java
│ │ ├── RestrictedSlot.java
│ │ ├── SimpleGraphics.java
│ │ ├── SmallGuiButton.java
│ │ ├── SneakyUpgradeSlot.java
│ │ ├── StaticRestrictedSlot.java
│ │ ├── SubGuiScreen.java
│ │ ├── TextListDisplay.java
│ │ ├── UnmodifiableSlot.java
│ │ ├── UpgradeSlot.java
│ │ ├── extension/
│ │ │ ├── GuiExtension.java
│ │ │ └── GuiExtensionController.java
│ │ ├── hud/
│ │ │ └── BasicHUDButton.java
│ │ └── sideconfig/
│ │ └── SideConfigDisplay.java
│ ├── item/
│ │ ├── DictIdentifier.java
│ │ ├── DictItemIdentifier.java
│ │ ├── ItemIdentifier.java
│ │ ├── ItemIdentifierInventory.java
│ │ ├── ItemIdentifierStack.java
│ │ ├── ItemStackRenderer.java
│ │ └── SimpleStackInventory.java
│ ├── math/
│ │ ├── BoundingBox.java
│ │ ├── Camera.java
│ │ ├── Matrix4d.java
│ │ ├── MatrixTranformations.java
│ │ ├── Vec2.java
│ │ ├── VecmathUtil.java
│ │ ├── Vector2d.java
│ │ ├── Vector2f.java
│ │ ├── Vector3d.java
│ │ ├── Vector3f.java
│ │ ├── Vector4d.java
│ │ └── Vertex.java
│ ├── string/
│ │ ├── ChatColor.java
│ │ └── StringUtils.java
│ ├── transactor/
│ │ ├── IInvSlot.java
│ │ ├── ITransactor.java
│ │ ├── InventoryIterator.java
│ │ ├── InventoryIteratorSimple.java
│ │ ├── Transactor.java
│ │ └── TransactorSimple.java
│ └── tuples/
│ ├── Pair.java
│ ├── Quartet.java
│ └── Triplet.java
├── dummy/
│ └── src/
│ └── main/
│ └── java/
│ ├── com/
│ │ └── enderio/
│ │ └── core/
│ │ ├── api/
│ │ │ └── common/
│ │ │ └── util/
│ │ │ └── IProgressTile.java
│ │ └── common/
│ │ └── util/
│ │ ├── BlockCoord.java
│ │ ├── InventoryWrapper.java
│ │ └── RoundRobinIterator.java
│ ├── cpw/
│ │ └── mods/
│ │ └── ironchest/
│ │ ├── client/
│ │ │ └── gui/
│ │ │ └── chest/
│ │ │ └── GUIChest.java
│ │ └── common/
│ │ └── tileentity/
│ │ └── chest/
│ │ └── TileEntityIronChest.java
│ ├── crazypants/
│ │ └── enderio/
│ │ ├── conduit/
│ │ │ ├── AbstractConduit.java
│ │ │ ├── ConnectionMode.java
│ │ │ ├── IConduit.java
│ │ │ ├── IConduitBundle.java
│ │ │ ├── item/
│ │ │ │ ├── IItemConduit.java
│ │ │ │ └── ItemConduit.java
│ │ │ └── liquid/
│ │ │ └── ILiquidConduit.java
│ │ └── machine/
│ │ └── transceiver/
│ │ ├── Channel.java
│ │ ├── ChannelType.java
│ │ ├── ServerChannelRegister.java
│ │ └── TileTransceiver.java
│ ├── ic2/
│ │ ├── api/
│ │ │ └── classic/
│ │ │ └── tile/
│ │ │ └── machine/
│ │ │ └── IProgressMachine.java
│ │ └── core/
│ │ └── block/
│ │ └── machine/
│ │ └── tileentity/
│ │ └── TileEntityStandardMachine.java
│ └── org/
│ └── luaj/
│ └── vm2/
│ ├── LuaNil.java
│ ├── LuaTable.java
│ ├── LuaValue.java
│ └── Varargs.java
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── jitpack.yml
├── lib/
│ └── appliedenergistics2-rv6-stable-7-api.jar
├── lombok.config
├── resources/
│ ├── META-INF/
│ │ └── lp_at.cfg
│ ├── assets/
│ │ └── logisticspipes/
│ │ ├── blockstates/
│ │ │ ├── pipe.json
│ │ │ ├── solid_block.json
│ │ │ └── sub_multiblock.json
│ │ ├── book/
│ │ │ └── en_us/
│ │ │ ├── dev_zero_guides/
│ │ │ │ ├── active_routing.md
│ │ │ │ ├── consolidating_pipes.md
│ │ │ │ ├── crafting.md
│ │ │ │ ├── index.md
│ │ │ │ ├── managing_items_with_pipes.md
│ │ │ │ └── passive_routing.md
│ │ │ └── main_menu.md
│ │ ├── fonts/
│ │ │ ├── OFL.TXT
│ │ │ ├── minecraft-bold.bdf
│ │ │ ├── minecraft-plain.bdf
│ │ │ └── ter-u12n.bdf
│ │ ├── lang/
│ │ │ └── en_us.lang
│ │ ├── models/
│ │ │ ├── block/
│ │ │ │ ├── pipe.json
│ │ │ │ ├── solid_block.json
│ │ │ │ └── sub_multiblock.json
│ │ │ └── item/
│ │ │ ├── broken_item.json
│ │ │ ├── chip/
│ │ │ │ ├── advanced.json
│ │ │ │ ├── advanced_raw.json
│ │ │ │ ├── basic.json
│ │ │ │ ├── basic_raw.json
│ │ │ │ ├── fpga.json
│ │ │ │ └── fpga_raw.json
│ │ │ ├── disk.json
│ │ │ ├── fluid_container.json
│ │ │ ├── guide_book.json
│ │ │ ├── hud_glasses.json
│ │ │ ├── item_card.json
│ │ │ ├── logistics_programmer.json
│ │ │ ├── module/
│ │ │ │ ├── active_supplier.json
│ │ │ │ ├── blank.json
│ │ │ │ ├── crafter.json
│ │ │ │ ├── crafter_mk2.json
│ │ │ │ ├── crafter_mk3.json
│ │ │ │ ├── enchantment_sink.json
│ │ │ │ ├── enchantment_sink_mk2.json
│ │ │ │ ├── extractor.json
│ │ │ │ ├── extractor_advanced.json
│ │ │ │ ├── extractor_advanced_mk2.json
│ │ │ │ ├── extractor_advanced_mk3.json
│ │ │ │ ├── extractor_mk2.json
│ │ │ │ ├── extractor_mk3.json
│ │ │ │ ├── item_sink.json
│ │ │ │ ├── item_sink_cc.json
│ │ │ │ ├── item_sink_creativetab.json
│ │ │ │ ├── item_sink_mod.json
│ │ │ │ ├── item_sink_oredict.json
│ │ │ │ ├── item_sink_polymorphic.json
│ │ │ │ ├── passive_supplier.json
│ │ │ │ ├── provider.json
│ │ │ │ ├── provider_mk2.json
│ │ │ │ ├── quick_sort.json
│ │ │ │ ├── quick_sort_cc.json
│ │ │ │ ├── terminus.json
│ │ │ │ └── thaumic_aspect_sink.json
│ │ │ ├── parts/
│ │ │ │ ├── 0.json
│ │ │ │ ├── 1.json
│ │ │ │ ├── 2.json
│ │ │ │ └── 3.json
│ │ │ ├── pipe.json
│ │ │ ├── pipe_controller.json
│ │ │ ├── pipe_manager.json
│ │ │ ├── remote_orderer/
│ │ │ │ ├── 0.json
│ │ │ │ ├── 1.json
│ │ │ │ ├── 10.json
│ │ │ │ ├── 11.json
│ │ │ │ ├── 12.json
│ │ │ │ ├── 13.json
│ │ │ │ ├── 14.json
│ │ │ │ ├── 15.json
│ │ │ │ ├── 16.json
│ │ │ │ ├── 2.json
│ │ │ │ ├── 3.json
│ │ │ │ ├── 4.json
│ │ │ │ ├── 5.json
│ │ │ │ ├── 6.json
│ │ │ │ ├── 7.json
│ │ │ │ ├── 8.json
│ │ │ │ └── 9.json
│ │ │ ├── sign_creator.0.json
│ │ │ ├── sign_creator.1.json
│ │ │ ├── solid_block.json
│ │ │ ├── sub_multiblock.json
│ │ │ └── upgrade/
│ │ │ ├── action_speed.json
│ │ │ ├── cc_remote_control.json
│ │ │ ├── crafting_byproduct.json
│ │ │ ├── crafting_cleanup.json
│ │ │ ├── crafting_monitoring.json
│ │ │ ├── disconnection.json
│ │ │ ├── fluid_crafting.json
│ │ │ ├── fuzzy.json
│ │ │ ├── item_extraction.json
│ │ │ ├── item_stack_extraction.json
│ │ │ ├── logic_controller.json
│ │ │ ├── module_upgrade.json
│ │ │ ├── opaque.json
│ │ │ ├── pattern.json
│ │ │ ├── power_supplier_eu.json
│ │ │ ├── power_supplier_eu_ev.json
│ │ │ ├── power_supplier_eu_hv.json
│ │ │ ├── power_supplier_eu_lv.json
│ │ │ ├── power_supplier_eu_mv.json
│ │ │ ├── power_supplier_mj.json
│ │ │ ├── power_supplier_rf.json
│ │ │ ├── power_transportation.json
│ │ │ ├── satellite_advanced.json
│ │ │ ├── sneaky.json
│ │ │ ├── sneaky_combination.json
│ │ │ └── speed.json
│ │ ├── recipes/
│ │ │ ├── _factories.json
│ │ │ ├── block_frame.json
│ │ │ ├── chip/
│ │ │ │ ├── chip_advanced_raw.json
│ │ │ │ ├── chip_basic_raw.json
│ │ │ │ ├── chip_basic_raw_nocopper.json
│ │ │ │ └── chip_fpga_raw.json
│ │ │ ├── crafting_table.json
│ │ │ ├── crafting_table_fuzzy.json
│ │ │ ├── disk.json
│ │ │ ├── guide_book.json
│ │ │ ├── logistics_programmer.json
│ │ │ ├── module_blank.json
│ │ │ ├── pipe/
│ │ │ │ ├── pipe_basic.json
│ │ │ │ ├── pipe_hs_curve.json
│ │ │ │ ├── pipe_hs_gain.json
│ │ │ │ ├── pipe_hs_line.json
│ │ │ │ ├── pipe_hs_s_curve.json
│ │ │ │ ├── pipe_hs_speedup.json
│ │ │ │ ├── pipe_request_table.json
│ │ │ │ └── pipe_transport_basic.json
│ │ │ ├── pipe_controller.json
│ │ │ ├── pipe_manager.json
│ │ │ ├── power_junction.json
│ │ │ ├── program_compiler.json
│ │ │ ├── remote_orderer.json
│ │ │ ├── security_station.json
│ │ │ ├── sign_creator.json
│ │ │ └── statistics_table.json
│ │ └── textures/
│ │ └── particles/
│ │ └── laserball.psd
│ ├── logisticspipes/
│ │ └── models/
│ │ ├── BlockModel_result.obj
│ │ ├── HSTube-Gain_result.obj
│ │ ├── HSTube-Line_result.obj
│ │ ├── HSTube-Speedup_result.obj
│ │ ├── HSTube-Turn_result.obj
│ │ ├── PipeModel_Transport_Box.obj
│ │ └── PipeModel_moved.obj
│ └── pack.mcmeta
├── resources_raw/
│ ├── chips/
│ │ └── chip.xcf
│ ├── logistics3.blend
│ ├── logistics4-v2.blend
│ ├── logistics4.blend
│ ├── logistics4.blend1
│ └── mcmod.info
├── run/
│ └── .gitkeep
├── run-server/
│ └── .gitkeep
├── settings.gradle
├── src/
│ ├── api/
│ │ ├── java/
│ │ │ └── network/
│ │ │ └── rs485/
│ │ │ └── debug/
│ │ │ └── api/
│ │ │ ├── IDataConnection.java
│ │ │ ├── IDebugGuiEntry.java
│ │ │ └── IObjectIdentification.java
│ │ └── kotlin/
│ │ └── network/
│ │ └── rs485/
│ │ └── logisticspipes/
│ │ ├── IStore.kt
│ │ ├── connection/
│ │ │ ├── Adjacent.kt
│ │ │ ├── ConnectionType.kt
│ │ │ └── NeighborTileEntity.kt
│ │ ├── gui/
│ │ │ ├── Constraints.kt
│ │ │ ├── Dsl.kt
│ │ │ └── SwingStuff.kt
│ │ ├── pipes/
│ │ │ └── IChassisPipe.kt
│ │ ├── property/
│ │ │ ├── BitSetProperty.kt
│ │ │ ├── BooleanProperty.kt
│ │ │ ├── EnumProperty.kt
│ │ │ ├── IntegerProperty.kt
│ │ │ ├── InventoryProperty.kt
│ │ │ ├── ListProperty.kt
│ │ │ ├── NullableEnumProperty.kt
│ │ │ ├── Property.kt
│ │ │ ├── PropertyHolder.kt
│ │ │ ├── UUIDProperty.kt
│ │ │ ├── Util.kt
│ │ │ ├── ValueProperty.kt
│ │ │ └── layer/
│ │ │ ├── PropertyLayer.kt
│ │ │ ├── PropertyLayerInventoryAdapter.kt
│ │ │ ├── PropertyOverlay.kt
│ │ │ ├── SimplePropertyOverlay.kt
│ │ │ └── ValuePropertyOverlay.kt
│ │ └── util/
│ │ └── Rectangle.kt
│ ├── main/
│ │ ├── java/
│ │ │ └── network/
│ │ │ └── rs485/
│ │ │ └── logisticspipes/
│ │ │ ├── network/
│ │ │ │ └── packets/
│ │ │ │ └── SetCurrentPagePacket.java
│ │ │ ├── proxy/
│ │ │ │ └── mcmp/
│ │ │ │ ├── BlockAccessDelegate.java
│ │ │ │ ├── IMCMPProxy.java
│ │ │ │ ├── MCMPProxy.java
│ │ │ │ └── subproxy/
│ │ │ │ ├── IMCMPBlockAccess.java
│ │ │ │ ├── IMCMPLTGPCompanion.java
│ │ │ │ ├── LPTileMultipartContainer.java
│ │ │ │ ├── MCMPBlockAccess.java
│ │ │ │ ├── MCMPLTGPCompanion.java
│ │ │ │ └── MCMPMultipartContainerProvider.java
│ │ │ ├── util/
│ │ │ │ ├── LPDataIOWrapper.java
│ │ │ │ ├── LPDataInput.java
│ │ │ │ ├── LPDataOutput.java
│ │ │ │ ├── LPFinalSerializable.java
│ │ │ │ ├── LPSerializable.java
│ │ │ │ └── items/
│ │ │ │ └── ItemStackLoader.java
│ │ │ └── world/
│ │ │ ├── CoordinateUtils.java
│ │ │ ├── DoubleCoordinates.java
│ │ │ ├── DoubleCoordinatesType.java
│ │ │ └── ICoordinates.java
│ │ └── kotlin/
│ │ ├── logisticspipes/
│ │ │ ├── pipes/
│ │ │ │ ├── PipeFluidBasic.kt
│ │ │ │ ├── PipeFluidTerminus.kt
│ │ │ │ └── PipeFluidUtil.kt
│ │ │ └── routing/
│ │ │ └── AsyncRouting.kt
│ │ └── network/
│ │ └── rs485/
│ │ ├── debug/
│ │ │ ├── OpenGLDebugger.kt
│ │ │ └── PerformanceMeter.kt
│ │ ├── grow/
│ │ │ ├── ChunkedChannel.kt
│ │ │ ├── Coroutines.kt
│ │ │ └── ServerTickDispatcher.kt
│ │ ├── logisticspipes/
│ │ │ ├── FluidSinkPipe.kt
│ │ │ ├── SatellitePipe.kt
│ │ │ ├── compat/
│ │ │ │ ├── BarrelInventoryHandler.kt
│ │ │ │ ├── JEIAdvancedGuiHandler.kt
│ │ │ │ ├── JEIGhostIngredientHandler.kt
│ │ │ │ └── TheOneProbeIntegration.kt
│ │ │ ├── config/
│ │ │ │ ├── ClientConfiguration.kt
│ │ │ │ ├── PlayerConfiguration.kt
│ │ │ │ ├── ServerConfiguration.kt
│ │ │ │ └── ServerConfigurationManager.kt
│ │ │ ├── connection/
│ │ │ │ ├── AdjacentFactory.kt
│ │ │ │ ├── AdjacentUtil.kt
│ │ │ │ ├── DynamicAdjacent.kt
│ │ │ │ ├── LPNeighborTileEntity.kt
│ │ │ │ ├── LPNeighborTileEntitySneakyInsertion.kt
│ │ │ │ ├── NoAdjacent.kt
│ │ │ │ ├── PipeInventoryConnectionChecker.kt
│ │ │ │ └── SingleAdjacent.kt
│ │ │ ├── gui/
│ │ │ │ ├── BaseGuiContainer.kt
│ │ │ │ ├── BaseGuiScreen.kt
│ │ │ │ ├── DslExtension.kt
│ │ │ │ ├── GuiDrawer.kt
│ │ │ │ ├── GuiRenderer.kt
│ │ │ │ ├── WidgetContainer.kt
│ │ │ │ ├── WidgetScreen.kt
│ │ │ │ ├── font/
│ │ │ │ │ ├── BDF.kt
│ │ │ │ │ ├── FontParser.kt
│ │ │ │ │ ├── FontWrapper.kt
│ │ │ │ │ ├── IFont.kt
│ │ │ │ │ └── LPFontRenderer.kt
│ │ │ │ ├── guidebook/
│ │ │ │ │ ├── BookmarkManagingButton.kt
│ │ │ │ │ ├── Drawable.kt
│ │ │ │ │ ├── DrawableHeaderParagraph.kt
│ │ │ │ │ ├── DrawableHorizontalLine.kt
│ │ │ │ │ ├── DrawableImageParagraph.kt
│ │ │ │ │ ├── DrawableMenuParagraph.kt
│ │ │ │ │ ├── DrawablePage.kt
│ │ │ │ │ ├── DrawablePageFactory.kt
│ │ │ │ │ ├── DrawableParagraph.kt
│ │ │ │ │ ├── DrawableRegularParagraph.kt
│ │ │ │ │ ├── DrawableWord.kt
│ │ │ │ │ ├── GuiGuideBook.kt
│ │ │ │ │ ├── HomeButton.kt
│ │ │ │ │ ├── LPGuiButton.kt
│ │ │ │ │ ├── LinkGroup.kt
│ │ │ │ │ ├── Page.kt
│ │ │ │ │ ├── SliderButton.kt
│ │ │ │ │ └── TabButton.kt
│ │ │ │ ├── module/
│ │ │ │ │ ├── ItemSinkGui.kt
│ │ │ │ │ └── ProviderGui.kt
│ │ │ │ └── widget/
│ │ │ │ ├── FuzzySelectionWidget.kt
│ │ │ │ ├── GhostSlots.kt
│ │ │ │ ├── LPGuiButton.kt
│ │ │ │ ├── LPGuiWidget.kt
│ │ │ │ ├── Label.kt
│ │ │ │ ├── LabelWidget.kt
│ │ │ │ ├── LockedSlot.kt
│ │ │ │ ├── PlayerInventorySlotGroup.kt
│ │ │ │ ├── SlotGroup.kt
│ │ │ │ ├── TextButton.kt
│ │ │ │ └── VerticalLabel.kt
│ │ │ ├── guidebook/
│ │ │ │ ├── BookContents.kt
│ │ │ │ ├── DebugPage.kt
│ │ │ │ └── ItemGuideBook.kt
│ │ │ ├── inventory/
│ │ │ │ ├── FuzzySlotAccess.kt
│ │ │ │ ├── IItemIdentifierInventory.kt
│ │ │ │ ├── ProviderMode.kt
│ │ │ │ ├── SlotAccess.kt
│ │ │ │ └── container/
│ │ │ │ ├── ItemSinkContainer.kt
│ │ │ │ ├── LPBaseContainer.kt
│ │ │ │ └── ProviderContainer.kt
│ │ │ ├── logistics/
│ │ │ │ └── LogisticsManager.kt
│ │ │ ├── module/
│ │ │ │ ├── AsyncAdvancedExtractor.kt
│ │ │ │ ├── AsyncComputerQuicksort.kt
│ │ │ │ ├── AsyncExtractorModule.kt
│ │ │ │ ├── AsyncModule.kt
│ │ │ │ ├── AsyncQuicksortModule.kt
│ │ │ │ ├── Gui.kt
│ │ │ │ ├── PipeServiceProviderUtil.kt
│ │ │ │ ├── SimpleFilter.kt
│ │ │ │ ├── SneakyDirection.kt
│ │ │ │ └── Util.kt
│ │ │ ├── property/
│ │ │ │ ├── AdjacentProperty.kt
│ │ │ │ ├── ItemIdentifierInventoryProperty.kt
│ │ │ │ ├── PropertyUpdater.kt
│ │ │ │ ├── PropertyUpdaterEventListener.kt
│ │ │ │ ├── SimpleInventoryProperty.kt
│ │ │ │ ├── SlottedModule.kt
│ │ │ │ ├── SlottedModuleListProperty.kt
│ │ │ │ └── UpgradeManagerListProperty.kt
│ │ │ ├── proxy/
│ │ │ │ ├── StorageDrawersProxy.kt
│ │ │ │ └── StorageDrawersProxyImpl.kt
│ │ │ ├── util/
│ │ │ │ ├── ColorUtil.kt
│ │ │ │ ├── FuzzyUtil.kt
│ │ │ │ ├── Item.kt
│ │ │ │ ├── TextUtil.kt
│ │ │ │ └── math/
│ │ │ │ ├── BorderedRectangle.kt
│ │ │ │ └── MutableRectangle.kt
│ │ │ └── world/
│ │ │ └── WorldCoordinatesWrapper.kt
│ │ ├── markdown/
│ │ │ ├── Element.kt
│ │ │ ├── MarkdownParser.kt
│ │ │ └── Paragraph.kt
│ │ └── util/
│ │ ├── ByteBufUtils.kt
│ │ └── SystemUtil.kt
│ └── test/
│ └── kotlin/
│ └── network/
│ └── rs485/
│ ├── logisticspipes/
│ │ ├── integration/
│ │ │ ├── CraftingTest.kt
│ │ │ ├── LPTestBuilder.kt
│ │ │ ├── MinecraftTest.kt
│ │ │ ├── PipePlacer.kt
│ │ │ ├── TestWorldBuilder.kt
│ │ │ └── UnroutedPipePlacer.kt
│ │ └── util/
│ │ ├── LPDataIOWrapperTest.kt
│ │ └── TestUtil.kt
│ ├── markdown/
│ │ └── MarkdownParserTest.kt
│ └── minecraft/
│ ├── BlockPlacer.kt
│ ├── BlockPosSelector.kt
│ └── WorldBuilder.kt
└── style/
└── LP_Format_IntelliJ.xml
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
root = true
[*]
end_of_line = lf
insert_final_newline = true
[*.gradle]
indent_size = 4
indent_style = space
[*.yml]
indent_size = 2
indent_style = space
[common/**.java]
indent_size = 4
indent_style = tab
ij_java_imports_layout = java.**,javax.**,|,net.minecraft.**,|,net.minecraftforge.**,|,*,|,logisticspipes.**,network.rs485.**
[src/**.java]
indent_size = 4
indent_style = space
ij_java_imports_layout = java.**,javax.**,|,net.minecraft.**,|,net.minecraftforge.**,|,*,|,logisticspipes.**,network.rs485.**
[*.{kt,kts}]
indent_size = 4
indent_style = space
max_line_length = 120
ktlint_code_style = official
ktlint_disabled_rules = no-wildcard-imports
ij_kotlin_name_count_to_use_star_import = 5
ij_kotlin_name_count_to_use_star_import_for_members = 3
ij_kotlin_packages_to_use_import_on_demand = java.util.*,kotlinx.android.synthetic.**,io.ktor.**
ij_kotlin_imports_layout = network.rs485.**,logisticspipes.**,*,net.minecraftforge.**,net.minecraft.**,java.**,javax.**,kotlin.**,kotlinx.**,^
ij_kotlin_allow_trailing_comma = true
ij_kotlin_allow_trailing_comma_on_call_site = true
================================================
FILE: .gitattributes
================================================
*.bat text eol=crlf
*.bdf binary
*.jar filter=lfs diff=lfs merge=lfs -text
================================================
FILE: .gitignore
================================================
# IDEA project output path
/classes
/logs
# IDEA run configurations
.idea/runConfigurations
# Created by https://www.gitignore.io/api/java,gradle,kotlin,forgegradle,intellij+iml
# Edit at https://www.gitignore.io/?templates=java,gradle,kotlin,forgegradle,intellij+iml
### ForgeGradle ###
# Minecraft client/server files
run/*
run-server/*
run-server-test/*
!run/.gitkeep
!run-server/.gitkeep
### Intellij+iml ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
.idea/**/vcs.xml
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
.idea/compiler.xml
.idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# File-based project format
*.iws
# IntelliJ
out/
### Intellij+iml Patch ###
# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
*.iml
modules.xml
.idea/misc.xml
*.ipr
### Java ###
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*
### Gradle ###
.gradle
**/build/
!src/**/build/
# Ignore Gradle GUI config
gradle-app.setting
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar
# Avoid ignore Gradle wrappper properties
!gradle-wrapper.properties
# Cache of project
.gradletasknamecache
# Eclipse Gradle plugin generated files
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath
### Gradle Patch ###
# Java heap dump
*.hprof
# End of https://www.gitignore.io/api/java,gradle,kotlin,forgegradle,intellij+iml
================================================
FILE: .idea/.name
================================================
LogisticsPipes
================================================
FILE: .idea/codeInsightSettings.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaProjectCodeInsightSettings">
<excluded-names>
<name>scala</name>
</excluded-names>
</component>
</project>
================================================
FILE: .idea/codeStyles/Project.xml
================================================
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<option name="LINE_SEPARATOR" value=" " />
<option name="FORMATTER_TAGS_ENABLED" value="true" />
<JavaCodeStyleSettings>
<option name="LAYOUT_STATIC_IMPORTS_SEPARATELY" value="false" />
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
<value />
</option>
<option name="IMPORT_LAYOUT_TABLE">
<value>
<package name="java" withSubpackages="true" static="false" />
<package name="javax" withSubpackages="true" static="false" />
<emptyLine />
<package name="net.minecraft" withSubpackages="true" static="false" />
<emptyLine />
<package name="net.minecraftforge" withSubpackages="true" static="false" />
<emptyLine />
<package name="" withSubpackages="true" static="false" />
<emptyLine />
<package name="logisticspipes" withSubpackages="true" static="false" />
<package name="network.rs485" withSubpackages="true" static="false" />
</value>
</option>
<option name="JD_KEEP_EMPTY_LINES" value="false" />
</JavaCodeStyleSettings>
<JetCodeStyleSettings>
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>
<codeStyleSettings language="JAVA">
<option name="KEEP_LINE_BREAKS" value="false" />
<option name="KEEP_FIRST_COLUMN_COMMENT" value="false" />
<option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" />
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
<option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="1" />
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
<option name="BLANK_LINES_AFTER_ANONYMOUS_CLASS_HEADER" value="1" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<option name="ALIGN_MULTILINE_RESOURCES" value="false" />
<option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACES" value="true" />
<option name="SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE" value="true" />
<option name="CALL_PARAMETERS_WRAP" value="1" />
<option name="METHOD_PARAMETERS_WRAP" value="1" />
<option name="RESOURCE_LIST_WRAP" value="5" />
<option name="EXTENDS_LIST_WRAP" value="1" />
<option name="THROWS_LIST_WRAP" value="1" />
<option name="EXTENDS_KEYWORD_WRAP" value="1" />
<option name="THROWS_KEYWORD_WRAP" value="1" />
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
<option name="BINARY_OPERATION_WRAP" value="1" />
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
<option name="TERNARY_OPERATION_WRAP" value="5" />
<option name="KEEP_SIMPLE_LAMBDAS_IN_ONE_LINE" value="true" />
<option name="KEEP_SIMPLE_CLASSES_IN_ONE_LINE" value="true" />
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
<option name="VARIABLE_ANNOTATION_WRAP" value="2" />
<indentOptions>
<option name="USE_TAB_CHARACTER" value="true" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="Markdown">
<option name="SOFT_MARGINS" value="80" />
</codeStyleSettings>
<codeStyleSettings language="kotlin">
<option name="CALL_PARAMETERS_WRAP" value="5" />
<option name="CALL_PARAMETERS_LPAREN_ON_NEXT_LINE" value="true" />
<option name="CALL_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" />
<option name="METHOD_PARAMETERS_WRAP" value="5" />
<option name="METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE" value="true" />
<option name="METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" />
<option name="EXTENDS_LIST_WRAP" value="1" />
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
<option name="ASSIGNMENT_WRAP" value="1" />
</codeStyleSettings>
</code_scheme>
</component>
================================================
FILE: .idea/codeStyles/codeStyleConfig.xml
================================================
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="LP Format" />
</state>
</component>
================================================
FILE: .idea/copyright/RS485_Dual_MIT_MMPL.xml
================================================
<component name="CopyrightManager">
<copyright>
<option name="keyword" value="This MIT license was reworded to only match this file." />
<option name="notice" value="Copyright (c) &#36;today.year RS485 "LogisticsPipes" is distributed under the terms of the Minecraft Mod Public License 1.0.1, or MMPL. Please check the contents of the license located in https://github.com/RS485/LogisticsPipes/blob/dev/LICENSE.md This file can instead be distributed under the license terms of the MIT license: Copyright (c) &#36;today.year RS485 This MIT license was reworded to only match this file. If you use the regular MIT license in your project, replace this copyright notice (this line and any lines below and NOT the copyright line above) with the lines from the original MIT license located here: http://opensource.org/licenses/MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this file and associated documentation files (the "Source Code"), to deal in the Source Code without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Source Code, and to permit persons to whom the Source Code 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 Source Code, which also can be distributed under the MIT. 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." />
<option name="myName" value="RS485 Dual MIT MMPL" />
</copyright>
</component>
================================================
FILE: .idea/copyright/profiles_settings.xml
================================================
<component name="CopyrightManager">
<settings>
<module2copyright>
<element module="network.rs485 package" copyright="RS485 Dual MIT MMPL" />
</module2copyright>
</settings>
</component>
================================================
FILE: .idea/encodings.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with NO BOM" />
</project>
================================================
FILE: .idea/externalAnnotations/net/minecraft/block/state/annotations.xml
================================================
<root>
<item name='net.minecraft.block.state.IBlockProperties net.minecraft.util.math.RayTraceResult collisionRayTrace(net.minecraft.world.World, net.minecraft.util.math.BlockPos, net.minecraft.util.math.Vec3d, net.minecraft.util.math.Vec3d)'>
<annotation name='javax.annotation.Nullable'/>
</item>
</root>
================================================
FILE: .idea/externalAnnotations/net/minecraft/client/gui/inventory/annotations.xml
================================================
<root>
<item name='net.minecraft.client.gui.inventory.GuiContainer void handleMouseClick(net.minecraft.inventory.Slot, int, int, net.minecraft.inventory.ClickType) 0'>
<annotation name='javax.annotation.Nullable'/>
</item>
</root>
================================================
FILE: .idea/externalAnnotations/net/minecraft/item/annotations.xml
================================================
<root>
<item name='net.minecraft.item.Item net.minecraft.item.ItemStack onItemUseFinish(net.minecraft.item.ItemStack, net.minecraft.world.World, net.minecraft.entity.EntityLivingBase) 1'>
<annotation name='javax.annotation.Nullable'/>
</item>
<item name='net.minecraft.item.Item net.minecraft.util.ActionResult<net.minecraft.item.ItemStack> onItemRightClick(net.minecraft.world.World, net.minecraft.entity.player.EntityPlayer, net.minecraft.util.EnumHand) 0'>
<annotation name='javax.annotation.Nullable'/>
</item>
<item name='net.minecraft.item.Item net.minecraft.util.EnumActionResult onItemUse(net.minecraft.entity.player.EntityPlayer, net.minecraft.world.World, net.minecraft.util.math.BlockPos, net.minecraft.util.EnumHand, net.minecraft.util.EnumFacing, float, float, float) 1'>
<annotation name='javax.annotation.Nullable'/>
</item>
</root>
================================================
FILE: .idea/externalAnnotations/net/minecraft/world/annotations.xml
================================================
<root>
<item name='net.minecraft.world.IWorldNameable net.minecraft.util.text.ITextComponent getDisplayName()'>
<annotation name='javax.annotation.Nullable'/>
</item>
</root>
================================================
FILE: .idea/inspectionProfiles/Project_Default.xml
================================================
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="WeakerAccess" enabled="false" level="WARNING" enabled_by_default="false">
<option name="SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS" value="true" />
<option name="SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES" value="true" />
<option name="SUGGEST_PRIVATE_FOR_INNERS" value="false" />
</inspection_tool>
</profile>
</component>
================================================
FILE: .idea/kotlinc.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinJpsPluginSettings">
<option name="version" value="1.7.10" />
</component>
</project>
================================================
FILE: .idea/libraries-with-intellij-classes.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="libraries-with-intellij-classes">
<option name="intellijApiContainingLibraries">
<list>
<LibraryCoordinatesState>
<option name="artifactId" value="ideaIU" />
<option name="groupId" value="com.jetbrains.intellij.idea" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="ideaIU" />
<option name="groupId" value="com.jetbrains" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="ideaIC" />
<option name="groupId" value="com.jetbrains.intellij.idea" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="ideaIC" />
<option name="groupId" value="com.jetbrains" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="pycharmPY" />
<option name="groupId" value="com.jetbrains.intellij.pycharm" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="pycharmPY" />
<option name="groupId" value="com.jetbrains" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="pycharmPC" />
<option name="groupId" value="com.jetbrains.intellij.pycharm" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="pycharmPC" />
<option name="groupId" value="com.jetbrains" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="clion" />
<option name="groupId" value="com.jetbrains.intellij.clion" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="clion" />
<option name="groupId" value="com.jetbrains" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="riderRD" />
<option name="groupId" value="com.jetbrains.intellij.rider" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="riderRD" />
<option name="groupId" value="com.jetbrains" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="goland" />
<option name="groupId" value="com.jetbrains.intellij.goland" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="goland" />
<option name="groupId" value="com.jetbrains" />
</LibraryCoordinatesState>
</list>
</option>
</component>
</project>
================================================
FILE: .idea/scopes/network_rs485_package.xml
================================================
<component name="DependencyValidationManager">
<scope name="network.rs485 package" pattern="network.rs485..*" />
</component>
================================================
FILE: .travis.yml
================================================
language: java
jobs:
include:
- stage: build
name: "Build and install"
script: ./gradlew install -xtest
- stage: test
name: "Unit tests"
script: ./gradlew check
- stage: test
name: "Integration tests"
script: ./gradlew -P acceptMinecraftServerEula=true integrationTests
jdk:
- openjdk8
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
cache:
directories:
- build/fg_cache
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
================================================
FILE: BUILDING.md
================================================
# Building Logistics Pipes
If you are familiar with Minecraft Forge and Gradle or you are a Java developer
you should not have many problems starting with Logistics Pipes and your IDE.
But we have some required steps that you need to follow to make things work.
## Prerequisites
1. Having [git](http://git-scm.com/) and git-lfs installed
2. Having an IDE (we do use [IntelliJ IDEA](https://www.jetbrains.com/idea/))
3. Having Java Development Kit 8; newer versions are not supported by this
Minecraft or Minecraft Forge version.
4. Matrix/Discord wouldn't be bad if you want to communicate with other
contributors and us.
## Matrix
[Logistics Pipes Space](https://matrix.to/#/#logisticspipes+space:rs485.network)
- [Dev Channel](https://matrix.to/#/#logisticspipes+dev:rs485.network)
The channels are all linked to Discord and some even to IRC.
## How to set up a local development environment
### git
First off you need to clone Logistics Pipes from GitHub of course. If you only
want to browse the source, you can clone the official repository. But it is best
practice to actually fork the repository and clone your own copy.
The git command line is `git clone https://github.com/RS485/LogisticsPipes.git`
where you can replace *RS485* by your own user name, **if** you forked the
repository.
### git-lfs
If you didn't have git-lfs installed at the time of cloning the git repository,
jar files are "broken", because lfs did not download and replace them.
You can manually run the following commands to fix the situation peacefully:
```shell
$ git lfs install
$ git lfs fetch
$ git lfs checkout
```
### Gradle
Make sure you are running Gradle with Java 8: You can check the default
java version with `java -version` and control the version Gradle uses with
the `JAVA_HOME` environment variable. LP can be built with `./gradlew build`
and the output found in the directory `build/libs`.
If the task fails there may be something wrong with maven repositories or
[a Java update broke ForgeGradle 2](https://github.com/MinecraftForge/ForgeGradle/issues/652)
or something may be wrong with your setup. You may definitely ask for help on
the mentioned communication channels above, but please be sure to state your
issue as good as possible and be nice to others.
### IDEA Quirks
For IDEA to use the correct Java SDK, you might have to select the correct
JDK (Java JDK 8, OpenJDK build preferred) in `File > Project Structure` in the
project part of the project settings under SDK.
### Running Minecraft from your dev environment
After you successfully built LP you can probably run Minecraft directly from
your IDE after running the correct ForgeGradle generate run configuration task.
Please look at ForgeGradle documentation for more information.
If you are not using IntelliJ IDEA, there may be a ton of missing texture
errors and missing language files. The cause is newer ForgeGradle versions.
Our ForgeGradle version and our build script contain fixes for IntelliJ IDEA
only; sorry if you are not using IDEA. The solution is to remove
`build/classes/*/*` and `build/resources/*` from the run configuration
classpath and add the custom `build/run_classes` path to the classpath.
We are open for any contributions for a better solution or wider support.
The workaround is to copy your `build/resources/main/*` into
`build/classes/java/main` before launching the game, or you may link those two
together (Linux or WSL):
```shell
$ rm -r build/resources/main && ln -s ../classes/java/main build/resources/main
```
Windows `cmd`:
```
rd /s /q "build\\resources\\main" && mklink /D "build\\resources\\main" "..\\classes\\java\\main"
```
================================================
FILE: LICENSE.md
================================================
Minecraft Mod Public License
============================
Version 1.0.1
0. Definitions
--------------
Minecraft: Denotes a copy of the Minecraft game licensed by Mojang AB
User: Anybody that interacts with the software in one of the following ways:
- play
- decompile
- recompile or compile
- modify
- distribute
Mod: The mod code designated by the present license, in source form, binary
form, as obtained standalone, as part of a wider distribution or resulting from
the compilation of the original or modified sources.
Dependency: Code required for the mod to work properly. This includes
dependencies required to compile the code as well as any file or modification
that is explicitely or implicitely required for the mod to be working.
1. Scope
--------
The present license is granted to any user of the mod. As a prerequisite,
a user must own a legally acquired copy of Minecraft
2. Liability
------------
This mod is provided 'as is' with no warranties, implied or otherwise. The owner
of this mod takes no responsibility for any damages incurred from the use of
this mod. This mod alters fundamental parts of the Minecraft game, parts of
Minecraft may not work with this mod installed. All damages caused from the use
or misuse of this mad fall on the user.
3. Play rights
--------------
The user is allowed to install this mod on a client or a server and to play
without restriction.
4. Modification rights
----------------------
The user has the right to decompile the source code, look at either the
decompiled version or the original source code, and to modify it.
5. Derivation rights
--------------------
The user has the rights to derive code from this mod, that is to say to
write code that extends or instanciate the mod classes or interfaces, refer to
its objects, or calls its functions. This code is known as "derived" code, and
can be licensed under a license different from this mod.
6. Distribution of original or modified copy rights
---------------------------------------------------
Is subject to distribution rights this entire mod in its various forms. This
include:
- original binary or source forms of this mod files
- modified versions of these binaries or source files, as well as binaries
resulting from source modifications
- patch to its source or binary files
- any copy of a portion of its binary source files
The user is allowed to redistribute this mod partially, in totality, or
included in a distribution.
When distributing binary files, the user must provide means to obtain its
entire set of sources or modified sources at no costs.
All distributions of this mod must remain licensed under the MMPL.
All dependencies that this mod have on other mods or classes must be licensed
under conditions comparable to this version of MMPL, with the exception of the
Minecraft code and the mod loading framework (e.g. ModLoader, ModLoaderMP or
Bukkit).
Modified version of binaries and sources, as well as files containing sections
copied from this mod, should be distributed under the terms of the present
license.
================================================
FILE: README.md
================================================
# LogisticsPipes
[](https://ci.rs485.network/)

Logistics Pipes is an extensive overhaul of the Buildcraft pipe system. It allows for better distribution of items via pipes, more organised stockkeeping and easier automated crafting.
Go to the [CurseForge Page](https://www.curseforge.com/minecraft/mc-mods/logistics-pipes) for more information and recent downloads.
We advise anyone who is not a developer to go there.
You are free to use this mod in your modpack without asking or noticing us.
If you want to understand the sheer amount of changes we have made to the source, you can use [Gource](http://gource.io/)
Credits for the code goes to all [contributors](https://github.com/RS485/LogisticsPipes/contributors).
Credits for the idea and basic code goes to Krapht.
## Translate
See [this repo](https://github.com/RS485/LogisticsPipes-Language) for translations.
## Builds
See our [Jenkins](https://ci.rs485.network/).
Our jar certificate fingerprint is `e0c86912b2f7cc0cc646ad57799574aea43dbd45`.
Our GPG key id is `C4E5 0DBF CE49 AC33 E052 B591 2669 A04F D19F 2F7A` and we sign our jars with the subkey `386B 2790 B001 3BF8 1ED2 2D81 0119 F8E9 56C4 E048`.
## Contact
Get in touch with us on [Matrix](https://matrix.to/#/#lp:rs485.network) or the [RS485 Discord](https://discord.gg/6vPP3A8)
================================================
FILE: build.gradle
================================================
buildscript {
repositories {
mavenCentral()
maven {
url = "https://maven.removeco.de/"
}
}
dependencies {
classpath group: 'network.rs485.forge', name: 'ForgeGradle', version: forgegradle_version
}
}
plugins {
id 'java'
id 'maven-publish'
id 'org.jetbrains.kotlin.jvm' version "$kotlin_version"
id 'org.jetbrains.kotlin.plugin.serialization' version "$kotlin_version"
id 'org.jetbrains.kotlin.plugin.lombok' version "$kotlin_version"
id 'io.freefair.lombok' version "$lombok_plugin_version"
id 'signing'
id 'com.matthewprenger.cursegradle' version "$cursegradle_version"
id 'com.github.johnrengelman.shadow' version "$shadow_version"
}
apply plugin: 'network.rs485.forge'
archivesBaseName = "logisticspipes"
group = "network.rs485"
version = "0.10.4"
ext.vendor = "unknown"
ext.target = "Forge $forge_version"
java.toolchain.languageVersion = JavaLanguageVersion.of(8)
println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}"
def ENV = System.getenv()
if (ENV.BUILD_NUMBER) {
version = "$version.${ENV.BUILD_NUMBER}"
} else if (ENV.VERSION) {
version = "$version.${ENV.VERSION}"
} else {
version = "$version-SNAPSHOT"
}
if (ENV.JENKINS_URL) {
ext.vendor = ENV.JENKINS_URL
} else if (ENV.JITPACK) {
ext.vendor = "JitPack.io"
group = ENV.GROUP
}
ext.sharedManifest = manifest {
attributes(
'FMLCorePlugin': 'logisticspipes.asm.LogisticsPipesCoreLoader',
'FMLCorePluginContainsFMLMod': 'true',
'FMLAT': 'lp_at.cfg',
'Specification-Title': 'LogisticsPipes',
'Specification-Vendor': 'RS485',
'Specification-Version': '1',
'Implementation-Vendor': "$vendor",
'Implementation-Title': "${project.name}",
'Implementation-Version': "$version",
'Implementation-Target': "$target",
'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"))
}
sourceSets {
api {
java {
srcDirs = ['src/api/java']
}
}
dummy {
java {
srcDirs = ['dummy/src/main/java']
}
}
main {
compileClasspath += dummy.output
compileClasspath += api.output
runtimeClasspath += api.output
java {
srcDirs += 'common'
}
resources {
srcDirs += 'resources'
}
}
test {
compileClasspath += dummy.output
compileClasspath += api.output
runtimeClasspath += api.output
}
}
configurations {
testCompileOnly.extendsFrom compileOnly
ktlint
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
kotlinOptions {
languageVersion = "1.7"
jvmTarget = JavaVersion.VERSION_1_8
freeCompilerArgs += "-Xjvm-default=all"
}
}
kotlinLombok {
lombokConfigurationFile file("lombok.config")
}
project.afterEvaluate {
tasks.register('copyRunClasses', Copy.class) {
dependsOn ['classes']
from sourceSets.main.output.classesDirs, sourceSets.main.output.resourcesDir, sourceSets.api.output.classesDirs
into "${project.buildDir}/run_classes/"
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
includeEmptyDirs false
}
tasks['prepareRuns'].dependsOn('copyRunClasses')
}
minecraft {
mappings channel: 'snapshot', version: "$mappings_version"
accessTransformer = file("$rootDir/resources/META-INF/lp_at.cfg")
runs {
client {
workingDirectory project.file('run')
// Recommended logging data for a userdev environment
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
// Recommended logging level for the console
property 'forge.logging.console.level', 'debug'
// load LP core mod from classpath
property 'fml.coreMods.load', 'logisticspipes.asm.LogisticsPipesCoreLoader'
jvmArgs '-ea'
environment 'MC_VERSION', mcversion
lazyToken 'classpathExclude', {
def paths = [
sourceSets.main.output.resourcesDir.toPath().toString(),
sourceSets.api.output.resourcesDir.toPath().toString(),
]
for (final def file in sourceSets.main.output.classesDirs.getFiles()) {
paths.add(file.toPath().toString())
}
for (final def file in sourceSets.api.output.classesDirs.getFiles()) {
paths.add(file.toPath().toString())
}
String.join(File.pathSeparator, paths)
}
lazyToken 'classpathInclude', {
def paths = [project.buildDir.toPath().resolve("run_classes").toString()]
String.join(File.pathSeparator, paths)
}
mods {
logisticspipes {
sources = [sourceSets.api, sourceSets.main]
}
}
}
server {
workingDirectory project.file('run-server')
// Recommended logging data for a userdev environment
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
// Recommended logging level for the console
property 'forge.logging.console.level', 'debug'
// load LP core mod from classpath
property 'fml.coreMods.load', 'logisticspipes.asm.LogisticsPipesCoreLoader'
jvmArgs '-ea'
environment 'MC_VERSION', mcversion
lazyToken 'classpathExclude', {
def paths = [
sourceSets.main.output.classesDirs.asPath,
sourceSets.api.output.classesDirs.asPath,
sourceSets.main.output.resourcesDir.path,
sourceSets.api.output.resourcesDir.path,
]
String.join(File.pathSeparator, paths)
}
lazyToken 'classpathInclude', {
def paths = ["${project.buildDir}/run_classes/"]
String.join(File.pathSeparator, paths)
}
mods {
logisticspipes {
sources = [sourceSets.api, sourceSets.main]
}
}
}
serverTest {
environment 'target', 'server'
// mimic the runServer task
environment 'mainClass', 'net.minecraft.launchwrapper.Launch'
environment 'MCP_TO_SRG', "$buildDir/createSrgToMcp/output.srg"
environment 'MC_VERSION', mcversion
main 'net.minecraftforge.legacydev.MainServer'
args '--tweakClass', 'net.minecraftforge.fml.common.launcher.FMLServerTweaker'
arg 'nogui' // without GUI
jvmArg '-ea'
workingDirectory project.file('run-server-test')
// load LP core mod from classpath
property 'fml.coreMods.load', 'logisticspipes.asm.LogisticsPipesCoreLoader'
// put LP in test mode
property 'logisticspipes.test', 'true'
property 'logisticspipes.test.debug', 'false' // set this to true in the generated run configuration
lazyToken 'classpathExclude', {
def paths = [
sourceSets.main.output.classesDirs.asPath,
sourceSets.api.output.classesDirs.asPath,
sourceSets.main.output.resourcesDir.path,
sourceSets.api.output.resourcesDir.path,
]
String.join(File.pathSeparator, paths)
}
lazyToken 'classpathInclude', {
def paths = [
"${project.buildDir}/run_classes/",
sourceSets.test.output.classesDirs.asPath,
sourceSets.test.output.resourcesDir.path,
]
// sorry for the mess in the run configuration's classpath,
// but using the test classpath included the dependencies from the provided scope
for (final def file in configurations.testRuntimeClasspath.resolvedConfiguration.files) {
paths.add(file.toPath().toString())
}
String.join(File.pathSeparator, paths)
}
mods {
logisticspipes {
sources = [sourceSets.api, sourceSets.main, sourceSets.test]
}
}
}
}
}
jar {
from sourceSets.api.output
finalizedBy 'shadowJar'
duplicatesStrategy = DuplicatesStrategy.WARN
manifest = project.manifest {
from sharedManifest
}
}
shadowJar {
from sourceSets.api.output
finalizedBy 'reobfJar'
archiveClassifier.set('')
dependencies {
include(dependency(group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: kotlin_version))
include(dependency(group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jdk8', version: kotlin_version))
include(dependency(group: 'org.jetbrains', name: 'annotations', version: kannotations_version))
include(dependency(group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-core-jvm', version: kcoroutines_version))
include(dependency(group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-jdk8', version: kcoroutines_version))
include(dependency(group: 'org.jetbrains.kotlinx', name: 'kotlinx-serialization-json-jvm', version: kserialization_version))
include(dependency(group: 'org.jetbrains.kotlinx', name: 'kotlinx-serialization-core-jvm', version: kserialization_version))
include(dependency(group: 'com.charleskorn.kaml', name: 'kaml-jvm', version: kaml_version))
include(dependency(group: 'org.snakeyaml', name: 'snakeyaml-engine', version: '2.3'))
}
relocate 'kotlin', 'logisticspipes.kotlin'
relocate 'kotlinx', 'logisticspipes.kotlinx'
relocate 'org.intellij', 'logisticspipes.intellij'
relocate 'org.jetbrains', 'logisticspipes.jetbrains'
relocate 'org.snakeyaml', 'logisticspipes.snakeyaml'
relocate 'com.charleskorn.kaml', 'logisticspipes.kaml'
exclude 'META-INF/versions/9/*'
exclude 'DebugProbesKt.bin'
manifest {
inheritFrom sharedManifest
}
}
task sourceJar(type: Jar) {
from sourceSets.api.allSource
from sourceSets.main.allSource
archiveClassifier.set('sources')
}
test {
reports {
html.required.set(true)
}
}
processResources {
// this will ensure that this task is redone when the versions change.
inputs.property "version", project.version
duplicatesStrategy = DuplicatesStrategy.FAIL
// replace stuff in mcmod.info, nothing else
from(project.file('resources_raw')) {
include 'mcmod.info'
// replace version and mcversion
expand 'version': project.version, 'mcversion': mcversion
}
}
repositories {
mavenCentral()
maven {
url = "https://maven.removeco.de/"
}
}
dependencies {
minecraft group: 'net.minecraftforge', name: 'forge', version: forge_version
apiImplementation group: 'net.minecraftforge', name: 'forge', version: forge_version
dummyImplementation group: 'net.minecraftforge', name: 'forge', version: forge_version
implementation group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: kotlin_version
implementation group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jdk8', version: kotlin_version
implementation group: 'org.jetbrains', name: 'annotations', version: kannotations_version
implementation group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-core', version: kcoroutines_version
implementation group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-jdk8', version: kcoroutines_version
implementation group: 'org.jetbrains.kotlinx', name: 'kotlinx-serialization-json', version: kserialization_version
implementation group: 'com.charleskorn.kaml', name: 'kaml', version: kaml_version
implementation group: 'network.rs485', name: 'CodeChickenLib', version: '3.3.0.9', classifier: 'deobf'
compileOnly group: 'mcjty.theoneprobe', name: 'TheOneProbe-1.12', version: '1.12-1.4.28-17', classifier: 'api'
compileOnly group: 'mezz.jei', name: 'jei_1.12.2', version: '4.15.0.293'
compileOnly group: 'MCMultiPart2', name: 'MCMultiPart', version: '2.5.4', classifier: 'deobf'
compileOnly group: 'com.mod-buildcraft', name: 'buildcraft-all', version: '7.99.24.6', transitive: false
compileOnly group: 'net.industrial-craft', name: 'industrialcraft-2', version: '2.8.170-ex112', classifier: 'api'
compileOnly group: 'codechicken', name: 'NotEnoughItems', version: '1.12.2-2.4.3.245', classifier: 'deobf', transitive: false
compileOnly group: 'codechicken', name: 'EnderStorage', version: '1.12.2-2.4.6.137', classifier: 'deobf', transitive: false
compileOnly group: 'li.cil.oc', name: 'OpenComputers', version: 'MC1.12.2-1.7.5.205', classifier: 'api'
compileOnly files('lib/appliedenergistics2-rv6-stable-7-api.jar')
compileOnly group: 'cofh', name: 'CoFHCore', version: '1.12.2-4.6.3.27', classifier: 'deobf', transitive: false
compileOnly group: 'cofh', name: 'RedstoneFlux', version: '1.12-2.1.0.7', classifier: 'deobf', transitive: false
compileOnly group: 'cofh', name: 'CoFHWorld', version: '1.12.2-1.2.0.5', classifier: 'deobf', transitive: false
compileOnly group: 'cofh', name: 'ThermalDynamics', version: '1.12.2-2.5.5.21', classifier: 'deobf', transitive: false
compileOnly group: 'cofh', name: 'ThermalFoundation', version: '1.12.2-2.6.3.27', classifier: 'deobf', transitive: false
compileOnly group: 'cofh', name: 'ThermalExpansion', version: '1.12.2-5.5.4.43', classifier: 'deobf', transitive: false
compileOnly group: 'org.squiddev', name: 'cc-tweaked-1.12.2', version: '1.89.2', transitive: false
compileOnly group: 'com.jaquadro.minecraft.storagedrawers', name: 'StorageDrawers', version: '1.12.2-5.4.2', transitive: false
compileOnly group: 'pl.asie.charset', name: 'Charset', version: '0.5.6.6', classifier: 'api', transitive: false
ktlint("com.pinterest:ktlint:0.47.1") {
attributes {
attribute(Bundling.BUNDLING_ATTRIBUTE, getObjects().named(Bundling, Bundling.EXTERNAL))
}
}
testImplementation 'org.jetbrains.kotlin:kotlin-test'
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit5'
testImplementation 'org.junit.jupiter:junit-jupiter:5.4.2'
}
import net.minecraftforge.gradle.userdev.MinecraftUserRepo
import java.nio.file.Files
final nonMinecraftConfigurations = configurations.findAll { conf -> conf != configurations.minecraft }
if (!nonMinecraftConfigurations.empty) {
final fgextension = project.getExtensions().findByName("minecraft")
final mcrepo = new MinecraftUserRepo(
/* project = */ project,
/* group = */ 'net.minecraftforge',
/* name = */ 'forge',
/* version = */ "$forge_version",
/* ats = */ fgextension.getAccessTransformers().getFrom().toList(),
/* mapping = */ fgextension.getMappings().get(),
)
nonMinecraftConfigurations.each {
it.resolutionStrategy.dependencySubstitution {
substitute module('net.minecraftforge:forge') using module(mcrepo.getDependencyString())
}
}
}
task ktlint(type: JavaExec, group: "verification") {
description = "Check Kotlin code style."
classpath = configurations.ktlint
mainClass.set("com.pinterest.ktlint.Main")
args "**/*.kt"
}
//check.dependsOn ktlint // not enforced, ktlint is in trial mode
clean {
// this folder is created by dependency resolution and will be created before 'clean' runs,
// resulting in missing minecraft sources etc. Set here: https://fckaf.de/voZ
setDelete(project.fileTree("$buildDir") {
exclude 'fg_cache'
})
}
tasks.withType(Test) {
useJUnitPlatform()
testLogging {
events("passed", "skipped", "failed")
}
}
task deobfJar(type: Jar) {
from sourceSets.main.output
from sourceSets.api.output
archiveClassifier.set('deobf')
duplicatesStrategy = DuplicatesStrategy.WARN
manifest = project.manifest {
from sharedManifest
}
}
task apiJar(type: Jar, dependsOn: apiClasses) {
from sourceSets.api.output
from sourceSets.api.allSource
archiveClassifier.set('api')
duplicatesStrategy = DuplicatesStrategy.WARN
}
curseforge {
apiKey = project.hasProperty('LogisticsPipes.curseForgeApiKey') ? project.findProperty("LogisticsPipes.curseForgeApiKey") : '0'
project {
id = "232838"
changelog = project.hasProperty('changelog') ? project.findProperty('changelog') : ''
releaseType = 'beta'
relations {
requiredDependency 'codechicken-lib-1-8'
}
mainArtifact(shadowJar) {
displayName = "Logistics Pipes $project.version"
}
}
}
artifacts {
archives apiJar
archives shadowJar
archives deobfJar
archives sourceJar
}
task enableSigningTasks {
doFirst {
tasks.withType(Sign) {
enabled = true
}
}
}
signing {
useGpgCmd()
sign apiJar
sign shadowJar
sign deobfJar
sign sourceJar
}
task sign {
dependsOn enableSigningTasks
dependsOn(tasks.withType(Sign))
}
tasks.withType(Sign) {
// disable signing by default
enabled = false
mustRunAfter enableSigningTasks
// sign all jars, except the source jar – it doesn't have classes
ext.useJarsigner = (name.toLowerCase().endsWith("jar") && name != "signSourceJar")
}
gradle.taskGraph.whenReady { TaskExecutionGraph taskGraph ->
taskGraph.allTasks.each { Task task ->
if (task instanceof Sign && task.useJarsigner) {
task.doFirst {
task.filesToSign.each { File file ->
// see https://ant.apache.org/manual/Tasks/signjar.html for arguments
// ForgeGradle also uses ant.signjar: https://fckaf.de/DCw
println "$task – signing $file with ant.signjar"
task.ant.signjar(
jar: file,
alias: "1",
storetype: findProperty("LogisticsPipes.storetype"),
keystore: findProperty("LogisticsPipes.keystore"),
storepass: findProperty("LogisticsPipes.storepass"),
verbose: "true",
preservelastmodified: "true"
)
}
}
} else if (task.name.startsWith('prepareRunServerTest')) {
task.doFirst {
final def serverTestHome = projectDir.toPath().resolve('run-server-test')
if (findProperty("acceptMinecraftServerEula") == 'true') {
def eulaFile = serverTestHome.resolve('eula.txt')
Files.deleteIfExists(eulaFile)
eulaFile.write('eula=true')
}
final serverProperties = serverTestHome.resolve('server.properties')
def properties = new Properties()
try {
serverProperties.withReader {reader ->
properties.load(reader)
}
} catch (IOException e) {
println "Error reading $serverProperties"
e.printStackTrace()
}
properties.setProperty('spawn-monsters', 'false')
properties.setProperty('spawn-npcs', 'false')
properties.setProperty('spawn-animals', 'false')
properties.setProperty('generate-structures', 'false')
properties.setProperty('online-mode', 'false')
properties.setProperty('gamemode', '1')
properties.setProperty('level-type', 'FLAT')
properties.setProperty('generator-settings', '3;minecraft:bedrock,3*minecraft:stone,96*minecraft:sandstone;2;')
properties.setProperty('motd', 'Logistics Pipes Test Server')
//properties.setProperty('max-tick-time', '0') // for debugging the server
try {
serverProperties.withWriter {writer ->
properties.store(writer, null)
}
} catch (IOException e) {
println "Error reading $serverProperties"
e.printStackTrace()
}
}
}
}
}
abstract class DownloadTask extends DefaultTask {
@Input
String url
@OutputFile
final RegularFileProperty outputFile = project.objects.fileProperty()
@TaskAction
void download() {
ant.get(src: url, dest: outputFile.get().asFile)
}
}
task downloadLanguage(type: DownloadTask) {
url = "https://github.com/RS485/LogisticsPipes-Language/archive/master.zip"
outputFile.set(layout.buildDirectory.file("language.zip"))
}
task languageMain(dependsOn: downloadLanguage, type: Copy) {
from zipTree(downloadLanguage.outputFile)
into "${sourceSets.main.getOutput().resourcesDir}/assets/logisticspipes/lang/"
include "*/*.lang"
includeEmptyDirs false
eachFile { FileCopyDetails fcd ->
fcd.relativePath = new RelativePath(!fcd.isDirectory(), fcd.relativePath.segments.drop(1))
}
}
task languageBook(dependsOn: downloadLanguage, type: Copy) {
from zipTree(downloadLanguage.outputFile)
into "${sourceSets.main.getOutput().resourcesDir}/assets/logisticspipes/book/"
include "*/book/"
includeEmptyDirs false
eachFile { FileCopyDetails fcd ->
fcd.relativePath = new RelativePath(!fcd.isDirectory(), fcd.relativePath.segments.drop(2))
}
}
task language(dependsOn: [languageMain, languageBook], type: Copy) {
processResources.dependsOn language
}
tasks.named('wrapper') {
gradleVersion = '7.5'
distributionType = Wrapper.DistributionType.ALL
}
tasks.withType(AbstractArchiveTask) {
preserveFileTimestamps = false
reproducibleFileOrder = true
}
task integrationTests(dependsOn: ['prepareRunServerTest'], type: Exec) {
workingDir projectDir
commandLine "$projectDir/gradlew"
args '--no-daemon', '--stacktrace', 'runServerTest'
ignoreExitValue = true
standardOutput = new ByteArrayOutputStream()
errorOutput = standardOutput // redirect stderr to stdout
doFirst {
if (System.properties['os.name'].toLowerCase().contains('windows')) {
commandLine = ["cmd", "/c", "$projectDir/gradlew.bat"] + args
}
}
doLast {
final output = standardOutput.toString()
final start = output.indexOf('[STARTING LOGISTICSPIPES TESTS]')
if (start == -1) throw new GradleException("Cannot find LP test start:\n${output}")
final logStart = output.substring(0, start).lastIndexOf('\n') + 1
def testOutput = output.substring(logStart)
final end = testOutput.indexOf('Attempting to read last messages from the daemon log')
if (end != -1) {
// remove double output from daemon log
testOutput = testOutput.substring(0, end)
}
if (testOutput.contains('[FAILED]')) {
throw new GradleException("Error in LP Tests:\n${testOutput}")
} else {
testOutput.eachLine {
if (it.contains('[STARTING LOGISTICSPIPES TESTS]') ||
it.contains('[PASSED]') ||
it.contains('[SKIPPED]')) {
println(it)
}
}
}
}
}
publishing {
publications {
mavenJava(MavenPublication) {
artifact jar
}
}
repositories {
maven {
url "file://${project.projectDir}/mcmodsrepo"
}
}
}
tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation
}
================================================
FILE: common/logisticspipes/LPBlocks.java
================================================
package logisticspipes;
import net.minecraftforge.fml.common.registry.GameRegistry;
import logisticspipes.blocks.BlockDummy;
import logisticspipes.blocks.LogisticsSolidBlock;
import logisticspipes.pipes.basic.LogisticsBlockGenericPipe;
import logisticspipes.pipes.basic.LogisticsBlockGenericSubMultiBlock;
public class LPBlocks {
// Logistics Blocks
@GameRegistry.ObjectHolder("logisticspipes:solid_block")
public static BlockDummy dummy;
@GameRegistry.ObjectHolder("logisticspipes:frame")
public static LogisticsSolidBlock frame;
@GameRegistry.ObjectHolder("logisticspipes:power_junction")
public static LogisticsSolidBlock powerJunction;
@GameRegistry.ObjectHolder("logisticspipes:security_station")
public static LogisticsSolidBlock securityStation;
@GameRegistry.ObjectHolder("logisticspipes:crafting_table")
public static LogisticsSolidBlock crafter;
@GameRegistry.ObjectHolder("logisticspipes:crafting_table_fuzzy")
public static LogisticsSolidBlock crafterFuzzy;
@GameRegistry.ObjectHolder("logisticspipes:statistics_table")
public static LogisticsSolidBlock statisticsTable;
@GameRegistry.ObjectHolder("logisticspipes:power_provider_rf")
public static LogisticsSolidBlock powerProviderRF;
@GameRegistry.ObjectHolder("logisticspipes:power_provider_eu")
public static LogisticsSolidBlock powerProviderEU;
@GameRegistry.ObjectHolder("logisticspipes:power_provider_mj")
public static LogisticsSolidBlock powerProviderMJ;
@GameRegistry.ObjectHolder("logisticspipes:program_compiler")
public static LogisticsSolidBlock programCompiler;
@GameRegistry.ObjectHolder("logisticspipes:pipe")
public static LogisticsBlockGenericPipe pipe;
@GameRegistry.ObjectHolder("logisticspipes:sub_multiblock")
public static LogisticsBlockGenericSubMultiBlock subMultiblock;
}
================================================
FILE: common/logisticspipes/LPConstants.java
================================================
package logisticspipes;
public class LPConstants {
private LPConstants() {}
public static final String LP_MOD_ID = "logisticspipes";
public static final float FACADE_THICKNESS = 2F / 16F;
public static final float PIPE_NORMAL_SPEED = 0.01F;
public static final float PIPE_MIN_POS = 0.1875F;
public static final float PIPE_MAX_POS = 0.8125F;
public static final float BC_PIPE_MIN_POS = 0.25F;
public static final float BC_PIPE_MAX_POS = 0.75F;
public static final String computerCraftModID = "computercraft";
public static final String openComputersModID = "opencomputers";
public static final String ic2ModID = "ic2";
public static final String bcSiliconModID = "buildcraftsilicon";
public static final String bcTransportModID = "buildcrafttransport";
public static final String thermalExpansionModID = "thermalexpansion";
public static final String enderCoreModID = "endercore";
public static final String neiModID = "notenoughitems";
public static final String thermalDynamicsModID = "thermaldynamics";
public static final String cclrenderModID = "cclrender";
public static final String ironChestModID = "ironchest";
public static final String cofhCoreModID = "cofhcore";
public static final String mcmpModID = "mcmultipart";
public static final String appliedenergisticsModID = "appliedenergistics2";
public static final String storagedrawersModID = "storagedrawers";
public static final String theOneProbeModID = "theoneprobe";
}
================================================
FILE: common/logisticspipes/LPItems.java
================================================
package logisticspipes;
import net.minecraft.item.Item;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import logisticspipes.items.ItemBlankModule;
import logisticspipes.items.ItemDisk;
import logisticspipes.items.ItemHUDArmor;
import logisticspipes.items.ItemLogisticsChips;
import logisticspipes.items.ItemLogisticsProgrammer;
import logisticspipes.items.ItemPipeController;
import logisticspipes.items.LogisticsBrokenItem;
import logisticspipes.items.LogisticsFluidContainer;
import logisticspipes.items.LogisticsItemCard;
import logisticspipes.items.RemoteOrderer;
import network.rs485.logisticspipes.guidebook.ItemGuideBook;
public class LPItems {
// Logistics Pipes
@ObjectHolder("logisticspipes:pipe_transport_basic")
public static Item pipeUnrouted;
@ObjectHolder("logisticspipes:pipe_basic")
public static Item pipeBasic;
@ObjectHolder("logisticspipes:pipe_request")
public static Item pipeRequest;
@ObjectHolder("logisticspipes:pipe_request_mk2")
public static Item pipeRequestMk2;
@ObjectHolder("logisticspipes:pipe_provider")
public static Item pipeProvider;
@ObjectHolder("logisticspipes:pipe_crafting")
public static Item pipeCrafting;
@ObjectHolder("logisticspipes:pipe_satellite")
public static Item pipeSatellite;
@ObjectHolder("logisticspipes:pipe_supplier")
public static Item pipeSupplier;
@ObjectHolder("logisticspipes:pipe_chassis_mk1")
public static Item pipeChassisMk1;
@ObjectHolder("logisticspipes:pipe_chassis_mk2")
public static Item pipeChassisMk2;
@ObjectHolder("logisticspipes:pipe_chassis_mk3")
public static Item pipeChassisMk3;
@ObjectHolder("logisticspipes:pipe_chassis_mk4")
public static Item pipeChassisMk4;
@ObjectHolder("logisticspipes:pipe_chassis_mk5")
public static Item pipeChassisMk5;
@ObjectHolder("logisticspipes:pipe_inventory_system_connector")
public static Item pipeInvSystemConnector;
@ObjectHolder("logisticspipes:pipe_system_entrance")
public static Item pipeSystemEntrance;
@ObjectHolder("logisticspipes:pipe_system_destination")
public static Item pipeSystemDestination;
@ObjectHolder("logisticspipes:pipe_firewall")
public static Item pipeFirewall;
@ObjectHolder("logisticspipes:pipe_remote_orderer")
public static Item pipeRemoteOrderer;
@ObjectHolder("logisticspipes:pipe_request_table")
public static Item requestTable;
// Logistics Fluid Pipes
@ObjectHolder("logisticspipes:pipe_fluid_basic")
public static Item pipeFluidBasic;
@ObjectHolder("logisticspipes:pipe_fluid_request")
public static Item pipeFluidRequest;
@ObjectHolder("logisticspipes:pipe_fluid_provider")
public static Item pipeFluidProvider;
@ObjectHolder("logisticspipes:pipe_fluid_satellite")
public static Item pipeFluidSatellite;
@ObjectHolder("logisticspipes:pipe_fluid_supplier")
public static Item pipeFluidSupplier;
@ObjectHolder("logisticspipes:pipe_fluid_supplier_mk2")
public static Item pipeFluidSupplierMk2;
@ObjectHolder("logisticspipes:pipe_fluid_insertion")
public static Item pipeFluidInsertion;
@ObjectHolder("logisticspipes:pipe_fluid_extractor")
public static Item pipeFluidExtractor;
@ObjectHolder("logisticspipes:pipe_fluid_terminus")
public static Item pipeFluidTerminus;
// Logistics Modules/Upgrades
@ObjectHolder("logisticspipes:module_blank")
public static ItemBlankModule blankModule;
public static BiMap<String, ResourceLocation> modules = HashBiMap.create();
public static BiMap<String, ResourceLocation> upgrades = HashBiMap.create();
// Miscellaneous Items
@ObjectHolder("logisticspipes:guide_book")
public static ItemGuideBook itemGuideBook;
@ObjectHolder("logisticspipes:remote_orderer")
public static RemoteOrderer remoteOrderer;
@ObjectHolder("logisticspipes:disk")
public static ItemDisk disk;
@ObjectHolder("logisticspipes:item_card")
public static LogisticsItemCard itemCard;
@ObjectHolder("logisticspipes:hud_glasses")
public static ItemHUDArmor hudGlasses;
@ObjectHolder("logisticspipes:fluid_container")
public static LogisticsFluidContainer fluidContainer;
@ObjectHolder("logisticspipes:pipe_controller")
public static ItemPipeController pipeController;
@ObjectHolder("logisticspipes:logistics_programmer")
public static ItemLogisticsProgrammer logisticsProgrammer;
@ObjectHolder("logisticspipes:chip_basic")
public static ItemLogisticsChips chipBasic;
@ObjectHolder("logisticspipes:chip_basic_raw")
public static ItemLogisticsChips chipBasicRaw;
@ObjectHolder("logisticspipes:chip_advanced")
public static ItemLogisticsChips chipAdvanced;
@ObjectHolder("logisticspipes:chip_advanced_raw")
public static ItemLogisticsChips chipAdvancedRaw;
@ObjectHolder("logisticspipes:chip_fpga")
public static ItemLogisticsChips chipFPGA;
@ObjectHolder("logisticspipes:chip_fpga_raw")
public static ItemLogisticsChips chipFPGARaw;
@ObjectHolder("logisticspipes:broken_item")
public static LogisticsBrokenItem brokenItem;
}
================================================
FILE: common/logisticspipes/LogisticsEventListener.java
================================================
package logisticspipes;
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Queue;
import java.util.WeakHashMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.inventory.GuiChest;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityChest;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.ChunkPos;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.world.World;
import net.minecraftforge.client.event.GuiOpenEvent;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.event.world.ChunkWatchEvent.UnWatch;
import net.minecraftforge.event.world.ChunkWatchEvent.Watch;
import net.minecraftforge.event.world.WorldEvent;
import net.minecraftforge.fml.client.FMLClientHandler;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.PlayerEvent;
import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent;
import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerLoggedOutEvent;
import net.minecraftforge.fml.common.network.FMLNetworkEvent.ClientConnectedToServerEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import logisticspipes.config.Configs;
import logisticspipes.interfaces.IItemAdvancedExistance;
import logisticspipes.network.PacketHandler;
import logisticspipes.network.packets.PlayerConfigToClientPacket;
import logisticspipes.network.packets.chassis.ChestGuiClosed;
import logisticspipes.network.packets.chassis.ChestGuiOpened;
import logisticspipes.network.packets.gui.GuiReopenPacket;
import logisticspipes.pipes.PipeLogisticsChassis;
import logisticspipes.pipes.basic.CoreRoutedPipe;
import logisticspipes.pipes.basic.LogisticsTileGenericPipe;
import logisticspipes.proxy.MainProxy;
import logisticspipes.proxy.SimpleServiceLocator;
import logisticspipes.renderer.GuiOverlay;
import logisticspipes.renderer.LogisticsHUDRenderer;
import logisticspipes.routing.ItemRoutingInformation;
import logisticspipes.ticks.VersionChecker;
import logisticspipes.utils.PlayerCollectionList;
import logisticspipes.utils.PlayerIdentifier;
import logisticspipes.utils.QuickSortChestMarkerStorage;
import logisticspipes.utils.string.ChatColor;
import network.rs485.logisticspipes.config.ClientConfiguration;
import network.rs485.logisticspipes.config.PlayerConfiguration;
import network.rs485.logisticspipes.connection.NeighborTileEntity;
import network.rs485.logisticspipes.module.AsyncQuicksortModule;
import network.rs485.logisticspipes.util.TextUtil;
import network.rs485.logisticspipes.world.WorldCoordinatesWrapper;
public class LogisticsEventListener {
public static final WeakHashMap<EntityPlayer, List<WeakReference<AsyncQuicksortModule>>> chestQuickSortConnection = new WeakHashMap<>();
public static Map<ChunkPos, PlayerCollectionList> watcherList = new ConcurrentHashMap<>();
@SubscribeEvent
public void onEntitySpawn(EntityJoinWorldEvent event) {
if (event != null && event.getEntity() instanceof EntityItem && event.getEntity().world != null && !event.getEntity().world.isRemote) {
ItemStack stack = ((EntityItem) event.getEntity()).getItem(); //Get ItemStack
if (!stack.isEmpty() && stack.getItem() instanceof IItemAdvancedExistance && !((IItemAdvancedExistance) stack.getItem()).canExistInWorld(stack)) {
event.setCanceled(true);
}
if (stack.hasTagCompound()) {
for (String key : Objects.requireNonNull(stack.getTagCompound(), "nbt for stack must be non-null").getKeySet()) {
if (key.startsWith("logisticspipes:routingdata")) {
ItemRoutingInformation info = ItemRoutingInformation.restoreFromNBT(stack.getTagCompound().getCompoundTag(key));
info.setItemTimedout();
((EntityItem) event.getEntity()).setItem(info.getItem().getItem().makeNormalStack(stack.getCount()));
break;
}
}
}
}
}
@SubscribeEvent
public void onPlayerLeftClickBlock(final PlayerInteractEvent.LeftClickBlock event) {
if (MainProxy.isServer(event.getEntityPlayer().world)) {
final TileEntity tile = event.getEntityPlayer().world.getTileEntity(event.getPos());
if (tile instanceof LogisticsTileGenericPipe) {
if (((LogisticsTileGenericPipe) tile).pipe instanceof CoreRoutedPipe) {
if (!((CoreRoutedPipe) ((LogisticsTileGenericPipe) tile).pipe).canBeDestroyedByPlayer(event.getEntityPlayer())) {
event.setCanceled(true);
event.getEntityPlayer().sendMessage(new TextComponentTranslation("lp.chat.permissiondenied"));
((LogisticsTileGenericPipe) tile).scheduleNeighborChange();
World world = event.getEntityPlayer().world;
BlockPos pos = tile.getPos();
IBlockState state = world.getBlockState(pos);
world.markAndNotifyBlock(tile.getPos(), world.getChunk(pos), state, state, 2);
((CoreRoutedPipe) ((LogisticsTileGenericPipe) tile).pipe).delayTo = System.currentTimeMillis() + 200;
((CoreRoutedPipe) ((LogisticsTileGenericPipe) tile).pipe).repeatFor = 10;
} else {
((CoreRoutedPipe) ((LogisticsTileGenericPipe) tile).pipe).setDestroyByPlayer();
}
}
}
}
}
@SubscribeEvent
public void onPlayerLeftClickBlock(final PlayerInteractEvent.RightClickBlock event) {
if (MainProxy.isServer(event.getEntityPlayer().world)) {
WorldCoordinatesWrapper worldCoordinates = new WorldCoordinatesWrapper(event.getEntityPlayer().world, event.getPos());
TileEntity tileEntity = worldCoordinates.getTileEntity();
if (tileEntity instanceof TileEntityChest || SimpleServiceLocator.ironChestProxy.isIronChest(tileEntity)) {
List<WeakReference<AsyncQuicksortModule>> list = worldCoordinates.allNeighborTileEntities().stream()
.filter(NeighborTileEntity::isLogisticsPipe)
.filter(adjacent -> ((LogisticsTileGenericPipe) adjacent.getTileEntity()).pipe instanceof PipeLogisticsChassis)
.filter(adjacent -> ((PipeLogisticsChassis) ((LogisticsTileGenericPipe) adjacent.getTileEntity()).pipe).getPointedOrientation()
== adjacent.getOurDirection())
.map(adjacent -> (PipeLogisticsChassis) ((LogisticsTileGenericPipe) adjacent.getTileEntity()).pipe)
.flatMap(chassis -> chassis.getModules().getModules())
.filter(logisticsModule -> logisticsModule instanceof AsyncQuicksortModule)
.map(logisticsModule -> new WeakReference<>((AsyncQuicksortModule) logisticsModule))
.collect(Collectors.toList());
if (!list.isEmpty()) {
LogisticsEventListener.chestQuickSortConnection.put(event.getEntityPlayer(), list);
}
}
}
}
public static HashMap<Integer, Long> WorldLoadTime = new HashMap<>();
@SubscribeEvent
public void WorldLoad(WorldEvent.Load event) {
if (MainProxy.isServer(event.getWorld())) {
int dim = event.getWorld().provider.getDimension();
if (!LogisticsEventListener.WorldLoadTime.containsKey(dim)) {
LogisticsEventListener.WorldLoadTime.put(dim, System.currentTimeMillis());
}
}
if (MainProxy.isClient(event.getWorld())) {
SimpleServiceLocator.routerManager.clearClientRouters();
LogisticsHUDRenderer.instance().clear();
}
}
@SubscribeEvent
public void WorldUnload(WorldEvent.Unload event) {
if (MainProxy.isServer(event.getWorld())) {
int dim = event.getWorld().provider.getDimension();
SimpleServiceLocator.routerManager.dimensionUnloaded(dim);
}
}
@SubscribeEvent
public void watchChunk(Watch event) {
ChunkPos pos = event.getChunkInstance().getPos();
if (!LogisticsEventListener.watcherList.containsKey(pos)) {
LogisticsEventListener.watcherList.put(pos, new PlayerCollectionList());
}
LogisticsEventListener.watcherList.get(pos).add(event.getPlayer());
}
@SubscribeEvent
public void unWatchChunk(UnWatch event) {
ChunkPos pos = event.getChunkInstance().getPos();
if (LogisticsEventListener.watcherList.containsKey(pos)) {
LogisticsEventListener.watcherList.get(pos).remove(event.getPlayer());
}
}
@SubscribeEvent
public void onPlayerLogin(PlayerLoggedInEvent event) {
if (MainProxy.isServer(event.player.world)) {
SimpleServiceLocator.securityStationManager.sendClientAuthorizationList(event.player);
}
SimpleServiceLocator.serverBufferHandler.clear(event.player);
ClientConfiguration config = LogisticsPipes.getServerConfigManager().getPlayerConfiguration(PlayerIdentifier.get(event.player));
MainProxy.sendPacketToPlayer(PacketHandler.getPacket(PlayerConfigToClientPacket.class).setConfig(config), event.player);
}
@SubscribeEvent
public void onPlayerLogout(PlayerLoggedOutEvent event) {
SimpleServiceLocator.serverBufferHandler.clear(event.player);
}
@AllArgsConstructor
private static class GuiEntry {
@Getter
private final int xCoord;
@Getter
private final int yCoord;
@Getter
private final int zCoord;
@Getter
private final int guiID;
@Getter
@Setter
private boolean isActive;
}
@Getter(lazy = true)
private static final Queue<GuiEntry> guiPos = new LinkedList<>();
//Handle GuiRepoen
@SubscribeEvent
@SideOnly(Side.CLIENT)
public void onGuiOpen(GuiOpenEvent event) {
if (!LogisticsEventListener.getGuiPos().isEmpty()) {
if (event.getGui() == null) {
GuiEntry part = LogisticsEventListener.getGuiPos().peek();
if (part.isActive()) {
part = LogisticsEventListener.getGuiPos().poll();
MainProxy.sendPacketToServer(PacketHandler.getPacket(GuiReopenPacket.class).setGuiID(part.getGuiID()).setPosX(part.getXCoord()).setPosY(part.getYCoord()).setPosZ(part.getZCoord()));
GuiOverlay.getInstance().setOverlaySlotActive(false);
}
} else {
GuiEntry part = LogisticsEventListener.getGuiPos().peek();
part.setActive(true);
}
}
if (event.getGui() == null) {
GuiOverlay.getInstance().setOverlaySlotActive(false);
}
if (event.getGui() instanceof GuiChest || (SimpleServiceLocator.ironChestProxy != null && SimpleServiceLocator.ironChestProxy.isChestGui(event.getGui()))) {
MainProxy.sendPacketToServer(PacketHandler.getPacket(ChestGuiOpened.class));
} else {
QuickSortChestMarkerStorage.getInstance().disable();
MainProxy.sendPacketToServer(PacketHandler.getPacket(ChestGuiClosed.class));
}
}
@SideOnly(Side.CLIENT)
public static void addGuiToReopen(int xCoord, int yCoord, int zCoord, int guiID) {
LogisticsEventListener.getGuiPos().add(new GuiEntry(xCoord, yCoord, zCoord, guiID, false));
}
@SubscribeEvent
public void clientLoggedIn(ClientConnectedToServerEvent event) {
SimpleServiceLocator.clientBufferHandler.clear();
if (Configs.CHECK_FOR_UPDATES) {
LogisticsPipes.singleThreadExecutor.execute(() -> {
// try to get player entity ten times, once a second
int times = 0;
EntityPlayerSP playerEntity;
do {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
return;
}
playerEntity = FMLClientHandler.instance().getClientPlayerEntity();
++times;
} while (playerEntity == null && times <= 10);
if (times > 10) {
return;
}
VersionChecker checker = LogisticsPipes.versionChecker;
// send player message
String versionMessage = checker.getVersionCheckerStatus();
if (checker.isVersionCheckDone() && checker.getVersionInfo().isNewVersionAvailable() && !checker.getVersionInfo().isImcMessageSent()) {
playerEntity.sendMessage(new TextComponentString(versionMessage));
playerEntity.sendMessage(new TextComponentString("Use \"/logisticspipes changelog\" to see a changelog."));
} else if (!checker.isVersionCheckDone()) {
playerEntity.sendMessage(new TextComponentString(versionMessage));
}
});
}
}
@SubscribeEvent
@SideOnly(Side.CLIENT)
public void onItemStackToolTip(ItemTooltipEvent event) {
if (event.getItemStack().hasTagCompound()) {
for (String key : event.getItemStack().getTagCompound().getKeySet()) {
if (key.startsWith("logisticspipes:routingdata")) {
ItemRoutingInformation info = ItemRoutingInformation.restoreFromNBT(event.getItemStack().getTagCompound().getCompoundTag(key));
List<String> list = event.getToolTip();
list.set(0, ChatColor.RED + "!!! " + ChatColor.WHITE + list.get(0) + ChatColor.RED + " !!!" + ChatColor.WHITE);
list.add(1, TextUtil.translate("itemstackinfo.lprouteditem"));
list.add(2, TextUtil.translate("itemstackinfo.lproutediteminfo"));
list.add(3, TextUtil.translate("itemstackinfo.lprouteditemtype") + ": " + info.getItem().toString());
}
}
}
}
@SubscribeEvent
public void onItemCrafting(PlayerEvent.ItemCraftedEvent event) {
if (event.player.isServerWorld() && !event.crafting.isEmpty()) {
if (event.crafting.getItem().getRegistryName().getNamespace().equals(LPConstants.LP_MOD_ID)) {
PlayerIdentifier identifier = PlayerIdentifier.get(event.player);
PlayerConfiguration config = LogisticsPipes.getServerConfigManager().getPlayerConfiguration(identifier);
if (!config.getHasCraftedLPItem() && !LogisticsPipes.isDEBUG()) {
ItemStack book = new ItemStack(LPItems.itemGuideBook, 1);
event.player.addItemStackToInventory(book);
config.setHasCraftedLPItem(true);
LogisticsPipes.getServerConfigManager().setPlayerConfiguration(identifier, config);
}
}
}
}
}
================================================
FILE: common/logisticspipes/LogisticsPipes.java
================================================
/*
* Copyright (c) Krapht, 2011
* "LogisticsPipes" is distributed under the terms of the Minecraft Mod Public
* License 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
*/
package logisticspipes;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
import java.util.Queue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.jar.JarFile;
import java.util.jar.Manifest;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.Nonnull;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.item.crafting.ShapelessRecipes;
import net.minecraft.launchwrapper.IClassTransformer;
import net.minecraft.launchwrapper.Launch;
import net.minecraft.launchwrapper.LaunchClassLoader;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.client.event.TextureStitchEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityInject;
import net.minecraftforge.common.crafting.CraftingHelper;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.event.FMLFingerprintViolationEvent;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLInterModComms;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLServerAboutToStartEvent;
import net.minecraftforge.fml.common.event.FMLServerStartedEvent;
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.network.NetworkRegistry;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.registries.GameData;
import net.minecraftforge.registries.IForgeRegistry;
import lombok.Getter;
import lombok.SneakyThrows;
import org.apache.logging.log4j.Logger;
import logisticspipes.asm.LogisticsPipesClassInjector;
import logisticspipes.asm.LogisticsPipesCoreLoader;
import logisticspipes.asm.wrapper.LogisticsWrapperHandler;
import logisticspipes.blocks.BlockDummy;
import logisticspipes.blocks.LogisticsProgramCompilerTileEntity;
import logisticspipes.blocks.LogisticsSecurityTileEntity;
import logisticspipes.blocks.LogisticsSolidBlock;
import logisticspipes.blocks.crafting.LogisticsCraftingTableTileEntity;
import logisticspipes.blocks.powertile.LogisticsIC2PowerProviderTileEntity;
import logisticspipes.blocks.powertile.LogisticsPowerJunctionTileEntity;
import logisticspipes.blocks.powertile.LogisticsRFPowerProviderTileEntity;
import logisticspipes.blocks.stats.LogisticsStatisticsTileEntity;
import logisticspipes.commands.LogisticsPipesCommand;
import logisticspipes.commands.chathelper.LPChatListener;
import logisticspipes.config.Configs;
import logisticspipes.datafixer.LPDataFixer;
import logisticspipes.items.ItemBlankModule;
import logisticspipes.items.ItemDisk;
import logisticspipes.items.ItemHUDArmor;
import logisticspipes.items.ItemLogisticsChips;
import logisticspipes.items.ItemLogisticsPipe;
import logisticspipes.items.ItemLogisticsProgrammer;
import logisticspipes.items.ItemModule;
import logisticspipes.items.ItemParts;
import logisticspipes.items.ItemPipeController;
import logisticspipes.items.ItemPipeManager;
import logisticspipes.items.ItemPipeSignCreator;
import logisticspipes.items.ItemUpgrade;
import logisticspipes.items.LogisticsBrokenItem;
import logisticspipes.items.LogisticsFluidContainer;
import logisticspipes.items.LogisticsItemCard;
import logisticspipes.items.LogisticsSolidBlockItem;
import logisticspipes.items.RemoteOrderer;
import logisticspipes.logistics.LogisticsFluidManager;
import logisticspipes.logistics.LogisticsManager;
import logisticspipes.network.GuiHandler;
import logisticspipes.network.NewGuiHandler;
import logisticspipes.network.PacketHandler;
import logisticspipes.pipes.PipeBlockRequestTable;
import logisticspipes.pipes.PipeFluidBasic;
import logisticspipes.pipes.PipeFluidExtractor;
import logisticspipes.pipes.PipeFluidInsertion;
import logisticspipes.pipes.PipeFluidProvider;
import logisticspipes.pipes.PipeFluidRequestLogistics;
import logisticspipes.pipes.PipeFluidSatellite;
import logisticspipes.pipes.PipeFluidSupplierMk2;
import logisticspipes.pipes.PipeFluidTerminus;
import logisticspipes.pipes.PipeItemsBasicLogistics;
import logisticspipes.pipes.PipeItemsCraftingLogistics;
import logisticspipes.pipes.PipeItemsFirewall;
import logisticspipes.pipes.PipeItemsFluidSupplier;
import logisticspipes.pipes.PipeItemsInvSysConnector;
import logisticspipes.pipes.PipeItemsProviderLogistics;
import logisticspipes.pipes.PipeItemsRemoteOrdererLogistics;
import logisticspipes.pipes.PipeItemsRequestLogistics;
import logisticspipes.pipes.PipeItemsRequestLogisticsMk2;
import logisticspipes.pipes.PipeItemsSatelliteLogistics;
import logisticspipes.pipes.PipeItemsSupplierLogistics;
import logisticspipes.pipes.PipeItemsSystemDestinationLogistics;
import logisticspipes.pipes.PipeItemsSystemEntranceLogistics;
import logisticspipes.pipes.PipeLogisticsChassisMk1;
import logisticspipes.pipes.PipeLogisticsChassisMk2;
import logisticspipes.pipes.PipeLogisticsChassisMk3;
import logisticspipes.pipes.PipeLogisticsChassisMk4;
import logisticspipes.pipes.PipeLogisticsChassisMk5;
import logisticspipes.pipes.basic.CoreRoutedPipe;
import logisticspipes.pipes.basic.CoreUnroutedPipe;
import logisticspipes.pipes.basic.LogisticsBlockGenericPipe;
import logisticspipes.pipes.basic.LogisticsBlockGenericSubMultiBlock;
import logisticspipes.pipes.basic.LogisticsTileGenericPipe;
import logisticspipes.pipes.basic.LogisticsTileGenericSubMultiBlock;
import logisticspipes.pipes.basic.fluid.FluidRoutedPipe;
import logisticspipes.pipes.tubes.HSTubeCurve;
import logisticspipes.pipes.tubes.HSTubeGain;
import logisticspipes.pipes.tubes.HSTubeLine;
import logisticspipes.pipes.tubes.HSTubeSCurve;
import logisticspipes.pipes.tubes.HSTubeSpeedup;
import logisticspipes.pipes.unrouted.PipeItemsBasicTransport;
import logisticspipes.proxy.MainProxy;
import logisticspipes.proxy.ProxyManager;
import logisticspipes.proxy.SimpleServiceLocator;
import logisticspipes.proxy.SpecialInventoryHandlerManager;
import logisticspipes.proxy.SpecialTankHandlerManager;
import logisticspipes.proxy.computers.objects.LPGlobalCCAccess;
import logisticspipes.proxy.endercore.EnderCoreProgressProvider;
import logisticspipes.proxy.ic2.IC2ProgressProvider;
import logisticspipes.proxy.progressprovider.MachineProgressProvider;
import logisticspipes.proxy.recipeproviders.LogisticsCraftingTable;
import logisticspipes.proxy.specialconnection.SpecialPipeConnection;
import logisticspipes.proxy.specialconnection.SpecialTileConnection;
import logisticspipes.proxy.specialtankhandler.SpecialTankHandler;
import logisticspipes.proxy.te.ThermalExpansionProgressProvider;
import logisticspipes.recipes.CraftingRecipes;
import logisticspipes.recipes.LPChipRecipes;
import logisticspipes.recipes.ModuleChippedCraftingRecipes;
import logisticspipes.recipes.PipeChippedCraftingRecipes;
import logisticspipes.recipes.RecipeManager;
import logisticspipes.recipes.UpgradeChippedCraftingRecipes;
import logisticspipes.renderer.LogisticsHUDRenderer;
import logisticspipes.renderer.newpipe.LogisticsNewRenderPipe;
import logisticspipes.renderer.newpipe.LogisticsNewSolidBlockWorldRenderer;
import logisticspipes.renderer.newpipe.tube.CurveTubeRenderer;
import logisticspipes.renderer.newpipe.tube.GainTubeRenderer;
import logisticspipes.renderer.newpipe.tube.LineTubeRenderer;
import logisticspipes.renderer.newpipe.tube.SCurveTubeRenderer;
import logisticspipes.renderer.newpipe.tube.SpeedupTubeRenderer;
import logisticspipes.routing.RouterManager;
import logisticspipes.routing.ServerRouter;
import logisticspipes.routing.channels.ChannelManagerProvider;
import logisticspipes.routing.pathfinder.PipeInformationManager;
import logisticspipes.textures.Textures;
import logisticspipes.ticks.ClientPacketBufferHandlerThread;
import logisticspipes.ticks.HudUpdateTick;
import logisticspipes.ticks.LPTickHandler;
import logisticspipes.ticks.QueuedTasks;
import logisticspipes.ticks.RenderTickHandler;
import logisticspipes.ticks.RoutingTableUpdateThread;
import logisticspipes.ticks.ServerPacketBufferHandlerThread;
import logisticspipes.ticks.VersionChecker;
import logisticspipes.utils.FluidIdentifier;
import logisticspipes.utils.InventoryUtilFactory;
import logisticspipes.utils.RoutedItemHelper;
import logisticspipes.utils.StaticResolverUtil;
import logisticspipes.utils.tuples.Pair;
import network.rs485.grow.ServerTickDispatcher;
import network.rs485.logisticspipes.compat.TheOneProbeIntegration;
import network.rs485.logisticspipes.config.ClientConfiguration;
import network.rs485.logisticspipes.config.ServerConfigurationManager;
import network.rs485.logisticspipes.gui.font.LPFontRenderer;
import network.rs485.logisticspipes.guidebook.ItemGuideBook;
import network.rs485.logisticspipes.property.PropertyUpdaterEventListener;
import network.rs485.util.SystemUtilKt;
//@formatter:off
//CHECKSTYLE:OFF
@Mod(
name = "Logistics Pipes",
modid = LPConstants.LP_MOD_ID,
certificateFingerprint = "e0c86912b2f7cc0cc646ad57799574aea43dbd45",
useMetadata = true)
public class LogisticsPipes {
//@formatter:on
//CHECKSTYLE:ON
public static final String UNKNOWN = "unknown";
private static boolean DEBUG = true;
private Consumer<FMLServerStartedEvent> minecraftTestStartMethod = null;
public static boolean isDEBUG() {
return DEBUG;
}
@Getter
private static String VERSION = UNKNOWN;
@Getter
private static String VENDOR = UNKNOWN;
@Getter
private static String TARGET = UNKNOWN;
public LogisticsPipes() { //TODO: remove throws
final LaunchClassLoader loader = Launch.classLoader;
loadManifestValues(loader);
if (!LogisticsPipesCoreLoader.isCoremodLoaded()) {
if (LogisticsPipes.DEBUG) {
throw new RuntimeException("LogisticsPipes FMLLoadingPlugin wasn't loaded. If you are running MC from an IDE make sure to add '-Dfml.coreMods.load=logisticspipes.asm.LogisticsPipesCoreLoader' to the VM arguments. If you are running MC normal please report this as a bug at 'https://github.com/RS485/LogisticsPipes/issues'.");
} else {
throw new RuntimeException("LogisticsPipes FMLLoadingPlugin wasn't loaded. Your download seems to be corrupt/modified. Please redownload LP from our Jenkins [http://ci.rs485.network] and move it into your mods folder.");
}
}
try {
Field fTransformers = LaunchClassLoader.class.getDeclaredField("transformers");
fTransformers.setAccessible(true);
@SuppressWarnings("unchecked")
List<IClassTransformer> transformers = (List<IClassTransformer>) fTransformers.get(loader);
IClassTransformer lpClassInjector = new LogisticsPipesClassInjector();
transformers.add(lpClassInjector);
// Avoid NPE caused by wrong ClassTransformers
for (int i = transformers.size() - 1; i > 0; i--) { // Move everything one up
transformers.set(i, transformers.get(i - 1));
}
transformers.set(0, lpClassInjector); // So that our injector can be first
} catch (NoSuchFieldException | SecurityException | IllegalAccessException | IllegalArgumentException e) {
loader.registerTransformer("logisticspipes.asm.LogisticsPipesClassInjector");
e.printStackTrace();
}
MinecraftForge.EVENT_BUS.register(this);
}
private static void loadManifestValues(ClassLoader loader) {
try {
final Enumeration<URL> resources = loader.getResources(JarFile.MANIFEST_NAME);
boolean foundLp;
do {
final Manifest manifest = new Manifest(resources.nextElement().openStream());
foundLp = "LogisticsPipes".equals(manifest.getMainAttributes().getValue("Specification-Title"));
if (foundLp) {
LogisticsPipes.DEBUG = false;
LogisticsPipes.VERSION = manifest.getMainAttributes().getValue("Implementation-Version");
LogisticsPipes.VENDOR = manifest.getMainAttributes().getValue("Implementation-Vendor");
LogisticsPipes.TARGET = manifest.getMainAttributes().getValue("Implementation-Target");
}
} while (resources.hasMoreElements() && !foundLp);
} catch (IOException e) {
LogisticsPipes.log.error("There was a problem loading our MANIFEST file, Logistics Pipes will not know about its origin");
}
}
@Mod.Instance("logisticspipes")
public static LogisticsPipes instance;
private static boolean certificateError = false;
public static String getVersionString() {
return Stream.of(
"Logistics Pipes " + LogisticsPipes.VERSION,
LogisticsPipes.certificateError ? "certificate error" : "",
LogisticsPipes.DEBUG ? "debug mode" : "",
"target " + LogisticsPipes.TARGET,
"vendor " + LogisticsPipes.VENDOR)
.filter(str -> !str.isEmpty())
.collect(Collectors.joining(", "));
}
// other statics
public static Textures textures = new Textures();
public static Logger log;
public static ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
public static VersionChecker versionChecker;
// initializes the creative tab
public static final CreativeTabs CREATIVE_TAB_LP = new CreativeTabs("Logistics_Pipes") {
@SideOnly(Side.CLIENT)
@Nonnull
public ItemStack createIcon() {
return new ItemStack(LPItems.pipeBasic);
}
};
private Queue<Runnable> postInitRun = new LinkedList<>();
private static LPGlobalCCAccess generalAccess;
private static ClientConfiguration playerConfig;
private static ServerConfigurationManager serverConfigManager;
private List<Supplier<Pair<Item, Item>>> resetRecipeList = new ArrayList<>();
@CapabilityInject(IItemHandler.class)
public static Capability<IItemHandler> ITEM_HANDLER_CAPABILITY = null;
@CapabilityInject(IFluidHandler.class)
public static Capability<IFluidHandler> FLUID_HANDLER_CAPABILITY = null;
public static boolean isDevelopmentEnvironment() {
if (!isDEBUG()) {
return false;
} else {
boolean eclipseCheck = (new File(".classpath")).exists();
boolean ideaCheck = System.getProperty("java.class.path").contains("idea_rt.jar");
return eclipseCheck || ideaCheck;
}
}
@Mod.EventHandler
public void init(FMLInitializationEvent event) {
registerRecipes(); // TODO data fileS!!!!!
//Register Network channels
MainProxy.createChannels();
RouterManager manager = new RouterManager();
SimpleServiceLocator.setRouterManager(manager);
SimpleServiceLocator.setChannelConnectionManager(manager);
SimpleServiceLocator.setSecurityStationManager(manager);
SimpleServiceLocator.setLogisticsManager(new LogisticsManager());
SimpleServiceLocator.setInventoryUtilFactory(new InventoryUtilFactory());
SimpleServiceLocator.setSpecialConnectionHandler(new SpecialPipeConnection());
SimpleServiceLocator.setSpecialConnectionHandler(new SpecialTileConnection());
SimpleServiceLocator.setSpecialTankHandler(new SpecialTankHandler());
SimpleServiceLocator.setMachineProgressProvider(new MachineProgressProvider());
SimpleServiceLocator.setRoutedItemHelper(new RoutedItemHelper());
SimpleServiceLocator.setChannelManagerProvider(new ChannelManagerProvider());
NetworkRegistry.INSTANCE.registerGuiHandler(LogisticsPipes.instance, new GuiHandler());
MinecraftForge.EVENT_BUS.register(new LPTickHandler());
if (event.getSide().equals(Side.CLIENT)) {
RenderTickHandler sub = new RenderTickHandler();
MinecraftForge.EVENT_BUS.register(sub);
}
MinecraftForge.EVENT_BUS.register(new QueuedTasks());
if (event.getSide() == Side.CLIENT) {
SimpleServiceLocator.setClientPacketBufferHandlerThread(new ClientPacketBufferHandlerThread());
}
SimpleServiceLocator.setServerPacketBufferHandlerThread(new ServerPacketBufferHandlerThread());
for (int i = 0; i < Configs.MULTI_THREAD_NUMBER; i++) {
new RoutingTableUpdateThread(i);
}
MinecraftForge.EVENT_BUS.register(new LogisticsEventListener());
MinecraftForge.EVENT_BUS.register(new LPChatListener());
MinecraftForge.EVENT_BUS.register(PropertyUpdaterEventListener.INSTANCE);
LPDataFixer.INSTANCE.init();
if (event.getSide() == Side.SERVER) {
LogisticsPipes.textures.registerBlockIcons(null);
} else if (event.getSide() == Side.CLIENT) {
LPFontRenderer.Factory.asyncPreload();
}
// load all the models so they don't get loaded and crash on concurrent class loading
// the OBJParser is a non-sharable static thing
LogisticsNewRenderPipe.loadModels();
LogisticsNewSolidBlockWorldRenderer.loadModels();
CurveTubeRenderer.loadModels();
GainTubeRenderer.loadModels();
LineTubeRenderer.loadModels();
SpeedupTubeRenderer.loadModels();
SCurveTubeRenderer.loadModels();
if (isTesting()) {
final Class<?> testClass;
try {
testClass = Class.forName("network.rs485.logisticspipes.integration.MinecraftTest");
} catch (ReflectiveOperationException e) {
throw new RuntimeException("Error loading minecraft test class", e);
}
final Object minecraftTestInstance;
try {
minecraftTestInstance = testClass.getDeclaredField("INSTANCE").get(null);
final Method serverStartMethod = testClass
.getDeclaredMethod("serverStart", FMLServerStartedEvent.class);
minecraftTestStartMethod = (FMLServerStartedEvent serverStartedEvent) -> {
try {
serverStartMethod.invoke(minecraftTestInstance, serverStartedEvent);
} catch (ReflectiveOperationException e) {
throw new RuntimeException("Could not run server started hook in " + minecraftTestInstance, e);
}
};
} catch (ReflectiveOperationException e) {
throw new RuntimeException("Error accessing minecraft test instance", e);
}
MinecraftForge.EVENT_BUS.register(minecraftTestInstance);
}
}
public static boolean isTesting() {
return SystemUtilKt.checkBooleanProperty("logisticspipes.test");
}
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent evt) {
StaticResolverUtil.useASMDataTable(evt.getAsmData());
PacketHandler.initialize();
NewGuiHandler.initialize();
LogisticsPipes.log = evt.getModLog();
log.info("====================================================");
log.info(" LogisticsPipes Logger initialized, enabled levels: ");
log.info("----------------------------------------------------");
log.info(" Fatal: " + log.isFatalEnabled());
log.info(" Error: " + log.isErrorEnabled());
log.info(" Warn: " + log.isWarnEnabled());
log.info(" Info: " + log.isInfoEnabled());
log.info(" Trace: " + log.isTraceEnabled());
log.info(" Debug: " + log.isDebugEnabled());
log.info("====================================================");
loadClasses();
ProxyManager.load();
Configs.load();
if (LogisticsPipes.certificateError) {
LogisticsPipes.log.fatal("Certificate not correct");
LogisticsPipes.log.fatal("This in not a LogisticsPipes version from RS485.");
}
if (LogisticsPipes.UNKNOWN.equals(LogisticsPipes.VERSION)) {
LogisticsPipes.log.warn("Could not determine Logistics Pipes version, we do need that " + JarFile.MANIFEST_NAME + ", don't you know?");
}
LogisticsPipes.log.info("Running " + getVersionString());
SimpleServiceLocator.setPipeInformationManager(new PipeInformationManager());
SimpleServiceLocator.setLogisticsFluidManager(new LogisticsFluidManager());
if (Loader.isModLoaded(LPConstants.theOneProbeModID)) {
FMLInterModComms.sendFunctionMessage(LPConstants.theOneProbeModID, "getTheOneProbe",
TheOneProbeIntegration.class.getName());
}
MainProxy.proxy.initModelLoader();
}
@Mod.EventHandler
public void postInit(FMLPostInitializationEvent event) {
postInitRun.forEach(Runnable::run);
postInitRun = null;
SpecialInventoryHandlerManager.load();
SpecialTankHandlerManager.load();
SimpleServiceLocator.buildCraftProxy.registerPipeInformationProvider();
SimpleServiceLocator.buildCraftProxy.initProxy();
SimpleServiceLocator.thermalDynamicsProxy.registerPipeInformationProvider();
//SimpleServiceLocator.specialpipeconnection.registerHandler(new TeleportPipes());
//SimpleServiceLocator.specialtileconnection.registerHandler(new TesseractConnection());
//SimpleServiceLocator.addCraftingRecipeProvider(LogisticsWrapperHandler.getWrappedRecipeProvider("BuildCraft|Factory", "AutoWorkbench", AutoWorkbench.class));
//SimpleServiceLocator.addCraftingRecipeProvider(LogisticsWrapperHandler.getWrappedRecipeProvider("BuildCraft|Silicon", "AssemblyAdvancedWorkbench", AssemblyAdvancedWorkbench.class));
if (SimpleServiceLocator.buildCraftProxy.getAssemblyTableProviderClass() != null) {
SimpleServiceLocator.addCraftingRecipeProvider(LogisticsWrapperHandler.getWrappedRecipeProvider(LPConstants.bcSiliconModID, "AssemblyTable", SimpleServiceLocator.buildCraftProxy.getAssemblyTableProviderClass()));
}
SimpleServiceLocator.addCraftingRecipeProvider(new LogisticsCraftingTable());
SimpleServiceLocator.machineProgressProvider.registerProgressProvider(LogisticsWrapperHandler.getWrappedProgressProvider(LPConstants.thermalExpansionModID, "Generic", ThermalExpansionProgressProvider.class));
SimpleServiceLocator.machineProgressProvider.registerProgressProvider(LogisticsWrapperHandler.getWrappedProgressProvider(LPConstants.ic2ModID, "Generic", IC2ProgressProvider.class));
//SimpleServiceLocator.machineProgressProvider.registerProgressProvider(LogisticsWrapperHandler.getWrappedProgressProvider("EnderIO", "Generic", EnderIOProgressProvider.class));
SimpleServiceLocator.machineProgressProvider.registerProgressProvider(LogisticsWrapperHandler.getWrappedProgressProvider(LPConstants.enderCoreModID, "Generic", EnderCoreProgressProvider.class));
GameRegistry.registerTileEntity(LogisticsPowerJunctionTileEntity.class, new ResourceLocation(LPConstants.LP_MOD_ID, "power_junction"));
GameRegistry.registerTileEntity(LogisticsRFPowerProviderTileEntity.class, new ResourceLocation(LPConstants.LP_MOD_ID, "power_provider_rf"));
GameRegistry.registerTileEntity(LogisticsIC2PowerProviderTileEntity.class, new ResourceLocation(LPConstants.LP_MOD_ID, "power_provider_ic2"));
GameRegistry.registerTileEntity(LogisticsSecurityTileEntity.class, new ResourceLocation(LPConstants.LP_MOD_ID, "security_station"));
GameRegistry.registerTileEntity(LogisticsCraftingTableTileEntity.class, new ResourceLocation(LPConstants.LP_MOD_ID, "logistics_crafting_table"));
GameRegistry.registerTileEntity(LogisticsTileGenericPipe.class, new ResourceLocation(LPConstants.LP_MOD_ID, "pipe"));
GameRegistry.registerTileEntity(LogisticsStatisticsTileEntity.class, new ResourceLocation(LPConstants.LP_MOD_ID, "statistics_table"));
GameRegistry.registerTileEntity(LogisticsProgramCompilerTileEntity.class, new ResourceLocation(LPConstants.LP_MOD_ID, "program_compiler"));
GameRegistry.registerTileEntity(LogisticsTileGenericSubMultiBlock.class, new ResourceLocation(LPConstants.LP_MOD_ID, "submultiblock"));
MainProxy.proxy.registerTileEntities();
SimpleServiceLocator.mcmpProxy.registerTileEntities();
//Registering special particles
MainProxy.proxy.registerParticles();
//init Fluids
FluidIdentifier.initFromForge(false);
versionChecker = VersionChecker.runVersionCheck();
}
@SubscribeEvent
@SideOnly(Side.CLIENT)
public void textureLoad(TextureStitchEvent.Pre event) {
if (!event.getMap().getBasePath().equals("textures")) {
return;
}
MainProxy.proxy.registerTextures();
}
@SubscribeEvent
public void initItems(RegistryEvent.Register<Item> event) {
IForgeRegistry<Item> registry = event.getRegistry();
ItemPipeSignCreator.registerPipeSignTypes();
ItemModule.loadModules(registry);
ItemUpgrade.loadUpgrades(registry);
registerPipes(registry);
registry.register(setName(new LogisticsItemCard(), "item_card"));
registry.register(setName(new RemoteOrderer(), "remote_orderer"));
registry.register(setName(new ItemPipeSignCreator(), "sign_creator"));
registry.register(setName(new ItemHUDArmor(), "hud_glasses"));
registry.register(setName(new ItemParts(), "parts"));
registry.register(setName(new ItemBlankModule(), "module_blank"));
registry.register(setName(new ItemDisk(), "disk"));
registry.register(setName(new LogisticsFluidContainer(), "fluid_container"));
registry.register(setName(new LogisticsBrokenItem(), "broken_item"));
registry.register(setName(new ItemGuideBook(), "guide_book"));
registry.register(setName(new ItemPipeController(), "pipe_controller"));
registry.register(setName(new ItemPipeManager(), "pipe_manager"));
registry.register(setName(new ItemLogisticsProgrammer(), "logistics_programmer"));
registry.register(setName(new ItemLogisticsChips(ItemLogisticsChips.ITEM_CHIP_BASIC), "chip_basic"));
registry.register(setName(new ItemLogisticsChips(ItemLogisticsChips.ITEM_CHIP_BASIC_RAW), "chip_basic_raw"));
registry.register(setName(new ItemLogisticsChips(ItemLogisticsChips.ITEM_CHIP_ADVANCED), "chip_advanced"));
registry.register(setName(new ItemLogisticsChips(ItemLogisticsChips.ITEM_CHIP_ADVANCED_RAW), "chip_advanced_raw"));
registry.register(setName(new ItemLogisticsChips(ItemLogisticsChips.ITEM_CHIP_FPGA), "chip_fpga"));
registry.register(setName(new ItemLogisticsChips(ItemLogisticsChips.ITEM_CHIP_FPGA_RAW), "chip_fpga_raw"));
registry.register(setName(new LogisticsSolidBlockItem(LPBlocks.frame), "frame"));
registry.register(setName(new LogisticsSolidBlockItem(LPBlocks.powerJunction), "power_junction"));
registry.register(setName(new LogisticsSolidBlockItem(LPBlocks.securityStation), "security_station"));
registry.register(setName(new LogisticsSolidBlockItem(LPBlocks.crafter), "crafting_table"));
registry.register(setName(new LogisticsSolidBlockItem(LPBlocks.crafterFuzzy), "crafting_table_fuzzy"));
registry.register(setName(new LogisticsSolidBlockItem(LPBlocks.statisticsTable), "statistics_table"));
registry.register(setName(new LogisticsSolidBlockItem(LPBlocks.powerProviderRF), "power_provider_rf"));
registry.register(setName(new LogisticsSolidBlockItem(LPBlocks.powerProviderEU), "power_provider_eu"));
registry.register(setName(new LogisticsSolidBlockItem(LPBlocks.powerProviderMJ), "power_provider_mj"));
registry.register(setName(new LogisticsSolidBlockItem(LPBlocks.programCompiler), "program_compiler"));
}
// TODO move somewhere
public static <T extends Item> T setName(T item, String name) {
return setName(item, name, LPConstants.LP_MOD_ID);
}
public static <T extends Item> T setName(T item, String name, String modID) {
item.setRegistryName(modID, name);
item.setTranslationKey(String.format("%s.%s", modID, name));
return item;
}
// TODO move somewhere
public static <T extends Block> T setName(T block, String name) {
block.setRegistryName(LPConstants.LP_MOD_ID, name);
block.setTranslationKey(String.format("%s.%s", LPConstants.LP_MOD_ID, name));
return block;
}
@SubscribeEvent
public void initBlocks(RegistryEvent.Register<Block> event) {
IForgeRegistry<Block> registry = event.getRegistry();
registry.register(setName(new LogisticsSolidBlock(LogisticsSolidBlock.Type.LOGISTICS_BLOCK_FRAME), "frame"));
registry.register(setName(new LogisticsSolidBlock(LogisticsSolidBlock.Type.LOGISTICS_POWER_JUNCTION), "power_junction"));
registry.register(setName(new LogisticsSolidBlock(LogisticsSolidBlock.Type.LOGISTICS_SECURITY_STATION), "security_station"));
registry.register(setName(new LogisticsSolidBlock(LogisticsSolidBlock.Type.LOGISTICS_AUTOCRAFTING_TABLE), "crafting_table"));
registry.register(setName(new LogisticsSolidBlock(LogisticsSolidBlock.Type.LOGISTICS_FUZZYCRAFTING_TABLE), "crafting_table_fuzzy"));
registry.register(setName(new LogisticsSolidBlock(LogisticsSolidBlock.Type.LOGISTICS_STATISTICS_TABLE), "statistics_table"));
registry.register(setName(new LogisticsSolidBlock(LogisticsSolidBlock.Type.LOGISTICS_RF_POWERPROVIDER), "power_provider_rf"));
registry.register(setName(new LogisticsSolidBlock(LogisticsSolidBlock.Type.LOGISTICS_IC2_POWERPROVIDER), "power_provider_eu"));
registry.register(setName(new LogisticsSolidBlock(LogisticsSolidBlock.Type.LOGISTICS_BC_POWERPROVIDER), "power_provider_mj"));
registry.register(setName(new LogisticsSolidBlock(LogisticsSolidBlock.Type.LOGISTICS_PROGRAM_COMPILER), "program_compiler"));
registry.register(setName(new BlockDummy(), "solid_block"));
registry.register(setName(new LogisticsBlockGenericPipe(), "pipe"));
registry.register(setName(new LogisticsBlockGenericSubMultiBlock(), "sub_multiblock"));
}
@SubscribeEvent
public void onModelLoad(ModelRegistryEvent e) {
MainProxy.proxy.registerModels();
}
private void registerRecipes() {
RecipeManager.recipeProvider.add(new LPChipRecipes());
RecipeManager.recipeProvider.add(new UpgradeChippedCraftingRecipes());
RecipeManager.recipeProvider.add(new ModuleChippedCraftingRecipes());
RecipeManager.recipeProvider.add(new PipeChippedCraftingRecipes());
RecipeManager.recipeProvider.add(new CraftingRecipes());
RecipeManager.loadRecipes();
resetRecipeList.stream()
.map(Supplier::get)
.forEach(itemItemPair -> registerShapelessResetRecipe(itemItemPair.getValue1(), itemItemPair.getValue2()));
}
@SneakyThrows
private void loadClasses() {
//Try to load all classes to let our checksums get generated
forName("net.minecraft.tileentity.TileEntity");
forName("net.minecraft.world.World");
forName("net.minecraft.item.ItemStack");
forName("net.minecraftforge.fluids.FluidStack");
forName("net.minecraftforge.fluids.Fluid");
forName("cofh.thermaldynamics.block.TileTDBase");
forName("cofh.thermaldynamics.duct.item.TravelingItem");
forName("crazypants.enderio.conduit.item.ItemConduit");
forName("crazypants.enderio.conduit.item.NetworkedInventory");
forName("crazypants.enderio.conduit.liquid.AbstractLiquidConduit");
forName("mcmultipart.block.BlockMultipartContainer");
}
private void forName(String string) {
try {
Class.forName(string);
} catch (Exception ignore) {}
}
@Mod.EventHandler
public void beforeStart(FMLServerAboutToStartEvent event) {
ServerTickDispatcher.INSTANCE.serverStart();
}
@Mod.EventHandler
public void cleanup(FMLServerStoppingEvent event) {
SimpleServiceLocator.routerManager.serverStopClean();
QueuedTasks.clearAllTasks();
HudUpdateTick.clearUpdateFlags();
PipeItemsSatelliteLogistics.cleanup();
PipeFluidSatellite.cleanup();
ServerRouter.cleanup();
if (event.getSide().equals(Side.CLIENT)) {
LogisticsHUDRenderer.instance().clear();
}
ServerTickDispatcher.INSTANCE.cleanup();
LogisticsPipes.serverConfigManager = null;
}
@Mod.EventHandler
public void registerCommands(FMLServerStartingEvent event) {
event.registerServerCommand(new LogisticsPipesCommand());
}
@Mod.EventHandler
public void serverStarted(FMLServerStartedEvent event) {
if (minecraftTestStartMethod != null) minecraftTestStartMethod.accept(event);
}
@Mod.EventHandler
public void certificateWarning(FMLFingerprintViolationEvent warning) {
LogisticsPipes.certificateError = true;
if (!LogisticsPipes.isDEBUG()) {
System.out.println("[LogisticsPipes|Certificate] Certificate not correct");
System.out.println("[LogisticsPipes|Certificate] Expected: " + warning.getExpectedFingerprint());
System.out.println("[LogisticsPipes|Certificate] File: " + warning.getSource().getAbsolutePath());
System.out.println("[LogisticsPipes|Certificate] This in not a LogisticsPipes version from RS485.");
}
}
public static Object getComputerLP() {
if (LogisticsPipes.generalAccess == null) {
LogisticsPipes.generalAccess = new LPGlobalCCAccess();
}
return LogisticsPipes.generalAccess;
}
public void registerPipes(IForgeRegistry<Item> registry) {
registerPipe(registry, "basic", PipeItemsBasicLogistics::new);
registerPipe(registry, "request", PipeItemsRequestLogistics::new);
registerPipe(registry, "provider", PipeItemsProviderLogistics::new);
registerPipe(registry, "crafting", PipeItemsCraftingLogistics::new);
registerPipe(registry, "satellite", PipeItemsSatelliteLogistics::new);
registerPipe(registry, "supplier", PipeItemsSupplierLogistics::new);
registerPipe(registry, "chassis_mk1", PipeLogisticsChassisMk1::new);
registerPipe(registry, "chassis_mk2", PipeLogisticsChassisMk2::new);
registerPipe(registry, "chassis_mk3", PipeLogisticsChassisMk3::new);
registerPipe(registry, "chassis_mk4", PipeLogisticsChassisMk4::new);
registerPipe(registry, "chassis_mk5", PipeLogisticsChassisMk5::new);
registerPipe(registry, "request_mk2", PipeItemsRequestLogisticsMk2::new);
registerPipe(registry, "remote_orderer", PipeItemsRemoteOrdererLogistics::new);
registerPipe(registry, "inventory_system_connector", PipeItemsInvSysConnector::new);
registerPipe(registry, "system_entrance", PipeItemsSystemEntranceLogistics::new);
registerPipe(registry, "system_destination", PipeItemsSystemDestinationLogistics::new);
registerPipe(registry, "firewall", PipeItemsFirewall::new);
registerPipe(registry, "fluid_basic", PipeFluidBasic::new);
registerPipe(registry, "fluid_supplier", PipeItemsFluidSupplier::new);
registerPipe(registry, "fluid_insertion", PipeFluidInsertion::new);
registerPipe(registry, "fluid_provider", PipeFluidProvider::new);
registerPipe(registry, "fluid_request", PipeFluidRequestLogistics::new);
registerPipe(registry, "fluid_extractor", PipeFluidExtractor::new);
registerPipe(registry, "fluid_satellite", PipeFluidSatellite::new);
registerPipe(registry, "fluid_supplier_mk2", PipeFluidSupplierMk2::new);
registerPipe(registry, "fluid_terminus", PipeFluidTerminus::new);
registerPipe(registry, "request_table", PipeBlockRequestTable::new);
registerPipe(registry, "transport_basic", PipeItemsBasicTransport::new);
registerPipe(registry, "hs_curve", HSTubeCurve::new);
registerPipe(registry, "hs_speedup", HSTubeSpeedup::new);
registerPipe(registry, "hs_s_curve", HSTubeSCurve::new);
registerPipe(registry, "hs_line", HSTubeLine::new);
registerPipe(registry, "hs_gain", HSTubeGain::new);
}
protected void registerPipe(IForgeRegistry<Item> registry, String name, Function<Item, ? extends CoreUnroutedPipe> constructor) {
final ItemLogisticsPipe res = LogisticsBlockGenericPipe.registerPipe(registry, name, constructor);
final CoreUnroutedPipe pipe = Objects.requireNonNull(LogisticsBlockGenericPipe.createPipe(res), "created a null pipe from " + res);
if (pipe instanceof CoreRoutedPipe) {
postInitRun.add(() -> res.setPipeIconIndex(((CoreRoutedPipe) pipe).getTextureType(null).normal, ((CoreRoutedPipe) pipe).getTextureType(null).newTexture));
}
if (pipe.getClass() != PipeItemsBasicLogistics.class && CoreRoutedPipe.class.isAssignableFrom(pipe.getClass())) {
if (pipe.getClass() != PipeFluidBasic.class && FluidRoutedPipe.class.isAssignableFrom(pipe.getClass())) {
resetRecipeList.add(() -> new Pair<>(res, LPItems.pipeFluidBasic));
} else if (!pipe.isPipeBlock()) {
resetRecipeList.add(() -> new Pair<>(res, LPItems.pipeBasic));
}
}
}
protected void registerShapelessResetRecipe(Item fromItem, Item toItem) {
NonNullList<Ingredient> list = NonNullList.create();
list.add(CraftingHelper.getIngredient(new ItemStack(fromItem, 1, 0)));
ItemStack output = new ItemStack(toItem, 1, 0);
ResourceLocation baseLoc = new ResourceLocation(LPConstants.LP_MOD_ID, fromItem.getRegistryName().getPath() + ".resetrecipe");
ResourceLocation recipeLoc = baseLoc;
int index = 0;
while (CraftingManager.REGISTRY.containsKey(recipeLoc)) {
index++;
recipeLoc = new ResourceLocation(LPConstants.LP_MOD_ID, baseLoc.getPath() + "_" + index);
}
ShapelessRecipes recipe = new ShapelessRecipes("logisticspipes.resetrecipe.pipe", output, list);
recipe.setRegistryName(recipeLoc);
GameData.register_impl(recipe);
}
public static ClientConfiguration getClientPlayerConfig() {
if (LogisticsPipes.playerConfig == null) {
LogisticsPipes.playerConfig = new ClientConfiguration();
}
return LogisticsPipes.playerConfig;
}
public static ServerConfigurationManager getServerConfigManager() {
if (LogisticsPipes.serverConfigManager == null) {
LogisticsPipes.serverConfigManager = new ServerConfigurationManager();
}
return LogisticsPipes.serverConfigManager;
}
}
================================================
FILE: common/logisticspipes/api/IHUDArmor.java
================================================
package logisticspipes.api;
import javax.annotation.Nonnull;
import net.minecraft.item.ItemStack;
public interface IHUDArmor {
boolean isEnabled(@Nonnull ItemStack item);
}
================================================
FILE: common/logisticspipes/api/ILPPipe.java
================================================
package logisticspipes.api;
/**
* Public interface implemented by LP's internal Pipe logic
*/
public interface ILPPipe {
/**
* @return true if the pipe can route items inside the network
*/
boolean isRoutedPipe();
}
================================================
FILE: common/logisticspipes/api/ILPPipeConfigTool.java
================================================
package logisticspipes.api;
import javax.annotation.Nonnull;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
/**
* public interface to be implemented by an item which can open the config GUI for a logistics pipe.
* Some mod compatibility is already implemented inside LP.
*/
public interface ILPPipeConfigTool {
boolean canWrench(EntityPlayer player, @Nonnull ItemStack wrench, ILPPipeTile pipe);
void wrenchUsed(EntityPlayer player, @Nonnull ItemStack wrench, ILPPipeTile pipe);
}
================================================
FILE: common/logisticspipes/api/ILPPipeTile.java
================================================
package logisticspipes.api;
import net.minecraft.util.math.BlockPos;
/**
* Public interface implemented by LP's Pipe tile
*/
public interface ILPPipeTile {
/**
* Used to access the internal pipe logic This also can return the
* IRequestAPI or IRoutedPowerProvider
*
* @return the pipe
*/
ILPPipe getLPPipe();
BlockPos getBlockPos();
}
================================================
FILE: common/logisticspipes/api/ILogisticsPowerProvider.java
================================================
package logisticspipes.api;
/**
* things which directly provide power to the logsitics network implement this.
* lists of these objects available to a network will be cached, and the closest
* one with power preferentially pulled from.
*
* @author Andrew
*/
public interface ILogisticsPowerProvider extends IRoutedPowerProvider {
int getPowerLevel();
}
================================================
FILE: common/logisticspipes/api/IProgressProvider.java
================================================
package logisticspipes.api;
/**
* Implemented by an TileEntity this will allow LP to access the current
* progress of an TileEntity connected to a crafting pipe and display the
* progress inside it's crafting tree view.
*/
public interface IProgressProvider {
/**
* @return a value between 0 and 100 that indicates the current progress of
* this TileEntity machine
*/
byte getMachineProgressForLP();
}
================================================
FILE: common/logisticspipes/api/IRoutedPowerProvider.java
================================================
package logisticspipes.api;
import java.util.List;
/**
* things implementing this interface are capable of providing power, but they
* draw from another sources Implement ILogisticsPowerProvider if you wish to
* provide power to the LP network. Losses of energy based on distance may be
* involved.
*
* @author Andrew
*/
public interface IRoutedPowerProvider {
// typically calls useEnergy(amount,null);
boolean useEnergy(int amount);
// typically calls canUseEnergy(amount,null);
boolean canUseEnergy(int amount);
// for the case where 1 IRoutedPowerProvider has to check another
// each IRoutedPowerProvider that can recurse should:
// a) check that it is not already on the list
// b) add itself to the list (creating it if the list is null),
boolean useEnergy(int amount, List<Object> providersToIgnore);
boolean canUseEnergy(int amount, List<Object> providersToIgnore);
int getX(); // the coordinates of the associated tile (typically "this.xCoords"). needed for sending packets.
int getY();
int getZ();
}
================================================
FILE: common/logisticspipes/asm/ClientSideOnlyMethodContent.java
================================================
package logisticspipes.asm;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ClientSideOnlyMethodContent {
}
================================================
FILE: common/logisticspipes/asm/IgnoreDisabledProxy.java
================================================
package logisticspipes.asm;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface IgnoreDisabledProxy {
}
================================================
FILE: common/logisticspipes/asm/LogisticsASMHookClass.java
================================================
package logisticspipes.asm;
import net.minecraft.tileentity.TileEntity;
import lombok.SneakyThrows;
import logisticspipes.LogisticsPipes;
import logisticspipes.routing.pathfinder.changedetection.TEControl;
public class LogisticsASMHookClass {
public static void callingClearedMethod() {
throw new RuntimeException("This Method should never be called");
}
@SneakyThrows(Exception.class)
public static void validate(TileEntity tile) {
try {
TEControl.validate(tile);
} catch (Exception e) {
if (LogisticsPipes.isDEBUG()) {
throw e;
}
e.printStackTrace();
}
}
@SneakyThrows(Exception.class)
public static void invalidate(TileEntity tile) {
try {
TEControl.invalidate(tile);
} catch (Exception e) {
if (LogisticsPipes.isDEBUG()) {
throw e;
}
e.printStackTrace();
}
}
}
================================================
FILE: common/logisticspipes/asm/LogisticsClassTransformer.java
================================================
package logisticspipes.asm;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.function.Consumer;
import java.util.jar.Manifest;
import java.util.stream.Collectors;
import net.minecraft.launchwrapper.IClassTransformer;
import net.minecraft.launchwrapper.Launch;
import net.minecraft.launchwrapper.LaunchClassLoader;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.ModContainer;
import net.minecraftforge.fml.common.asm.transformers.AccessTransformer;
import net.minecraftforge.fml.common.asm.transformers.ModAccessTransformer;
import net.minecraftforge.fml.common.versioning.ArtifactVersion;
import net.minecraftforge.fml.common.versioning.DefaultArtifactVersion;
import net.minecraftforge.fml.common.versioning.VersionParser;
import net.minecraftforge.fml.common.versioning.VersionRange;
import net.minecraftforge.fml.relauncher.Side;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.FieldVisitor;
import org.objectweb.asm.Label;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.AnnotationNode;
import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.tree.FieldNode;
import org.objectweb.asm.tree.MethodNode;
import logisticspipes.LogisticsPipes;
import logisticspipes.asm.mcmp.ClassBlockMultipartContainerHandler;
import logisticspipes.asm.td.ClassRenderDuctItemsHandler;
import logisticspipes.asm.td.ClassTravelingItemHandler;
import logisticspipes.utils.ModStatusHelper;
public class LogisticsClassTransformer implements IClassTransformer {
public List<String> interfacesToClearA = new ArrayList<>();
public List<String> interfacesToClearB = new ArrayList<>();
private LaunchClassLoader cl = (LaunchClassLoader) LogisticsClassTransformer.class.getClassLoader();
private Field negativeResourceCache;
private Field invalidClasses;
public static LogisticsClassTransformer instance;
public LogisticsClassTransformer() {
LogisticsClassTransformer.instance = this;
try {
negativeResourceCache = LaunchClassLoader.class.getDeclaredField("negativeResourceCache");
negativeResourceCache.setAccessible(true);
} catch (Exception e) {
//e.printStackTrace();
}
try {
invalidClasses = LaunchClassLoader.class.getDeclaredField("invalidClasses");
invalidClasses.setAccessible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public byte[] transform(String name, String transformedName, byte[] bytes) {
// if dev environment and transform on first class is launched, boot the AT remapper
if (LogisticsPipesCoreLoader.isDevelopmentEnvironment() && name.equals("net.minecraftforge.fml.common.Loader")) bootATRemapper();
Thread thread = Thread.currentThread();
if (thread.getName().equals("Minecraft main thread") || thread.getName().equals("main") || thread.getName().equals("Server thread")) { //Only clear when called from the main thread to avoid ConcurrentModificationException on start
clearNegativeInterfaceCache();
}
if (bytes == null) {
return null;
}
if (transformedName.startsWith("logisticspipes.") || transformedName.startsWith("net.minecraft")) {
return ParamProfiler.handleClass(applyLPTransforms(transformedName, bytes));
}
byte[] tmp = bytes.clone();
bytes = applyLPTransforms(transformedName, bytes);
if (!Arrays.equals(bytes, tmp)) {
final ClassReader reader = new ClassReader(bytes);
final ClassNode node = new ClassNode();
reader.accept(node, 0);
node.sourceFile = "[LP|ASM] " + node.sourceFile;
ClassWriter writer = new ClassWriter(0);
node.accept(writer);
bytes = writer.toByteArray();
}
return ParamProfiler.handleClass(bytes);
}
private void bootATRemapper() {
System.err.println("Fetching ModAccessTransformers");
final List<IClassTransformer> modATs = Launch.classLoader.getTransformers().stream().filter(transformer -> transformer instanceof ModAccessTransformer).collect(Collectors.toList());
System.err.println("Found " + modATs);
if (modATs.size() == 0) return;
System.err.println("Inserting missing ATs from classpath");
try {
readClasspathATs(modATs);
} catch (IllegalStateException e) {
System.err.println("Could not inject classpath FMLATs");
e.printStackTrace();
}
System.err.println("Booting Logistics Pipes ModAccessTransformerRemapper");
final ModAccessTransformerRemapper remapper;
try {
remapper = new ModAccessTransformerRemapper();
} catch (IllegalStateException e) {
System.err.println("Could not initialize ModAccessTransformerRemapper:");
e.printStackTrace();
return;
}
modATs.forEach(remapper::apply);
}
private void readClasspathATs(List<IClassTransformer> modATs) {
final Method readMapFile;
try {
readMapFile = AccessTransformer.class.getDeclaredMethod("readMapFile", String.class);
} catch (NoSuchMethodException e) {
throw new IllegalStateException("Could not find method readMapFile on AccessTransformer class", e);
}
final boolean wasAccessible = readMapFile.isAccessible();
if (!wasAccessible) readMapFile.setAccessible(true);
try {
readClasspathATsInner(path -> {
final IClassTransformer classTransformer = modATs.get(0);
try {
readMapFile.invoke(classTransformer, path);
} catch (IllegalAccessException | InvocationTargetException e) {
throw new IllegalStateException("Could not access readMapFile method of " + classTransformer);
}
});
} catch (IOException e) {
throw new IllegalArgumentException("IO Error when fetching FMLATs", e);
} finally {
if (!wasAccessible) readMapFile.setAccessible(false);
}
}
private void readClasspathATsInner(Consumer<String> readMapFile) throws IOException {
final Enumeration<URL> manifestEntries = Launch.classLoader.findResources("META-INF/MANIFEST.MF");
while (manifestEntries.hasMoreElements()) {
final String accessTransformer;
try (InputStream manifestInputStream = manifestEntries.nextElement().openStream()) {
final Manifest manifest = new Manifest(manifestInputStream);
accessTransformer = manifest.getMainAttributes().getValue(ModAccessTransformer.FMLAT);
}
final Enumeration<URL> atEntries = Launch.classLoader.findResources("META-INF/" + accessTransformer);
while (atEntries.hasMoreElements()) {
readMapFile.accept(atEntries.nextElement().toString());
}
}
}
private byte[] applyLPTransforms(String name, byte[] bytes) {
try {
if (name.equals("net.minecraft.tileentity.TileEntity")) {
return handleTileEntityClass(bytes);
}
if (name.equals("net.minecraft.item.ItemStack")) {
return handleItemStackClass(bytes);
}
if (name.equals("net.minecraftforge.fluids.FluidStack")) {
return handleFluidStackClass(bytes);
}
if (name.equals("net.minecraftforge.fluids.Fluid")) {
return handleFluidClass(bytes);
}
if (name.equals("mcmultipart.block.BlockMultipartContainer")) {
return ClassBlockMultipartContainerHandler.handleClass(bytes);
}
if (name.equals("dan200.computercraft.core.lua.LuaJLuaMachine")) {
return handleCCLuaJLuaMachine(bytes);
}
if (name.equals("dan200.computercraft.core.lua.CobaltLuaMachine")) {
return handleCCLuaJLuaMachine(bytes);
}
if (name.equals("cofh.thermaldynamics.duct.item.TravelingItem")) {
return ClassTravelingItemHandler.handleTravelingItemClass(bytes);
}
if (name.equals("cofh.thermaldynamics.render.RenderDuctItems")) {
return ClassRenderDuctItemsHandler.handleRenderDuctItemsClass(bytes);
}
if (!name.startsWith("logisticspipes.")) {
return bytes;
}
return handleLPTransformation(bytes);
} catch (Exception e) {
if (LogisticsPipes.isDEBUG()) { //For better Debugging
e.printStackTrace();
return bytes;
}
throw new RuntimeException(e);
}
}
public void clearNegativeInterfaceCache() {
//Remove previously not found Classes to Fix ClassNotFound Exceptions for Interfaces.
//TODO remove in future version when everybody starts using a ClassTransformer system for Interfaces.
if (negativeResourceCache != null) {
if (!interfacesToClearA.isEmpty()) {
handleField(negativeResourceCache, interfacesToClearA);
}
}
if (invalidClasses != null) {
if (!interfacesToClearB.isEmpty()) {
handleField(invalidClasses, interfacesToClearB);
}
}
}
@SuppressWarnings("unchecked")
private void handleField(Field field, List<String> toClear) {
try {
Set<String> set = (Set<String>) field.get(cl);
Iterator<String> it = toClear.iterator();
while (it.hasNext()) {
String content = it.next();
if (set.contains(content)) {
set.remove(content);
it.remove();
}
}
} catch (Exception e) {
if (LogisticsPipes.isDEBUG()) { //For better Debugging
e.printStackTrace();
}
}
}
@SuppressWarnings("unchecked")
private byte[] handleLPTransformation(byte[] bytes) {
final ClassNode node = new ClassNode();
ClassReader reader = new ClassReader(bytes);
reader.accept(node, 0);
boolean changed = false;
if (node.visibleAnnotations != null) {
for (AnnotationNode a : node.visibleAnnotations) {
if (a.desc.equals("Llogisticspipes/asm/ModDependentInterface;")) {
if (a.values.size() == 4 && a.values.get(0).equals("modId") && a.values.get(2).equals("interfacePath")) {
List<String> modId = (List<String>) a.values.get(1);
List<String> interfacePath = (List<String>) a.values.get(3);
if (modId.size() != interfacePath.size()) {
throw new RuntimeException("The Arrays have to be of the same size.");
}
for (int i = 0; i < modId.size(); i++) {
if (!ModStatusHelper.isModLoaded(modId.get(i))) {
interfacesToClearA.add(interfacePath.get(i));
interfacesToClearB.add(interfacePath.get(i));
for (String inter : node.interfaces) {
if (inter.replace("/", ".").equals(interfacePath.get(i))) {
node.interfaces.remove(inter);
changed = true;
break;
}
}
}
}
} else {
throw new UnsupportedOperationException("Can't parse the annotations correctly");
}
}
}
}
List<MethodNode> methodsToRemove = new ArrayList<>();
for (MethodNode m : node.methods) {
if (m.visibleAnnotations != null) {
for (AnnotationNode a : m.visibleAnnotations) {
if (a.desc.equals("Llogisticspipes/asm/ModDependentMethod;")) {
if (a.values.size() == 2 && a.values.get(0).equals("modId")) {
String modId = a.values.get(1).toString();
if (!ModStatusHelper.isModLoaded(modId)) {
methodsToRemove.add(m);
break;
}
} else {
throw new UnsupportedOperationException("Can't parse the annotation correctly");
}
} else if (a.desc.equals("Llogisticspipes/asm/ClientSideOnlyMethodContent;")) {
if (FMLCommonHandler.instance().getSide().equals(Side.SERVER)) {
m.instructions.clear();
m.localVariables.clear();
m.tryCatchBlocks.clear();
m.visitCode();
Label l0 = new Label();
m.visitLabel(l0);
m.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/asm/LogisticsASMHookClass", "callingClearedMethod", "()V");
Label l1 = new Label();
m.visitLabel(l1);
m.visitInsn(Opcodes.RETURN);
Label l2 = new Label();
m.visitLabel(l2);
m.visitLocalVariable("this", "Llogisticspipes/network/packets/DummyPacket;", null, l0, l2, 0);
m.visitLocalVariable("player", "Lnet/minecraft/entity/player/EntityPlayer;", null, l0, l2, 1);
m.visitMaxs(0, 2);
m.visitEnd();
changed = true;
break;
}
} else if (a.desc.equals("Llogisticspipes/asm/ModDependentMethodName;")) {
if (a.values.size() == 6 && a.values.get(0).equals("modId") && a.values.get(2).equals("newName") && a.values.get(4).equals("version")) {
String modId = a.values.get(1).toString();
final String newName = a.values.get(3).toString();
final String version = a.values.get(5).toString();
boolean loaded = ModStatusHelper.isModLoaded(modId);
if (loaded && !version.equals("")) {
ModContainer mod = Loader.instance().getIndexedModList().get(modId);
if (mod != null) {
VersionRange range = VersionParser.parseRange(version);
ArtifactVersion artifactVersion = new DefaultArtifactVersion("Version", mod.getVersion());
loaded = range.containsVersion(artifactVersion);
} else {
loaded = false;
}
}
if (loaded) {
final String oldName = m.name;
m.name = newName;
MethodNode newM = new MethodNode(Opcodes.ASM4, m.access, m.name, m.desc, m.signature, m.exceptions.toArray(new String[0])) {
@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc) {
if (name.equals(oldName) && owner.equals(node.superName)) {
super.visitMethodInsn(opcode, owner, newName, desc);
} else {
super.visitMethodInsn(opcode, owner, name, desc);
}
}
};
m.accept(newM);
node.methods.set(node.methods.indexOf(m), newM);
changed = true;
break;
}
} else {
throw new UnsupportedOperationException("Can't parse the annotation correctly");
}
}
}
}
}
for (MethodNode m : methodsToRemove) {
node.methods.remove(m);
}
List<FieldNode> fieldsToRemove = new ArrayList<>();
for (FieldNode f : node.fields) {
if (f.visibleAnnotations != null) {
for (AnnotationNode a : f.visibleAnnotations) {
if (a.desc.equals("Llogisticspipes/asm/ModDependentField;")) {
if (a.values.size() == 2 && a.values.get(0).equals("modId")) {
String modId = a.values.get(1).toString();
if (!ModStatusHelper.isModLoaded(modId)) {
fieldsToRemove.add(f);
break;
}
} else {
throw new UnsupportedOperationException("Can't parse the annotation correctly");
}
}
}
}
}
for (FieldNode f : fieldsToRemove) {
node.fields.remove(f);
}
if (!changed && methodsToRemove.isEmpty() && fieldsToRemove.isEmpty()) {
return bytes;
}
ClassWriter writer = new ClassWriter(0);
node.accept(writer);
return writer.toByteArray();
}
private byte[] handleCCLuaJLuaMachine(byte[] bytes) {
final ClassReader reader = new ClassReader(bytes);
final ClassNode node = new ClassNode();
reader.accept(node, 0);
for (MethodNode m : node.methods) {
if (m.name.equals("wrapLuaObject") && m.desc.equals("(Ldan200/computercraft/api/lua/ILuaObject;)Lorg/luaj/vm2/LuaTable;")) {
MethodNode mv = new MethodNode(Opcodes.ASM4, m.access, m.name, m.desc, m.signature, m.exceptions.toArray(new String[0])) {
@Override
public void visitInsn(int opcode) {
if (opcode == Opcodes.ARETURN) {
super.visitVarInsn(Opcodes.ALOAD, 1);
super.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/proxy/cc/LPASMHookCC", "onCCWrappedILuaObject", "(Lorg/luaj/vm2/LuaTable;Ldan200/computercraft/api/lua/ILuaObject;)Lorg/luaj/vm2/LuaTable;");
}
super.visitInsn(opcode);
}
@Override
public void visitCode() {
super.visitCode();
Label l0 = new Label();
super.visitLabel(l0);
super.visitVarInsn(Opcodes.ALOAD, 1);
super.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/proxy/cc/LPASMHookCC", "handleCCWrappedILuaObject", "(Ldan200/computercraft/api/lua/ILuaObject;)Z");
Label l1 = new Label();
super.visitJumpInsn(Opcodes.IFEQ, l1);
Label l2 = new Label();
super.visitLabel(l2);
super.visitVarInsn(Opcodes.ALOAD, 1);
super.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/proxy/cc/LPASMHookCC", "returnCCWrappedILuaObject", "(Ldan200/computercraft/api/lua/ILuaObject;)Lorg/luaj/vm2/LuaTable;");
super.visitInsn(Opcodes.ARETURN);
super.visitLabel(l1);
}
};
m.accept(mv);
node.methods.set(node.methods.indexOf(m), mv);
}
if (m.name.equals("toObject") && (m.desc.equals("(Lorg/luaj/vm2/LuaValue;)Ljava/lang/Object;") || m.desc.equals("(Lorg/luaj/vm2/LuaValue;Ljava/util/Map;)Ljava/lang/Object;"))) {
MethodNode mv = new MethodNode(Opcodes.ASM4, m.access, m.name, m.desc, m.signature, m.exceptions.toArray(new String[0])) {
boolean added = false;
@Override
public void visitLineNumber(int line, Label start) {
if (!added) {
added = true;
super.visitVarInsn(Opcodes.ALOAD, 1);
super.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/proxy/cc/LPASMHookCC", "handleCCToObject", "(Lorg/luaj/vm2/LuaValue;)Z");
start = new Label();
super.visitJumpInsn(Opcodes.IFEQ, start);
Label l5 = new Label();
super.visitLabel(l5);
super.visitVarInsn(Opcodes.ALOAD, 1);
super.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/proxy/cc/LPASMHookCC", "returnCCToObject", "(Lorg/luaj/vm2/LuaValue;)Ljava/lang/Object;");
super.visitInsn(Opcodes.ARETURN);
super.visitLabel(start);
}
super.visitLineNumber(line, start);
}
};
m.accept(mv);
node.methods.set(node.methods.indexOf(m), mv);
}
}
ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS) {
protected String getCommonSuperClass(final String type1, final String type2) {
Class<?> c, d;
ClassLoader classLoader = Launch.classLoader; // Change Classloader to the MC one
try {
c = Class.forName(type1.replace('/', '.'), false, classLoader);
d = Class.forName(type2.replace('/', '.'), false, classLoader);
} catch (Exception e) {
throw new RuntimeException(e.toString());
}
if (c.isAssignableFrom(d)) {
return type1;
}
if (d.isAssignableFrom(c)) {
return type2;
}
if (c.isInterface() || d.isInterface()) {
return "java/lang/Object";
} else {
do {
c = c.getSuperclass();
} while (!c.isAssignableFrom(d));
return c.getName().replace('.', '/');
}
}
};
node.accept(writer);
return writer.toByteArray();
}
private byte[] handleTileEntityClass(byte[] bytes) {
final ClassReader reader = new ClassReader(bytes);
final ClassNode node = new ClassNode();
reader.accept(node, 0);
node.interfaces.add("logisticspipes/asm/te/ILPTEInformation");
node.visitField(Opcodes.ACC_PRIVATE, "informationObjectLogisticsPipes", "Llogisticspipes/asm/te/LPTileEntityObject;", null, null);
for (MethodNode m : node.methods) {
if (m.name.equals("validate") || m.name.equals("func_145829_t") || (m.name.equals("A") && m.desc.equals("()V"))) {
MethodNode mv = new MethodNode(Opcodes.ASM4, m.access, m.name, m.desc, m.signature, m.exceptions.toArray(new String[0])) {
@Override
public void visitCode() {
super.visitCode();
Label l0 = new Label();
visitLabel(l0);
visitVarInsn(Opcodes.ALOAD, 0);
this.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/asm/LogisticsASMHookClass", "validate", "(Lnet/minecraft/tileentity/TileEntity;)V");
}
};
m.accept(mv);
node.methods.set(node.methods.indexOf(m), mv);
}
if (m.name.equals("invalidate") || m.name.equals("func_145843_s") || (m.name.equals("z") && m.desc.equals("()V"))) {
MethodNode mv = new MethodNode(Opcodes.ASM4, m.access, m.name, m.desc, m.signature, m.exceptions.toArray(new String[0])) {
@Override
public void visitCode() {
super.visitCode();
Label l0 = new Label();
visitLabel(l0);
visitVarInsn(Opcodes.ALOAD, 0);
this.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/asm/LogisticsASMHookClass", "invalidate", "(Lnet/minecraft/tileentity/TileEntity;)V");
}
};
m.accept(mv);
node.methods.set(node.methods.indexOf(m), mv);
}
}
MethodVisitor mv;
{
mv = node.visitMethod(Opcodes.ACC_PUBLIC, "getLPTileEntityObject", "()Llogisticspipes/asm/te/LPTileEntityObject;", null, null);
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, "net/minecraft/tileentity/TileEntity", "informationObjectLogisticsPipes", "Llogisticspipes/asm/te/LPTileEntityObject;");
mv.visitInsn(Opcodes.ARETURN);
Label l1 = new Label();
mv.visitLabel(l1);
mv.visitMaxs(1, 1);
mv.visitEnd();
}
{
mv = node.visitMethod(Opcodes.ACC_PUBLIC, "setLPTileEntityObject", "(Llogisticspipes/asm/te/LPTileEntityObject;)V", null, null);
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitVarInsn(Opcodes.ALOAD, 1);
mv.visitFieldInsn(Opcodes.PUTFIELD, "net/minecraft/tileentity/TileEntity", "informationObjectLogisticsPipes", "Llogisticspipes/asm/te/LPTileEntityObject;");
Label l1 = new Label();
mv.visitLabel(l1);
mv.visitInsn(Opcodes.RETURN);
Label l2 = new Label();
mv.visitLabel(l2);
mv.visitMaxs(2, 2);
mv.visitEnd();
}
ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS);
node.accept(writer);
return writer.toByteArray();
}
private byte[] handleItemStackClass(byte[] bytes) {
return addAddInfoPart(bytes, "net/minecraft/item/ItemStack");
}
private byte[] handleFluidStackClass(byte[] bytes) {
return addAddInfoPart(bytes, "net/minecraftforge/fluids/FluidStack");
}
private byte[] handleFluidClass(byte[] bytes) {
return addAddInfoPart(bytes, "net/minecraftforge/fluids/Fluid");
}
private byte[] addAddInfoPart(byte[] bytes, String className) {
final ClassReader reader = new ClassReader(bytes);
final ClassNode node = new ClassNode();
reader.accept(node, 0);
node.interfaces.add("logisticspipes/asm/addinfo/IAddInfoProvider");
{
FieldVisitor fv = node.visitField(Opcodes.ACC_PRIVATE, "logisticsPipesAdditionalInformation", "Ljava/util/ArrayList;", "Ljava/util/ArrayList<Llogisticspipes/asm/addinfo/IAddInfo;>;", null);
fv.visitEnd();
}
MethodVisitor mv;
{
mv = node.visitMethod(Opcodes.ACC_PUBLIC, "getLogisticsPipesAddInfo", "(Ljava/lang/Class;)Llogisticspipes/asm/addinfo/IAddInfo;", "<T::Llogisticspipes/asm/addinfo/IAddInfo;>(Ljava/lang/Class<TT;>;)TT;", null);
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
mv.visitLineNumber(11, l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, className, "logisticsPipesAdditionalInformation", "Ljava/util/ArrayList;");
Label l1 = new Label();
mv.visitJumpInsn(Opcodes.IFNONNULL, l1);
Label l2 = new Label();
mv.visitLabel(l2);
mv.visitLineNumber(12, l2);
mv.visitInsn(Opcodes.ACONST_NULL);
mv.visitInsn(Opcodes.ARETURN);
mv.visitLabel(l1);
mv.visitLineNumber(14, l1);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, className, "logisticsPipesAdditionalInformation", "Ljava/util/ArrayList;");
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/util/ArrayList", "iterator", "()Ljava/util/Iterator;", false);
mv.visitVarInsn(Opcodes.ASTORE, 2);
Label l3 = new Label();
mv.visitLabel(l3);
mv.visitFrame(Opcodes.F_APPEND, 1, new Object[] { "java/util/Iterator" }, 0, null);
mv.visitVarInsn(Opcodes.ALOAD, 2);
mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z", true);
Label l4 = new Label();
mv.visitJumpInsn(Opcodes.IFEQ, l4);
mv.visitVarInsn(Opcodes.ALOAD, 2);
mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;", true);
mv.visitTypeInsn(Opcodes.CHECKCAST, "logisticspipes/asm/addinfo/IAddInfo");
mv.visitVarInsn(Opcodes.ASTORE, 3);
Label l5 = new Label();
mv.visitLabel(l5);
mv.visitLineNumber(15, l5);
mv.visitVarInsn(Opcodes.ALOAD, 3);
Label l6 = new Label();
mv.visitJumpInsn(Opcodes.IFNONNULL, l6);
mv.visitJumpInsn(Opcodes.GOTO, l3);
mv.visitLabel(l6);
mv.visitLineNumber(16, l6);
mv.visitFrame(Opcodes.F_APPEND, 1, new Object[] { "logisticspipes/asm/addinfo/IAddInfo" }, 0, null);
mv.visitVarInsn(Opcodes.ALOAD, 3);
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Object", "getClass", "()Ljava/lang/Class;", false);
mv.visitVarInsn(Opcodes.ALOAD, 1);
Label l7 = new Label();
mv.visitJumpInsn(Opcodes.IF_ACMPNE, l7);
Label l8 = new Label();
mv.visitLabel(l8);
mv.visitLineNumber(17, l8);
mv.visitVarInsn(Opcodes.ALOAD, 3);
mv.visitInsn(Opcodes.ARETURN);
mv.visitLabel(l7);
mv.visitLineNumber(19, l7);
mv.visitFrame(Opcodes.F_CHOP, 1, null, 0, null);
mv.visitJumpInsn(Opcodes.GOTO, l3);
mv.visitLabel(l4);
mv.visitLineNumber(20, l4);
mv.visitFrame(Opcodes.F_CHOP, 1, null, 0, null);
mv.visitInsn(Opcodes.ACONST_NULL);
mv.visitInsn(Opcodes.ARETURN);
Label l9 = new Label();
mv.visitLabel(l9);
mv.visitLocalVariable("info", "Llogisticspipes/asm/addinfo/IAddInfo;", null, l5, l7, 3);
mv.visitLocalVariable("this", "L" + className + ";", null, l0, l9, 0);
mv.visitLocalVariable("clazz", "Ljava/lang/Class;", "Ljava/lang/Class<TT;>;", l0, l9, 1);
mv.visitMaxs(2, 4);
mv.visitEnd();
}
{
mv = node.visitMethod(Opcodes.ACC_PUBLIC, "setLogisticsPipesAddInfo", "(Llogisticspipes/asm/addinfo/IAddInfo;)V", null, null);
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
mv.visitLineNumber(25, l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, className, "logisticsPipesAdditionalInformation", "Ljava/util/ArrayList;");
Label l1 = new Label();
mv.visitJumpInsn(Opcodes.IFNONNULL, l1);
Label l2 = new Label();
mv.visitLabel(l2);
mv.visitLineNumber(26, l2);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitTypeInsn(Opcodes.NEW, "java/util/ArrayList");
mv.visitInsn(Opcodes.DUP);
mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V", false);
mv.visitFieldInsn(Opcodes.PUTFIELD, className, "logisticsPipesAdditionalInformation", "Ljava/util/ArrayList;");
mv.visitLabel(l1);
mv.visitLineNumber(28, l1);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitInsn(Opcodes.ICONST_0);
mv.visitVarInsn(Opcodes.ISTORE, 2);
Label l3 = new Label();
mv.visitLabel(l3);
mv.visitFrame(Opcodes.F_APPEND, 1, new Object[] { Opcodes.INTEGER }, 0, null);
mv.visitVarInsn(Opcodes.ILOAD, 2);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, className, "logisticsPipesAdditionalInformation", "Ljava/util/ArrayList;");
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/util/ArrayList", "size", "()I", false);
Label l4 = new Label();
mv.visitJumpInsn(Opcodes.IF_ICMPGE, l4);
Label l5 = new Label();
mv.visitLabel(l5);
mv.visitLineNumber(29, l5);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, className, "logisticsPipesAdditionalInformation", "Ljava/util/ArrayList;");
mv.visitVarInsn(Opcodes.ILOAD, 2);
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/util/ArrayList", "get", "(I)Ljava/lang/Object;", false);
Label l6 = new Label();
mv.visitJumpInsn(Opcodes.IFNONNULL, l6);
Label l7 = new Label();
mv.visitJumpInsn(Opcodes.GOTO, l7);
mv.visitLabel(l6);
mv.visitLineNumber(30, l6);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, className, "logisticsPipesAdditionalInformation", "Ljava/util/ArrayList;");
mv.visitVarInsn(Opcodes.ILOAD, 2);
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/util/ArrayList", "get", "(I)Ljava/lang/Object;", false);
mv.visitTypeInsn(Opcodes.CHECKCAST, "logisticspipes/asm/addinfo/IAddInfo");
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Object", "getClass", "()Ljava/lang/Class;", false);
mv.visitVarInsn(Opcodes.ALOAD, 1);
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Object", "getClass", "()Ljava/lang/Class;", false);
mv.visitJumpInsn(Opcodes.IF_ACMPNE, l7);
Label l8 = new Label();
mv.visitLabel(l8);
mv.visitLineNumber(31, l8);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, className, "logisticsPipesAdditionalInformation", "Ljava/util/ArrayList;");
mv.visitVarInsn(Opcodes.ILOAD, 2);
mv.visitVarInsn(Opcodes.ALOAD, 1);
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/util/ArrayList", "set", "(ILjava/lang/Object;)Ljava/lang/Object;", false);
mv.visitInsn(Opcodes.POP);
Label l9 = new Label();
mv.visitLabel(l9);
mv.visitLineNumber(32, l9);
mv.visitInsn(Opcodes.RETURN);
mv.visitLabel(l7);
mv.visitLineNumber(28, l7);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitIincInsn(2, 1);
mv.visitJumpInsn(Opcodes.GOTO, l3);
mv.visitLabel(l4);
mv.visitLineNumber(35, l4);
mv.visitFrame(Opcodes.F_CHOP, 1, null, 0, null);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, className, "logisticsPipesAdditionalInformation", "Ljava/util/ArrayList;");
mv.visitVarInsn(Opcodes.ALOAD, 1);
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/util/ArrayList", "add", "(Ljava/lang/Object;)Z", false);
mv.visitInsn(Opcodes.POP);
Label l10 = new Label();
mv.visitLabel(l10);
mv.visitLineNumber(36, l10);
mv.visitInsn(Opcodes.RETURN);
Label l11 = new Label();
mv.visitLabel(l11);
mv.visitLocalVariable("i", "I", null, l3, l4, 2);
mv.visitLocalVariable("this", "L" + className + ";", null, l0, l11, 0);
mv.visitLocalVariable("info", "Llogisticspipes/asm/addinfo/IAddInfo;", null, l0, l11, 1);
mv.visitMaxs(3, 3);
mv.visitEnd();
}
ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS);
node.accept(writer);
return writer.toByteArray();
}
}
================================================
FILE: common/logisticspipes/asm/LogisticsPipesClassInjector.java
================================================
package logisticspipes.asm;
import java.lang.reflect.Field;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import net.minecraft.launchwrapper.IClassTransformer;
import net.minecraft.launchwrapper.Launch;
import net.minecraft.launchwrapper.LaunchClassLoader;
import com.google.common.io.BaseEncoding;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.tree.AnnotationNode;
import org.objectweb.asm.tree.ClassNode;
import logisticspipes.LogisticsPipes;
import logisticspipes.proxy.computers.wrapper.CCObjectWrapper;
import logisticspipes.proxy.opencomputers.asm.ClassCreator;
import logisticspipes.utils.ModStatusHelper;
public class LogisticsPipesClassInjector implements IClassTransformer {
private Field fResourceCache;
private Boolean isObfEnv = null;
public LogisticsPipesClassInjector() throws NoSuchFieldException, SecurityException {
fResourceCache = LaunchClassLoader.class.getDeclaredField("resourceCache");
fResourceCache.setAccessible(true);
}
@Override
@SuppressWarnings("unchecked")
public byte[] transform(String name, String transformedName, byte[] bytes) {
if (bytes != null) {
if (name.startsWith("logisticspipes.")) {
final ClassReader reader = new ClassReader(bytes);
final ClassNode node = new ClassNode();
reader.accept(node, 0);
if (node.visibleAnnotations != null) {
for (AnnotationNode a : node.visibleAnnotations) {
if (a.desc.equals("Llogisticspipes/asm/ModVersionedClass;")) {
if (a.values.size() == 8 && a.values.get(0).equals("modId") && a.values.get(2).equals("version") && a.values.get(4).equals("classData") && a.values.get(6).equals("classDataDev")) {
String modId = a.values.get(1).toString();
String version = a.values.get(3).toString();
String classData = a.values.get(5).toString();
String classDataDev = a.values.get(7).toString();
if (ModStatusHelper.isModLoaded(modId) && !ModStatusHelper.isModVersionEqualsOrHigher(modId, version)) {
if (isObfEnv == null) {
try {
isObfEnv = (Class.forName("net.minecraft.world.World").getDeclaredField("chunkProvider") == null);
} catch (Throwable e) {
isObfEnv = true;
}
}
bytes = transform(name, transformedName, BaseEncoding.base64().decode(isObfEnv ? classData : classDataDev));
}
} else {
throw new UnsupportedOperationException("Can't parse the annotations correctly");
}
}
}
}
}
return bytes;
}
try {
if (name.startsWith("logisticspipes.proxy.opencomputers.asm.BaseWrapperClass$") && name.endsWith("$OpenComputersWrapper")) {
String correctName = name.substring(56, name.length() - 21);
Class<?> clazz = Launch.classLoader.findClass(correctName);
bytes = ClassCreator.getWrappedClassAsBytes(CCObjectWrapper.getWrapperInformation(clazz), clazz.getName());
Set<String> set = new TreeSet<>();
set.add(name);
Launch.classLoader.clearNegativeEntries(set);
Map<String, byte[]> map = (Map<String, byte[]>) fResourceCache.get(Launch.classLoader);
map.put(name, bytes);
return bytes;
}
} catch (Exception e) {
if (LogisticsPipes.isDEBUG()) { // For better Debugging
e.printStackTrace();
return bytes;
}
throw new RuntimeException(e);
}
return bytes;
}
}
================================================
FILE: common/logisticspipes/asm/LogisticsPipesCoreLoader.java
================================================
package logisticspipes.asm;
import java.util.Map;
import net.minecraft.launchwrapper.Launch;
import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin;
import lombok.Getter;
@IFMLLoadingPlugin.MCVersion("1.12.2")
//@IFMLLoadingPlugin.SortingIndex(1001) TODO: For next MC update. Changing this now, will change ASM check sums as well.
public class LogisticsPipesCoreLoader implements IFMLLoadingPlugin {
@Getter
private static boolean coremodLoaded = false;
private static boolean developmentEnvironment = false;
public LogisticsPipesCoreLoader() throws Exception {
Launch.classLoader.addTransformerExclusion("logisticspipes.asm.");
coremodLoaded = true;
}
@Override
public String[] getASMTransformerClass() {
return new String[] { "logisticspipes.asm.LogisticsClassTransformer" };
}
@Override
public String getModContainerClass() {
return null;
}
@Override
public String getSetupClass() {
return null;
}
@Override
public void injectData(Map<String, Object> data) {
if (data.containsKey("runtimeDeobfuscationEnabled")) {
developmentEnvironment = !((Boolean) data.get("runtimeDeobfuscationEnabled"));
}
}
@Override
public String getAccessTransformerClass() {
return null;
}
public static boolean isDevelopmentEnvironment() {
return developmentEnvironment;
}
}
================================================
FILE: common/logisticspipes/asm/ModAccessTransformerRemapper.java
================================================
package logisticspipes.asm;
import java.lang.reflect.Field;
import java.util.Map;
import java.util.Objects;
import javax.annotation.Nonnull;
import net.minecraft.launchwrapper.IClassTransformer;
import net.minecraftforge.fml.common.asm.transformers.AccessTransformer;
import net.minecraftforge.fml.common.asm.transformers.deobf.FMLDeobfuscatingRemapper;
import com.google.common.collect.Multimap;
public class ModAccessTransformerRemapper {
private final Map<String, Map<String, String>> fieldMappings;
private final Map<String, Map<String, String>> methodMappings;
private final Field modifiersField;
private Field modifierDesc;
private Field modifierName;
@SuppressWarnings("unchecked")
public ModAccessTransformerRemapper() {
try {
final Field rawFieldMaps = FMLDeobfuscatingRemapper.class.getDeclaredField("rawFieldMaps");
final boolean wasAccessible = rawFieldMaps.isAccessible();
if (!wasAccessible) rawFieldMaps.setAccessible(true);
fieldMappings = (Map<String, Map<String, String>>) rawFieldMaps.get(FMLDeobfuscatingRemapper.INSTANCE);
if (!wasAccessible) rawFieldMaps.setAccessible(false);
} catch (IllegalAccessException | NoSuchFieldException e) {
throw new IllegalStateException("Could not access rawFieldMaps of FMLDeobfuscatingRemapper", e);
}
try {
final Field rawMethodMaps = FMLDeobfuscatingRemapper.class.getDeclaredField("rawMethodMaps");
final boolean wasAccessible = rawMethodMaps.isAccessible();
if (!wasAccessible) rawMethodMaps.setAccessible(true);
methodMappings = (Map<String, Map<String, String>>) rawMethodMaps.get(FMLDeobfuscatingRemapper.INSTANCE);
if (!wasAccessible) rawMethodMaps.setAccessible(false);
} catch (IllegalAccessException | NoSuchFieldException e) {
throw new IllegalStateException("Could not access rawMethodMaps of FMLDeobfuscatingRemapper", e);
}
try {
modifiersField = AccessTransformer.class.getDeclaredField("modifiers");
} catch (NoSuchFieldException e) {
throw new IllegalStateException("Could not access modifiers field of AccessTransformer", e);
}
}
public void apply(IClassTransformer modAT) {
final Multimap<String, ?> modifiersMap = getModifiers(modAT);
if (modifiersMap.isEmpty()) return;
modifiersMap.forEach(this::applySingleModifier);
if (modifierDesc != null) {
modifierDesc.setAccessible(false);
modifierDesc = null;
}
if (modifierName != null) {
modifierName.setAccessible(false);
modifierName = null;
}
}
@SuppressWarnings("unchecked")
@Nonnull
private Multimap<String, ?> getModifiers(IClassTransformer modAT) {
final boolean wasAccessible = modifiersField.isAccessible();
if (!wasAccessible) modifiersField.setAccessible(true);
final Multimap<String, ?> modifiersMap; // String to AccessTransformer.Modifier
try {
modifiersMap = (Multimap<String, ?>) modifiersField.get(modAT);
} catch (IllegalAccessException | ClassCastException e) {
throw new IllegalStateException("Could not access modifiers field of " + modAT, e);
} finally {
if (!wasAccessible) modifiersField.setAccessible(false);
}
return modifiersMap;
}
private void applySingleModifier(String className, Object modifier) {
final String classKey = className.replaceAll("\\.", "/");
final String desc, name;
try {
name = getName(modifier);
if (name.equals("*")) return; // doesn't need mapping
desc = getDesc(modifier);
} catch (RuntimeException e) {
e.printStackTrace();
return;
}
if (desc.isEmpty() && fieldMappings.containsKey(classKey)) {
final Map<String, String> classFieldMappings = fieldMappings.get(classKey);
classFieldMappings.keySet().stream()
.filter(obfNameWithType -> obfNameWithType.startsWith(name + ":"))
.findAny()
.ifPresent(obfNameWithType -> {
final String newName = classFieldMappings.get(obfNameWithType);
System.out.printf("Remapping class %s field %s -> %s%n", className, name, newName);
setName(modifier, newName);
});
} else if (methodMappings.containsKey(classKey)) {
final Map<String, String> classMethodMappings = methodMappings.get(classKey);
classMethodMappings.keySet().stream()
.filter(obfNameWithType -> obfNameWithType.startsWith(name + "(") && obfNameWithType.endsWith(desc))
.findAny()
.ifPresent(obfNameWithType -> {
final String newName = classMethodMappings.get(obfNameWithType);
System.out.printf("Remapping class %s method %s %s -> %s%n", className, name, desc, newName);
setName(modifier, newName);
});
}
}
private String getDesc(Object modifier) {
Objects.requireNonNull(modifier, "Modifier may not be null");
ensureModifierDesc(modifier);
try {
return (String) modifierDesc.get(modifier);
} catch (IllegalAccessException e) {
throw new IllegalStateException("Could not access desc field", e);
}
}
private void ensureModifierDesc(@Nonnull Object modifier) {
if (modifierDesc == null) {
try {
modifierDesc = modifier.getClass().getDeclaredField("desc");
} catch (NoSuchFieldException e) {
throw new IllegalStateException("Could not find desc field", e);
}
}
if (!modifierDesc.isAccessible()) modifierDesc.setAccessible(true);
}
private String getName(Object modifier) {
Objects.requireNonNull(modifier, "Modifier may not be null");
ensureModifierName(modifier);
try {
return (String) modifierName.get(modifier);
} catch (IllegalAccessException e) {
throw new IllegalStateException("Could not access name field", e);
}
}
private void setName(Object modifier, String newName) {
Objects.requireNonNull(modifier, "Modifier may not be null");
ensureModifierName(modifier);
try {
modifierName.set(modifier, newName);
} catch (IllegalAccessException e) {
throw new IllegalStateException("Could not access name field", e);
}
}
private void ensureModifierName(@Nonnull Object modifier) {
if (modifierName == null) {
try {
modifierName = modifier.getClass().getDeclaredField("name");
} catch (NoSuchFieldException e) {
throw new IllegalStateException("Could not find name field", e);
}
}
if (!modifierName.isAccessible()) modifierName.setAccessible(true);
}
}
================================================
FILE: common/logisticspipes/asm/ModDependentField.java
================================================
package logisticspipes.asm;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ModDependentField {
String modId();
}
================================================
FILE: common/logisticspipes/asm/ModDependentInterface.java
================================================
package logisticspipes.asm;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface ModDependentInterface {
String[] modId();
String[] interfacePath();
}
================================================
FILE: common/logisticspipes/asm/ModDependentMethod.java
================================================
package logisticspipes.asm;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ModDependentMethod {
String modId();
}
================================================
FILE: common/logisticspipes/asm/ModDependentMethodName.java
================================================
package logisticspipes.asm;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ModDependentMethodName {
String modId();
String newName();
String version();
}
================================================
FILE: common/logisticspipes/asm/ModVersionedClass.java
================================================
package logisticspipes.asm;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface ModVersionedClass {
String modId();
String version(); // Everything below this version will cause the fallback
String classData(); // Fallback class data Base64 encoded
String classDataDev(); // Fallbacl class data Baste64 encoded for dev
}
================================================
FILE: common/logisticspipes/asm/ParamProfiler.java
================================================
package logisticspipes.asm;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Stack;
import java.util.WeakHashMap;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.Label;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.tree.MethodNode;
public class ParamProfiler {
private static final boolean isActive = false;
private static volatile long minMethodId = 0;
public static byte[] handleClass(byte[] bytes) {
if (!isActive) return bytes;
final ClassReader reader = new ClassReader(bytes);
final ClassNode node = new ClassNode();
reader.accept(node, 0);
final String className = node.name;
for (final MethodNode m : node.methods) {
final String methodName = m.name;
final String methodDesc = m.desc;
final boolean isConst = methodName.contains("<") || methodName.contains(">");
if (isConst) continue;
final long methodId = minMethodId++;
final List<String> varList = new ArrayList<>();
if (!methodDesc.startsWith("(")) throw new UnsupportedOperationException(methodDesc);
outer:
for (int i = 1; i < methodDesc.length(); i++) {
switch (methodDesc.charAt(i)) {
case ')':
break outer;
case 'L':
int startA = i;
while (methodDesc.charAt(i) != ';') i++;
varList.add(methodDesc.substring(startA, i + 1));
break;
case '[':
int startB = i;
while (methodDesc.charAt(i) == '[') i++;
if (methodDesc.charAt(i) == 'L') {
while (methodDesc.charAt(i) != ';') i++;
}
varList.add(methodDesc.substring(startB, i + 1));
break;
default:
varList.add(String.valueOf(methodDesc.charAt(i)));
}
}
final List<Label> catchStatement = new ArrayList<>();
MethodNode mv = new MethodNode(Opcodes.ASM4, m.access, m.name, m.desc, m.signature, m.exceptions.toArray(new String[0])) {
@Override
public void visitCode() {
super.visitCode();
Label l0 = new Label();
visitLabel(l0);
visitLdcInsn(new Long(methodId));
visitLdcInsn(className + "+" + methodName + "+" + methodDesc);
if ((m.access & Opcodes.ACC_STATIC) != 0) {
visitInsn(Opcodes.ACONST_NULL);
} else {
visitVarInsn(Opcodes.ALOAD, 0);
}
visitIntInsn(Opcodes.BIPUSH, varList.size());
visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/Object");
int count = 0;
int pos = 0;
if ((m.access & Opcodes.ACC_STATIC) == 0) {
pos = 1;
}
for (String varNode : varList) {
visitInsn(Opcodes.DUP);
visitIntInsn(Opcodes.BIPUSH, count++);
if (!varNode.startsWith("L") && !varNode.startsWith("[")) {
switch (varNode.charAt(0)) {
case 'I':
visitVarInsn(Opcodes.ILOAD, pos);
pos += 1;
visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;", false);
break;
case 'J':
visitVarInsn(Opcodes.LLOAD, pos);
pos += 2;
visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Long", "valueOf", "(J)Ljava/lang/Long;", false);
break;
case 'Z':
visitVarInsn(Opcodes.ILOAD, pos);
pos += 1;
visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Boolean", "valueOf", "(Z)Ljava/lang/Boolean;", false);
break;
case 'B':
visitVarInsn(Opcodes.ILOAD, pos);
pos += 1;
visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Byte", "valueOf", "(B)Ljava/lang/Byte;", false);
break;
case 'C':
visitVarInsn(Opcodes.ILOAD, pos);
pos += 1;
visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Character", "valueOf", "(C)Ljava/lang/Character;", false);
break;
case 'S':
visitVarInsn(Opcodes.ILOAD, pos);
pos += 1;
visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Short", "valueOf", "(S)Ljava/lang/Short;", false);
break;
case 'F':
visitVarInsn(Opcodes.FLOAD, pos);
pos += 1;
visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Float", "valueOf", "(F)Ljava/lang/Float;", false);
break;
case 'D':
visitVarInsn(Opcodes.DLOAD, pos);
pos += 2;
visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Double", "valueOf", "(D)Ljava/lang/Double;", false);
break;
default:
throw new UnsupportedOperationException("'" + varNode + "'");
}
} else {
visitVarInsn(Opcodes.ALOAD, pos);
pos += 1;
}
visitInsn(Opcodes.AASTORE);
}
visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/asm/ParamProfiler", "methodStart", "(JLjava/lang/String;Ljava/lang/Object;[Ljava/lang/Object;)V", false);
}
@Override
public void visitInsn(int opcode) {
if (opcode == Opcodes.RETURN || opcode == Opcodes.IRETURN || opcode == Opcodes.LRETURN || opcode == Opcodes.FRETURN || opcode == Opcodes.DRETURN || opcode == Opcodes.ARETURN) {
visitLdcInsn(new Long(methodId));
visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/asm/ParamProfiler", "methodEnd", "(J)V", false);
}
super.visitInsn(opcode);
}
@Override
public void visitTryCatchBlock(Label start, Label end, Label handler, String type) {
catchStatement.add(handler);
super.visitTryCatchBlock(start, end, handler, type);
}
boolean watchForHandling = false;
@Override
public void visitLabel(Label label) {
watchForHandling = false;
super.visitLabel(label);
if (catchStatement.contains(label)) {
watchForHandling = true;
}
}
@Override
public void visitVarInsn(int opcode, int var) {
super.visitVarInsn(opcode, var);
if (watchForHandling) {
watchForHandling = false;
Label l = new Label();
visitLabel(l);
visitVarInsn(Opcodes.ALOAD, var);
visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/asm/ParamProfiler", "handleException", "(Ljava/lang/Throwable;)V", false);
}
}
};
m.accept(mv);
node.methods.set(node.methods.indexOf(m), mv);
}
ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS);
node.accept(writer);
return writer.toByteArray();
}
private static Map<Thread, Stack<Entry>> stack = new HashMap<>();
@SuppressWarnings("unused") // Used by ASM
public static void methodStart(long id, String name, Object root, Object... params) {
if (!isActive) return;
Stack<Entry> access = stack.get(Thread.currentThread());
if (access == null) {
access = new Stack<>();
stack.put(Thread.currentThread(), access);
}
access.push(new Entry(id, name, root, params));
}
@SuppressWarnings("unused") // Used by ASM
public static void methodEnd(long id) {
if (!isActive) return;
Stack<Entry> access = stack.get(Thread.currentThread());
if (access == null || access.isEmpty()) return;
Entry exit = access.pop();
if (exit.id != id) {
while (!access.isEmpty() && access.peek().id != id) {
access.pop();
}
if (!access.isEmpty()) {
access.pop();
}
}
}
@Getter
private static WeakHashMap<Throwable, ArrayList<Entry>> infoLink = new WeakHashMap<>();
@SuppressWarnings("unused") // Used by ASM
public static void handleException(Throwable t) {
Stack<Entry> access = stack.get(Thread.currentThread());
infoLink.put(t, new ArrayList<>(access));
}
@Data
@AllArgsConstructor
public static class Entry {
private final long id;
private final String name;
private final Object root;
private final Object[] params;
}
}
================================================
FILE: common/logisticspipes/asm/addinfo/IAddInfo.java
================================================
package logisticspipes.asm.addinfo;
public interface IAddInfo {
}
================================================
FILE: common/logisticspipes/asm/addinfo/IAddInfoProvider.java
================================================
package logisticspipes.asm.addinfo;
public interface IAddInfoProvider {
<T extends IAddInfo> T getLogisticsPipesAddInfo(Class<T> clazz);
void setLogisticsPipesAddInfo(IAddInfo info);
}
================================================
FILE: common/logisticspipes/asm/mcmp/ClassBlockMultipartContainerHandler.java
================================================
package logisticspipes.asm.mcmp;
import net.minecraft.launchwrapper.Launch;
import net.minecraftforge.fml.common.FMLCommonHandler;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.tree.MethodNode;
import logisticspipes.asm.util.ASMHelper;
public class ClassBlockMultipartContainerHandler {
public static byte[] handleClass(byte[] bytes) {
try {
Launch.classLoader.findClass("mcmultipart.api.multipart.ITileMultipartContainerProvider");
return bytes;
} catch (ClassNotFoundException ignored) {
}
final ClassReader reader = new ClassReader(bytes);
final ClassNode node = new ClassNode();
reader.accept(node, 0);
boolean noChecksumMatch = false;
final String sumHandleEvent = ASMHelper.getCheckSumForMethod(reader, "getTile", "(Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/math/BlockPos;)Ljava/util/Optional;");
if (!"C755146A0F8F81CCE6637174E17B6D48EC967D59".equals(sumHandleEvent) && !"570C0380BCA4C6B6BBB32CE0D400B8DE13E6D800".equals(sumHandleEvent) && !"D5F32B535E068F8D3B355A81B68C2938A2473D6F".equals(sumHandleEvent)) {
noChecksumMatch = true;
}
if (noChecksumMatch) {
System.out.println("getTile: " + sumHandleEvent);
new UnsupportedOperationException("This LP version isn't compatible with the installed MCMultipart version.").printStackTrace();
FMLCommonHandler.instance().exitJava(1, true);
}
node.methods.stream()
.filter(m -> m.name.equals("getTile") && m.desc.equals("(Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/math/BlockPos;)Ljava/util/Optional;"))
.forEach(m -> {
MethodNode mv = new MethodNode(Opcodes.ASM4, m.access, m.name, m.desc, m.signature, m.exceptions.toArray(new String[0])) {
boolean inserted = false;
@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) {
if (!inserted && opcode == Opcodes.INVOKEINTERFACE && owner.equals("net/minecraft/world/IBlockAccess") && (name.equals("getTileEntity") || name.equals("func_175625_s")) && desc.equals("(Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/tileentity/TileEntity;") && itf) {
super.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/asm/mcmp/MCMPHooks", "getTileEntityForBlockClass", "(Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/tileentity/TileEntity;", false);
inserted = true;
} else {
super.visitMethodInsn(opcode, owner, name, desc, itf);
}
}
};
m.accept(mv);
node.methods.set(node.methods.indexOf(m), mv);
});
ClassWriter writer = new ClassWriter(0/* ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES */);
node.accept(writer);
return writer.toByteArray();
}
}
================================================
FILE: common/logisticspipes/asm/mcmp/MCMPHooks.java
================================================
package logisticspipes.asm.mcmp;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
public class MCMPHooks {
public interface IMCMPGetTEHook {
TileEntity apply(IBlockAccess world, BlockPos pos);
}
public static IMCMPGetTEHook mcmpGetTEHook = IBlockAccess::getTileEntity;
public static TileEntity getTileEntityForBlockClass(IBlockAccess world, BlockPos pos) {
return mcmpGetTEHook.apply(world, pos);
}
}
================================================
FILE: common/logisticspipes/asm/td/ClassRenderDuctItemsHandler.java
================================================
package logisticspipes.asm.td;
import net.minecraftforge.fml.common.FMLCommonHandler;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.Label;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.tree.MethodNode;
import logisticspipes.asm.util.ASMHelper;
public class ClassRenderDuctItemsHandler {
public static byte[] handleRenderDuctItemsClass(byte[] bytes) {
final ClassReader reader = new ClassReader(bytes);
final ClassNode node = new ClassNode();
reader.accept(node, 0);
boolean noChecksumMatch = false;
final String sumHandleEvent = ASMHelper.getCheckSumForMethod(reader, "renderTravelingItems", "(Ljava/util/Iterator;Lcofh/thermaldynamics/duct/item/DuctUnitItem;Lnet/minecraft/world/World;DDDF)V");
if (!"2A56C07E15F612A425E4B4D8C16DEB7545947688".equals(sumHandleEvent) && !"0D05E26AC037D652294BE9923BAC446C87AA6A1D".equals(sumHandleEvent)) {
noChecksumMatch = true;
}
if (noChecksumMatch) {
System.out.println("renderTravelingItems: " + sumHandleEvent);
new UnsupportedOperationException("This LP version isn't compatible with the installed TD version.").printStackTrace();
FMLCommonHandler.instance().exitJava(1, true);
}
node.methods.stream().filter(m -> m.name.equals("renderTravelingItems") && m.desc.equals("(Ljava/util/Iterator;Lcofh/thermaldynamics/duct/item/DuctUnitItem;Lnet/minecraft/world/World;DDDF)V"))
.forEach(m -> {
MethodNode mv = new MethodNode(Opcodes.ASM4, m.access, m.name, m.desc, m.signature, m.exceptions
.toArray(new String[0])) {
@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) {
super.visitMethodInsn(opcode, owner, name, desc, itf);
if (owner.equals("net/minecraft/client/renderer/GlStateManager") && (name.equals("scale") || name.equals("func_179152_a")) && desc
.equals("(FFF)V")) {
Label l = new Label();
visitLabel(l);
visitVarInsn(Opcodes.ALOAD, 11);
this.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/asm/td/ThermalDynamicsHooks", "renderItemTransportBox", "(Lcofh/thermaldynamics/duct/item/TravelingItem;)V", false);
}
}
};
m.accept(mv);
node.methods.set(node.methods.indexOf(m), mv);
});
ClassWriter writer = new ClassWriter(0/*ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES*/);
node.accept(writer);
return writer.toByteArray();
}
}
================================================
FILE: common/logisticspipes/asm/td/ClassTravelingItemHandler.java
================================================
package logisticspipes.asm.td;
import net.minecraftforge.fml.common.FMLCommonHandler;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.FieldVisitor;
import org.objectweb.asm.Label;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.tree.MethodNode;
import logisticspipes.asm.util.ASMHelper;
public class ClassTravelingItemHandler {
public static byte[] handleTravelingItemClass(byte[] bytes) {
final ClassReader reader = new ClassReader(bytes);
final ClassNode node = new ClassNode();
reader.accept(node, 0);
boolean noChecksumMatch = false;
String sumHandleEvent1 = ASMHelper.getCheckSumForMethod(reader, "toNBT", "(Lnet/minecraft/nbt/NBTTagCompound;)V");
String sumHandleEvent2 = ASMHelper.getCheckSumForMethod(reader, "<init>", "(Lnet/minecraft/nbt/NBTTagCompound;)V");
String sumHandleEvent3 = ASMHelper.getCheckSumForMethod(reader, "writePacket", "(Lcofh/core/network/PacketBase;)V");
if (!"512A30E22A9C24032AAE7CE51271339A4F68D344".equals(sumHandleEvent1) &&
!"2166AB8FF647A90701787CCCFB4CD1C065BE640D".equals(sumHandleEvent1)) {
noChecksumMatch = true;
}
if (!"E8DD6BEB9676D079E6C97FF8206283E766147E45".equals(sumHandleEvent2) &&
!"BB4178915C3A10EBAC5158B8742592388E47B181".equals(sumHandleEvent2) &&
!"0151577E2B8CF9BF2D528A309D5AE919308ABE03".equals(sumHandleEvent2) &&
!"768681BA4851C581B15713ED3FF9CA6530C24931".equals(sumHandleEvent2)) {
noChecksumMatch = true;
}
if (!"98A853547FA1771D6D7D63E0458960405DFEE092".equals(sumHandleEvent3)) {
noChecksumMatch = true;
}
if (noChecksumMatch) {
System.out.println("toNBT: " + sumHandleEvent1);
System.out.println("<init>: " + sumHandleEvent2);
System.out.println("writePacket: " + sumHandleEvent3);
new UnsupportedOperationException("This LP version isn't compatible with the installed TD version.").printStackTrace();
FMLCommonHandler.instance().exitJava(1, true);
}
node.interfaces.add("logisticspipes/asm/td/ILPTravelingItemInfo");
{
FieldVisitor fv = node.visitField(Opcodes.ACC_PUBLIC, "lpRoutingInformation", "Ljava/lang/Object;", null, null);
fv.visitEnd();
}
{
MethodVisitor mv;
mv = node.visitMethod(Opcodes.ACC_PUBLIC, "getLPRoutingInfoAddition", "()Ljava/lang/Object;", null, null);
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
mv.visitLineNumber(23, l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, "cofh/thermaldynamics/duct/item/TravelingItem", "lpRoutingInformation", "Ljava/lang/Object;");
mv.visitInsn(Opcodes.ARETURN);
Label l1 = new Label();
mv.visitLabel(l1);
mv.visitLocalVariable("this", "Lcofh/thermaldynamics/duct/item/TravelingItem;", null, l0, l1, 0);
mv.visitMaxs(1, 1);
mv.visitEnd();
}
{
MethodVisitor mv;
mv = node.visitMethod(Opcodes.ACC_PUBLIC, "setLPRoutingInfoAddition", "(Ljava/lang/Object;)V", null, null);
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
mv.visitLineNumber(28, l0);
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitVarInsn(Opcodes.ALOAD, 1);
mv.visitFieldInsn(Opcodes.PUTFIELD, "cofh/thermaldynamics/duct/item/TravelingItem", "lpRoutingInformation", "Ljava/lang/Object;");
Label l1 = new Label();
mv.visitLabel(l1);
mv.visitLineNumber(29, l1);
mv.visitInsn(Opcodes.RETURN);
Label l2 = new Label();
mv.visitLabel(l2);
mv.visitLocalVariable("this", "Lcofh/thermaldynamics/duct/item/TravelingItem;", null, l0, l2, 0);
mv.visitLocalVariable("info", "Ljava/lang/Object;", null, l0, l2, 1);
mv.visitMaxs(2, 2);
mv.visitEnd();
}
for (MethodNode m : node.methods) {
if (m.name.equals("toNBT") && m.desc.equals("(Lnet/minecraft/nbt/NBTTagCompound;)V")) {
MethodNode mv = new MethodNode(Opcodes.ASM4, m.access, m.name, m.desc, m.signature, m.exceptions.toArray(new String[0])) {
@Override
public void visitCode() {
super.visitCode();
Label l = new Label();
visitLabel(l);
visitVarInsn(Opcodes.ALOAD, 0);
visitVarInsn(Opcodes.ALOAD, 1);
this.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/asm/td/ThermalDynamicsHooks", "travelingItemToNBT", "(Lcofh/thermaldynamics/duct/item/TravelingItem;Lnet/minecraft/nbt/NBTTagCompound;)V", false);
}
};
m.accept(mv);
node.methods.set(node.methods.indexOf(m), mv);
}
if (m.name.equals("<init>") && m.desc.equals("(Lnet/minecraft/nbt/NBTTagCompound;)V")) {
MethodNode mv = new MethodNode(Opcodes.ASM4, m.access, m.name, m.desc, m.signature, m.exceptions.toArray(new String[0])) {
@Override
public void visitInsn(int opcode) {
if (opcode == Opcodes.RETURN) {
visitVarInsn(Opcodes.ALOAD, 0);
visitVarInsn(Opcodes.ALOAD, 1);
this.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/asm/td/ThermalDynamicsHooks", "travelingItemNBTContructor", "(Lcofh/thermaldynamics/duct/item/TravelingItem;Lnet/minecraft/nbt/NBTTagCompound;)V", false);
Label l = new Label();
visitLabel(l);
}
super.visitInsn(opcode);
}
};
m.accept(mv);
node.methods.set(node.methods.indexOf(m), mv);
}
if (m.name.equals("writePacket") && m.desc.equals("(Lcofh/core/network/PacketBase;)V")) {
MethodNode mv = new MethodNode(Opcodes.ASM4, m.access, m.name, m.desc, m.signature, m.exceptions.toArray(new String[0])) {
@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) {
if (opcode == Opcodes.INVOKEVIRTUAL && "cofh/core/network/PacketBase".equals(owner) && "addItemStack".equals(name) && "(Lnet/minecraft/item/ItemStack;)Lcofh/core/network/PacketBase;".equals(desc)) {
visitVarInsn(Opcodes.ALOAD, 0);
this.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/asm/td/ThermalDynamicsHooks", "handleItemSendPacket", "(Lnet/minecraft/item/ItemStack;Lcofh/thermaldynamics/duct/item/TravelingItem;)Lnet/minecraft/item/ItemStack;", false);
}
super.visitMethodInsn(opcode, owner, name, desc, itf);
}
};
m.accept(mv);
node.methods.set(node.methods.indexOf(m), mv);
}
}
ClassWriter writer = new ClassWriter(0/*ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES*/);
node.accept(writer);
return writer.toByteArray();
}
}
================================================
FILE: common/logisticspipes/asm/td/ILPTravelingItemInfo.java
================================================
package logisticspipes.asm.td;
public interface ILPTravelingItemInfo {
Object getLPRoutingInfoAddition();
void setLPRoutingInfoAddition(Object info);
}
================================================
FILE: common/logisticspipes/asm/td/ThermalDynamicsHooks.java
================================================
package logisticspipes.asm.td;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import cofh.thermaldynamics.duct.item.TravelingItem;
import logisticspipes.renderer.LogisticsRenderPipe;
import logisticspipes.routing.ItemRoutingInformation;
public class ThermalDynamicsHooks {
public static void travelingItemToNBT(TravelingItem travelingItem, NBTTagCompound paramNBTTagCompound) {
if (((ILPTravelingItemInfo) travelingItem).getLPRoutingInfoAddition() != null) {
NBTTagCompound save = new NBTTagCompound();
((ItemRoutingInformation) ((ILPTravelingItemInfo) travelingItem).getLPRoutingInfoAddition()).writeToNBT(save);
paramNBTTagCompound.setTag("LPRoutingInformation", save);
}
}
public static void travelingItemNBTContructor(TravelingItem travelingItem, NBTTagCompound paramNBTTagCompound) {
if (!paramNBTTagCompound.hasKey("LPRoutingInformation")) {
return;
}
((ILPTravelingItemInfo) travelingItem).setLPRoutingInfoAddition(new ItemRoutingInformation());
((ItemRoutingInformation) ((ILPTravelingItemInfo) travelingItem).getLPRoutingInfoAddition()).readFromNBT(paramNBTTagCompound.getCompoundTag("LPRoutingInformation"));
}
public static void renderItemTransportBox(TravelingItem item) {
if (item.stack.hasTagCompound()) {
if (item.stack.getTagCompound().getString("LogsitcsPipes_ITEM_ON_TRANSPORTATION").equals("YES")) {
double scale = 0.59 / 0.6;
LogisticsRenderPipe.boxRenderer.doRenderItem(ItemStack.EMPTY, 10, 0, 0, 0, scale, 0, 0, 0);
}
}
}
public static ItemStack handleItemSendPacket(ItemStack stack, TravelingItem item) {
if (item.stack == null || item.stack.isEmpty()) {
return null;
}
if (((ILPTravelingItemInfo) item).getLPRoutingInfoAddition() != null) {
stack = stack.copy();
if (!stack.hasTagCompound()) {
stack.setTagCompound(new NBTTagCompound());
}
stack.getTagCompound().setString("LogsitcsPipes_ITEM_ON_TRANSPORTATION", "YES");
}
return stack;
}
}
================================================
FILE: common/logisticspipes/asm/te/ILPTEInformation.java
================================================
package logisticspipes.asm.te;
public interface ILPTEInformation {
LPTileEntityObject getLPTileEntityObject();
void setLPTileEntityObject(LPTileEntityObject object);
}
================================================
FILE: common/logisticspipes/asm/te/ITileEntityChangeListener.java
================================================
package logisticspipes.asm.te;
import net.minecraft.util.EnumFacing;
import network.rs485.logisticspipes.world.DoubleCoordinates;
public interface ITileEntityChangeListener {
void pipeRemoved(DoubleCoordinates pos);
void pipeAdded(DoubleCoordinates pos, EnumFacing side);
}
================================================
FILE: common/logisticspipes/asm/te/LPTileEntityObject.java
================================================
package logisticspipes.asm.te;
import java.util.ArrayList;
import java.util.List;
import logisticspipes.utils.CacheHolder;
import logisticspipes.utils.CacheHolder.CacheTypes;
public class LPTileEntityObject {
public List<ITileEntityChangeListener> changeListeners = new ArrayList<>();
public long initialised = 0;
private CacheHolder cacheHolder;
public CacheHolder getCacheHolder() {
if (cacheHolder == null) {
cacheHolder = new CacheHolder();
}
return cacheHolder;
}
public void trigger(CacheTypes type) {
if (cacheHolder != null) {
getCacheHolder().trigger(type);
}
}
}
================================================
FILE: common/logisticspipes/asm/util/ASMHelper.java
================================================
package logisticspipes.asm.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringReader;
import java.io.StringWriter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.objectweb.asm.Attribute;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.Handle;
import org.objectweb.asm.Label;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.util.Printer;
import org.objectweb.asm.util.Textifier;
import org.objectweb.asm.util.TraceClassVisitor;
public class ASMHelper {
private static final String HEXES = "0123456789ABCDEF";
public static String getContentForMethod(ClassReader classReader, String methodName, boolean newLine) {
return ASMHelper.getContentForMethod(classReader, methodName, "", newLine);
}
public static String getContentForMethod(ClassReader classReader, String methodName, String desc, boolean newLine) {
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
TraceClassVisitor traceClassVisitor = new TraceClassVisitor(null, new MethodTextifier(), printWriter);
FilterClassVisitor myClassVisitor = new FilterClassVisitor(traceClassVisitor, methodName, desc);
classReader.accept(myClassVisitor, ClassReader.SKIP_DEBUG);
BufferedReader reader = new BufferedReader(new StringReader(stringWriter.toString()));
StringBuilder builder = new StringBuilder();
String line;
try {
while ((line = reader.readLine()) != null) {
line = line.trim();
String oldLine = line;
line += " ";
while (!oldLine.equals(line)) {
oldLine = line;
line = line.trim();
line = line.replace("\t", " ");
line = line.replace(" ", " ");
}
builder.append(" ");
builder.append(line);
if (newLine) {
builder.append(System.lineSeparator());
}
}
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
}
public static String getCheckSumForMethod(ClassReader classReader, String methodName) {
return ASMHelper.getCheckSumForMethod(classReader, methodName, "");
}
public static String getCheckSumForMethod(ClassReader classReader, String methodName, String desc) {
String result = ASMHelper.getContentForMethod(classReader, methodName, desc, false);
if (result.isEmpty()) {
throw new NoSuchMethodError();
}
return ASMHelper.toSHA1(result.getBytes());
}
public static String toSHA1(byte[] convertme) {
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA-1");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return ASMHelper.getHex(md.digest(convertme));
}
private static String getHex(byte[] raw) {
if (raw == null) {
return null;
}
final StringBuilder hex = new StringBuilder(2 * raw.length);
for (final byte b : raw) {
hex.append(ASMHelper.HEXES.charAt((b & 0xF0) >> 4)).append(ASMHelper.HEXES.charAt((b & 0x0F)));
}
return hex.toString();
}
private static class FilterClassVisitor extends ClassVisitor {
private final String methodName;
private final String methodDesc;
public FilterClassVisitor(TraceClassVisitor traceClassVisitor, String methodName, String desc) {
super(Opcodes.ASM4, traceClassVisitor);
this.methodName = methodName;
methodDesc = desc;
}
@Override
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
if (methodName.equals(name) && (methodDesc.isEmpty() || methodDesc.equals(desc))) {
return new FilterMaxVisitMethodVisitor(super.visitMethod(access, name, desc, signature, exceptions));
}
return null;
}
}
private static class FilterMaxVisitMethodVisitor extends MethodVisitor {
public FilterMaxVisitMethodVisitor(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
@Override
public void visitMaxs(int maxStack, int maxLocals) {}
}
private static class MethodTextifier extends Printer {
public MethodTextifier() {
super(Opcodes.ASM4);
}
@Override
public void visit(final int version, final int access, final String name, final String signature, final String superName, final String[] interfaces) {}
@Override
public void visitSource(final String file, final String debug) {}
@Override
public void visitOuterClass(final String owner, final String name, final String desc) {}
@Override
public Textifier visitClassAnnotation(final String desc, final boolean visible) {
return new Textifier();
}
@Override
public void visitClassAttribute(final Attribute attr) {}
@Override
public void visitInnerClass(final String name, final String outerName, final String innerName, final int access) {}
@Override
public Textifier visitField(final int access, final String name, final String desc, final String signature, final Object value) {
return new Textifier();
}
@Override
public Textifier visitMethod(final int access, final String name, final String desc, final String signature, final String[] exceptions) {
Textifier t = new Textifier();
text.add(t.getText());
return t;
}
@Override
public void visitClassEnd() {}
@Override
public void visit(final String name, final Object value) {}
@Override
public void visitEnum(final String name, final String desc, final String value) {}
@Override
public Textifier visitAnnotation(final String name, final String desc) {
return new Textifier();
}
@Override
public Textifier visitArray(final String name) {
return new Textifier();
}
@Override
public void visitAnnotationEnd() {}
@Override
public Textifier visitFieldAnnotation(final String desc, final boolean visible) {
return new Textifier();
}
@Override
public void visitFieldAttribute(final Attribute attr) {
visitAttribute(attr);
}
@Override
public void visitFieldEnd() {}
@Override
public Textifier visitAnnotationDefault() {
return new Textifier();
}
@Override
public Textifier visitMethodAnnotation(final String desc, final boolean visible) {
return new Textifier();
}
@Override
public Textifier visitParameterAnnotation(final int parameter, final String desc, final boolean visible) {
return new Textifier();
}
@Override
public void visitMethodAttribute(final Attribute attr) {}
@Override
public void visitCode() {}
@Override
public void visitFrame(final int type, final int nLocal, final Object[] local, final int nStack, final Object[] stack) {}
@Override
public void visitInsn(final int opcode) {}
@Override
public void visitIntInsn(final int opcode, final int operand) {}
@Override
public void visitVarInsn(final int opcode, final int var) {}
@Override
public void visitTypeInsn(final int opcode, final String type) {}
@Override
public void visitFieldInsn(final int opcode, final String owner, final String name, final String desc) {}
@Override
public void visitMethodInsn(final int opcode, final String owner, final String name, final String desc) {}
@Override
public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs) {}
@Override
public void visitJumpInsn(final int opcode, final Label label) {}
@Override
public void visitLabel(final Label label) {}
@Override
public void visitLdcInsn(final Object cst) {}
@Override
public void visitIincInsn(final int var, final int increment) {}
@Override
public void visitTableSwitchInsn(final int min, final int max, final Label dflt, final Label... labels) {}
@Override
public void visitLookupSwitchInsn(final Label dflt, final int[] keys, final Label[] labels) {}
@Override
public void visitMultiANewArrayInsn(final String desc, final int dims) {}
@Override
public void visitTryCatchBlock(final Label start, final Label end, final Label handler, final String type) {}
@Override
public void visitLocalVariable(final String name, final String desc, final String signature, final Label start, final Label end, final int index) {}
@Override
public void visitLineNumber(final int line, final Label start) {}
@Override
public void visitMaxs(final int maxStack, final int maxLocals) {}
@Override
public void visitMethodEnd() {}
public void visitAttribute(final Attribute attr) {}
}
}
================================================
FILE: common/logisticspipes/asm/wrapper/AbstractSubWrapper.java
================================================
package logisticspipes.asm.wrapper;
import java.util.List;
public abstract class AbstractSubWrapper extends AbstractWrapper {
private final AbstractWrapper originalWrapper;
public AbstractSubWrapper(AbstractWrapper wrapper) {
originalWrapper = wrapper;
}
@Override
protected final boolean isEnabled() {
return originalWrapper.isEnabled();
}
@Override
protected final boolean canTryAnyway() {
return originalWrapper.canTryAnyway();
}
@Override
public void handleException(Throwable e) {
originalWrapper.handleException(e);
}
@Override
public String getName() {
return originalWrapper.getName();
}
@Override
public String getTypeName() {
return originalWrapper.getTypeName();
}
@Override
public WrapperState getState() {
return originalWrapper.getState();
}
@Override
public Throwable getReason() {
return originalWrapper.getReason();
}
@Override
public String getModId() {
return originalWrapper.getModId();
}
@Override
public List<Class<?>> getWrapperInterfaces() {
return originalWrapper.getWrapperInterfaces();
}
@Override
public void reEnable() {
originalWrapper.reEnable();
}
}
================================================
FILE: common/logisticspipes/asm/wrapper/AbstractWrapper.java
================================================
package logisticspipes.asm.wrapper;
import java.util.List;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import lombok.SneakyThrows;
import logisticspipes.LogisticsPipes;
import logisticspipes.proxy.MainProxy;
import logisticspipes.utils.string.ChatColor;
public abstract class AbstractWrapper {
@Getter
@Setter(value = AccessLevel.PACKAGE)
protected WrapperState state = WrapperState.Enabled;
@Getter
@Setter(value = AccessLevel.PACKAGE)
private Throwable reason;
@Getter
@Setter(value = AccessLevel.PACKAGE)
private String modId;
@Getter
@Setter(value = AccessLevel.PACKAGE)
private List<Class<?>> wrapperInterfaces;
@SneakyThrows(Throwable.class)
public void handleException(Throwable e) {
if (!isEnabled()) {
if (LogisticsPipes.isDEBUG()) {
e.printStackTrace();
}
return;
}
if (LogisticsPipes.isDEBUG()) {
throw e;
}
e.printStackTrace();
state = WrapperState.Exception;
reason = e;
String message = "Disabled " + getName() + getTypeName() + (modId != null ? (" for Mod: " + modId) : "") + ". Cause was an Exception";
LogisticsPipes.log.fatal(message);
MainProxy.proxy.sendBroadCast(ChatColor.RED + message);
}
public void reEnable() {
if (state != WrapperState.Exception) {
return;
}
state = WrapperState.Enabled;
reason = null;
}
protected boolean isEnabled() {
return state == WrapperState.Enabled;
}
protected boolean canTryAnyway() {
return state != WrapperState.ModMissing;
}
public abstract String getName();
public abstract String getTypeName();
}
================================================
FILE: common/logisticspipes/asm/wrapper/CraftingRecipeProviderWrapper.java
================================================
package lo
gitextract_3aq3x4ml/
├── .editorconfig
├── .gitattributes
├── .gitignore
├── .idea/
│ ├── .name
│ ├── codeInsightSettings.xml
│ ├── codeStyles/
│ │ ├── Project.xml
│ │ └── codeStyleConfig.xml
│ ├── copyright/
│ │ ├── RS485_Dual_MIT_MMPL.xml
│ │ └── profiles_settings.xml
│ ├── encodings.xml
│ ├── externalAnnotations/
│ │ └── net/
│ │ └── minecraft/
│ │ ├── block/
│ │ │ └── state/
│ │ │ └── annotations.xml
│ │ ├── client/
│ │ │ └── gui/
│ │ │ └── inventory/
│ │ │ └── annotations.xml
│ │ ├── item/
│ │ │ └── annotations.xml
│ │ └── world/
│ │ └── annotations.xml
│ ├── inspectionProfiles/
│ │ └── Project_Default.xml
│ ├── kotlinc.xml
│ ├── libraries-with-intellij-classes.xml
│ └── scopes/
│ └── network_rs485_package.xml
├── .travis.yml
├── BUILDING.md
├── LICENSE.md
├── README.md
├── build.gradle
├── common/
│ └── logisticspipes/
│ ├── LPBlocks.java
│ ├── LPConstants.java
│ ├── LPItems.java
│ ├── LogisticsEventListener.java
│ ├── LogisticsPipes.java
│ ├── api/
│ │ ├── IHUDArmor.java
│ │ ├── ILPPipe.java
│ │ ├── ILPPipeConfigTool.java
│ │ ├── ILPPipeTile.java
│ │ ├── ILogisticsPowerProvider.java
│ │ ├── IProgressProvider.java
│ │ └── IRoutedPowerProvider.java
│ ├── asm/
│ │ ├── ClientSideOnlyMethodContent.java
│ │ ├── IgnoreDisabledProxy.java
│ │ ├── LogisticsASMHookClass.java
│ │ ├── LogisticsClassTransformer.java
│ │ ├── LogisticsPipesClassInjector.java
│ │ ├── LogisticsPipesCoreLoader.java
│ │ ├── ModAccessTransformerRemapper.java
│ │ ├── ModDependentField.java
│ │ ├── ModDependentInterface.java
│ │ ├── ModDependentMethod.java
│ │ ├── ModDependentMethodName.java
│ │ ├── ModVersionedClass.java
│ │ ├── ParamProfiler.java
│ │ ├── addinfo/
│ │ │ ├── IAddInfo.java
│ │ │ └── IAddInfoProvider.java
│ │ ├── mcmp/
│ │ │ ├── ClassBlockMultipartContainerHandler.java
│ │ │ └── MCMPHooks.java
│ │ ├── td/
│ │ │ ├── ClassRenderDuctItemsHandler.java
│ │ │ ├── ClassTravelingItemHandler.java
│ │ │ ├── ILPTravelingItemInfo.java
│ │ │ └── ThermalDynamicsHooks.java
│ │ ├── te/
│ │ │ ├── ILPTEInformation.java
│ │ │ ├── ITileEntityChangeListener.java
│ │ │ └── LPTileEntityObject.java
│ │ ├── util/
│ │ │ └── ASMHelper.java
│ │ └── wrapper/
│ │ ├── AbstractSubWrapper.java
│ │ ├── AbstractWrapper.java
│ │ ├── CraftingRecipeProviderWrapper.java
│ │ ├── GenericLPPipeConfigToolWrapper.java
│ │ ├── GenericProgressProviderWrapper.java
│ │ ├── LogisticsWrapperHandler.java
│ │ └── WrapperState.java
│ ├── blocks/
│ │ ├── BlockDummy.java
│ │ ├── LogisticsProgramCompilerTileEntity.java
│ │ ├── LogisticsSecurityTileEntity.java
│ │ ├── LogisticsSolidBlock.java
│ │ ├── LogisticsSolidTileEntity.java
│ │ ├── crafting/
│ │ │ ├── AutoCraftingInventory.java
│ │ │ └── LogisticsCraftingTableTileEntity.java
│ │ ├── powertile/
│ │ │ ├── LogisticsIC2PowerProviderTileEntity.java
│ │ │ ├── LogisticsPowerJunctionTileEntity.java
│ │ │ ├── LogisticsPowerProviderTileEntity.java
│ │ │ └── LogisticsRFPowerProviderTileEntity.java
│ │ └── stats/
│ │ ├── LogisticsStatisticsTileEntity.java
│ │ └── TrackingTask.java
│ ├── commands/
│ │ ├── LogisticsPipesCommand.java
│ │ ├── MainCommandHandler.java
│ │ ├── abstracts/
│ │ │ ├── ICommandHandler.java
│ │ │ └── SubCommandHandler.java
│ │ ├── chathelper/
│ │ │ ├── LPChatListener.java
│ │ │ └── MorePageDisplay.java
│ │ ├── commands/
│ │ │ ├── BypassCommand.java
│ │ │ ├── ChangelogCommand.java
│ │ │ ├── ClearCommand.java
│ │ │ ├── DebugCommand.java
│ │ │ ├── DummyCommand.java
│ │ │ ├── DumpCommand.java
│ │ │ ├── NBTDebugCommand.java
│ │ │ ├── NameLookupCommand.java
│ │ │ ├── RoutingThreadCommand.java
│ │ │ ├── TestCommand.java
│ │ │ ├── TransferNamesCommand.java
│ │ │ ├── VersionCommand.java
│ │ │ ├── WrapperCommand.java
│ │ │ ├── debug/
│ │ │ │ ├── DebugGuiController.java
│ │ │ │ ├── HandCommand.java
│ │ │ │ ├── MeCommand.java
│ │ │ │ ├── PipeCommand.java
│ │ │ │ ├── RoutingTableCommand.java
│ │ │ │ └── TargetCommand.java
│ │ │ └── wrapper/
│ │ │ ├── EnableCommand.java
│ │ │ ├── ListCommand.java
│ │ │ └── ShowCommand.java
│ │ └── exception/
│ │ ├── CommandNotFoundException.java
│ │ ├── DuplicatedCommandException.java
│ │ ├── LPCommandException.java
│ │ ├── MissingArgumentException.java
│ │ └── PermissionDeniedException.java
│ ├── config/
│ │ └── Configs.java
│ ├── datafixer/
│ │ ├── DataFixerSolidBlockItems.java
│ │ ├── DataFixerTE.java
│ │ ├── LPDataFixer.java
│ │ └── MissingMappingHandler.java
│ ├── entity/
│ │ ├── FakeNetServerHandler.java
│ │ └── FakePlayerLP.java
│ ├── gui/
│ │ ├── GuiCardManager.java
│ │ ├── GuiChassisPipe.java
│ │ ├── GuiCraftingPipe.java
│ │ ├── GuiFirewall.java
│ │ ├── GuiFluidBasic.java
│ │ ├── GuiFluidSupplierMk2Pipe.java
│ │ ├── GuiFluidSupplierPipe.java
│ │ ├── GuiFluidTerminus.java
│ │ ├── GuiFreqCardContent.java
│ │ ├── GuiInvSysConnector.java
│ │ ├── GuiLogisticsCraftingTable.java
│ │ ├── GuiLogisticsSettings.java
│ │ ├── GuiPipeController.java
│ │ ├── GuiPowerJunction.java
│ │ ├── GuiPowerProvider.java
│ │ ├── GuiProgramCompiler.java
│ │ ├── GuiSatellitePipe.java
│ │ ├── GuiSecurityStation.java
│ │ ├── GuiStatistics.java
│ │ ├── GuiSupplierPipe.java
│ │ ├── ItemAmountSignCreationGui.java
│ │ ├── hud/
│ │ │ ├── BasicHUDGui.java
│ │ │ ├── GuiHUDSettings.java
│ │ │ ├── HUDCrafting.java
│ │ │ ├── HUDInvSysConnector.java
│ │ │ ├── HUDPowerLevel.java
│ │ │ ├── HUDProvider.java
│ │ │ ├── HUDSatellite.java
│ │ │ ├── HudChassisPipe.java
│ │ │ └── modules/
│ │ │ ├── HUDAdvancedExtractor.java
│ │ │ ├── HUDItemSink.java
│ │ │ ├── HUDOreDictItemSink.java
│ │ │ ├── HUDProviderModule.java
│ │ │ ├── HUDSimpleFilterModule.java
│ │ │ └── HUDStringBasedItemSink.java
│ │ ├── modules/
│ │ │ ├── GuiAdvancedExtractor.java
│ │ │ ├── GuiFluidSupplier.java
│ │ │ ├── GuiOreDictItemSink.java
│ │ │ ├── GuiSimpleFilter.java
│ │ │ ├── GuiSneakyConfigurator.java
│ │ │ ├── GuiStringBasedItemSink.java
│ │ │ └── ModuleBaseGui.java
│ │ ├── orderer/
│ │ │ ├── FluidGuiOrderer.java
│ │ │ ├── GuiOrderer.java
│ │ │ ├── GuiRequestTable.java
│ │ │ ├── NormalGuiOrderer.java
│ │ │ └── NormalMk2GuiOrderer.java
│ │ └── popup/
│ │ ├── ActionChoicePopup.java
│ │ ├── DisconnectionConfigurationPopup.java
│ │ ├── GuiAddChannelPopup.java
│ │ ├── GuiAddMacro.java
│ │ ├── GuiAddTracking.java
│ │ ├── GuiDiskPopup.java
│ │ ├── GuiEditCCAccessTable.java
│ │ ├── GuiEditChannelPopup.java
│ │ ├── GuiManageChannelPopup.java
│ │ ├── GuiMessagePopup.java
│ │ ├── GuiRecipeImport.java
│ │ ├── GuiRequestPopup.java
│ │ ├── GuiSecurityStationPopup.java
│ │ ├── GuiSelectChannelPopup.java
│ │ ├── GuiSelectSatellitePopup.java
│ │ ├── RequestMonitorPopup.java
│ │ ├── SelectItemOutOfList.java
│ │ └── SneakyConfigurationPopup.java
│ ├── hud/
│ │ └── HUDConfig.java
│ ├── interfaces/
│ │ ├── IBlockWatchingHandler.java
│ │ ├── IBufferItems.java
│ │ ├── IChainAddList.java
│ │ ├── IChangeListener.java
│ │ ├── IChestContentReceiver.java
│ │ ├── IClientInformationProvider.java
│ │ ├── IClientState.java
│ │ ├── IDebugHUDProvider.java
│ │ ├── IDiskProvider.java
│ │ ├── IFuzzySlot.java
│ │ ├── IGUIChannelInformationReceiver.java
│ │ ├── IGuiOpenControler.java
│ │ ├── IGuiTileEntity.java
│ │ ├── IHUDButton.java
│ │ ├── IHUDConfig.java
│ │ ├── IHUDModuleHandler.java
│ │ ├── IHUDModuleRenderer.java
│ │ ├── IHeadUpDisplayBlockRendererProvider.java
│ │ ├── IHeadUpDisplayRenderer.java
│ │ ├── IHeadUpDisplayRendererProvider.java
│ │ ├── IInventoryUtil.java
│ │ ├── IItemAdvancedExistance.java
│ │ ├── ILPItemAcceptor.java
│ │ ├── ILPPositionProvider.java
│ │ ├── ILegacyActiveModule.java
│ │ ├── ILogisticsItem.java
│ │ ├── IModuleInventoryReceive.java
│ │ ├── IModuleWatchReciver.java
│ │ ├── IOrderManagerContentReceiver.java
│ │ ├── IPipeServiceProvider.java
│ │ ├── IPipeUpgradeManager.java
│ │ ├── IPowerLevelDisplay.java
│ │ ├── IQueueCCEvent.java
│ │ ├── IRequestWatcher.java
│ │ ├── IRotationProvider.java
│ │ ├── IRoutingDebugAdapter.java
│ │ ├── ISecurityProvider.java
│ │ ├── ISecurityStationManager.java
│ │ ├── ISendQueueContentRecieiver.java
│ │ ├── ISendRoutedItem.java
│ │ ├── ISlotCheck.java
│ │ ├── ISlotClick.java
│ │ ├── ISlotUpgradeManager.java
│ │ ├── ISpawnParticles.java
│ │ ├── ISpecialInsertion.java
│ │ ├── ISpecialItemRenderer.java
│ │ ├── ISpecialTankAccessHandler.java
│ │ ├── ISpecialTankHandler.java
│ │ ├── ISpecialTankUtil.java
│ │ ├── IStringBasedModule.java
│ │ ├── ISubSystemPowerProvider.java
│ │ ├── ITankUtil.java
│ │ ├── ITileEntityPart.java
│ │ ├── ITubeOrientation.java
│ │ ├── ITubeRenderOrientation.java
│ │ ├── IWatchingHandler.java
│ │ ├── IWorldProvider.java
│ │ ├── PlayerListReciver.java
│ │ └── routing/
│ │ ├── IAdditionalTargetInformation.java
│ │ ├── IChannelConnectionManager.java
│ │ ├── IChannelManager.java
│ │ ├── IChannelManagerProvider.java
│ │ ├── IChannelRoutingConnection.java
│ │ ├── ICraft.java
│ │ ├── ICraftItems.java
│ │ ├── IFilter.java
│ │ ├── IFilteringPipe.java
│ │ ├── IFluidSink.java
│ │ ├── IItemSpaceControl.java
│ │ ├── IProvide.java
│ │ ├── IProvideFluids.java
│ │ ├── IProvideItems.java
│ │ ├── IRequest.java
│ │ ├── IRequestFluid.java
│ │ ├── IRequestItems.java
│ │ ├── IRequireReliableFluidTransport.java
│ │ ├── IRequireReliableTransport.java
│ │ ├── ISpecialPipedConnection.java
│ │ ├── ISpecialTileConnection.java
│ │ └── ITargetSlotInformation.java
│ ├── items/
│ │ ├── ItemBlankModule.java
│ │ ├── ItemDisk.java
│ │ ├── ItemHUDArmor.java
│ │ ├── ItemLogisticsChips.java
│ │ ├── ItemLogisticsPipe.java
│ │ ├── ItemLogisticsProgrammer.java
│ │ ├── ItemModule.java
│ │ ├── ItemParts.java
│ │ ├── ItemPipeController.java
│ │ ├── ItemPipeManager.java
│ │ ├── ItemPipeSignCreator.java
│ │ ├── ItemUpgrade.java
│ │ ├── LogisticsBrokenItem.java
│ │ ├── LogisticsFluidContainer.java
│ │ ├── LogisticsItem.java
│ │ ├── LogisticsItemCard.java
│ │ ├── LogisticsSolidBlockItem.java
│ │ └── RemoteOrderer.java
│ ├── logic/
│ │ ├── BaseLogicConnection.java
│ │ ├── BaseLogicTask.java
│ │ ├── LogicController.java
│ │ ├── LogicParameterType.java
│ │ ├── gui/
│ │ │ └── LogicLayoutGui.java
│ │ └── interfaces/
│ │ └── ILogicControllerTile.java
│ ├── logistics/
│ │ ├── ILogisticsFluidManager.java
│ │ ├── ILogisticsManager.java
│ │ ├── LogisticsFluidManager.java
│ │ └── LogisticsManager.java
│ ├── logisticspipes/
│ │ ├── ChassisTransportLayer.java
│ │ ├── IRoutedItem.java
│ │ ├── ITrackStatistics.java
│ │ ├── ItemModuleInformationManager.java
│ │ ├── PipeTransportLayer.java
│ │ ├── RouteLayer.java
│ │ └── TransportLayer.java
│ ├── modplugins/
│ │ ├── jei/
│ │ │ ├── AdvancedGuiHandler.java
│ │ │ ├── GhostIngredientHandler.java
│ │ │ ├── JEIPluginLoader.java
│ │ │ └── RecipeTransferHandler.java
│ │ ├── mcmp/
│ │ │ ├── LPMCMPAddon.java
│ │ │ ├── LPMultipartTile.java
│ │ │ └── LPPipeMultipart.java
│ │ └── nei/
│ │ ├── DebugHelper.java
│ │ ├── DrawHandler.java
│ │ ├── LoadingHelper.java
│ │ ├── LogisticsCraftingOverlayHandler.java
│ │ ├── NEILogisticsPipesConfig.java
│ │ └── NEISolderingStationRecipeManager.java
│ ├── modules/
│ │ ├── ChassisModule.java
│ │ ├── LogisticsModule.java
│ │ ├── ModuleActiveSupplier.java
│ │ ├── ModuleCrafter.java
│ │ ├── ModuleCreativeTabBasedItemSink.java
│ │ ├── ModuleEnchantmentSink.java
│ │ ├── ModuleEnchantmentSinkMK2.java
│ │ ├── ModuleFluidSupplier.java
│ │ ├── ModuleItemSink.java
│ │ ├── ModuleModBasedItemSink.java
│ │ ├── ModuleOreDictItemSink.java
│ │ ├── ModulePassiveSupplier.java
│ │ ├── ModulePolymorphicItemSink.java
│ │ ├── ModuleProvider.java
│ │ ├── ModuleSatellite.java
│ │ └── ModuleTerminus.java
│ ├── network/
│ │ ├── GuiHandler.java
│ │ ├── GuiIDs.java
│ │ ├── IReadListObject.java
│ │ ├── IWriteListObject.java
│ │ ├── NewGuiHandler.java
│ │ ├── PacketHandler.java
│ │ ├── PacketInboundHandler.java
│ │ ├── abstractguis/
│ │ │ ├── BooleanModuleCoordinatesGuiProvider.java
│ │ │ ├── CoordinatesGuiProvider.java
│ │ │ ├── CoordinatesPopupGuiProvider.java
│ │ │ ├── GuiProvider.java
│ │ │ ├── ModuleCoordinatesGuiProvider.java
│ │ │ ├── ModuleInHandGuiProvider.java
│ │ │ ├── NBTModuleCoordinatesGuiProvider.java
│ │ │ ├── PopupGuiProvider.java
│ │ │ └── UpgradeCoordinatesGuiProvider.java
│ │ ├── abstractpackets/
│ │ │ ├── BitSetCoordinatesPacket.java
│ │ │ ├── BooleanCoordinatesPacket.java
│ │ │ ├── BooleanModuleCoordinatesPacket.java
│ │ │ ├── ChannelInformationListCoordinatesPopupGuiProvider.java
│ │ │ ├── CoordinatesPacket.java
│ │ │ ├── DirectionModuleCoordinatesPacket.java
│ │ │ ├── GuiPacket.java
│ │ │ ├── Integer2CoordinatesPacket.java
│ │ │ ├── Integer2ModuleCoordinatesPacket.java
│ │ │ ├── IntegerCoordinatesPacket.java
│ │ │ ├── IntegerModuleCoordinatesPacket.java
│ │ │ ├── IntegerPacket.java
│ │ │ ├── InventoryModuleCoordinatesPacket.java
│ │ │ ├── ItemPacket.java
│ │ │ ├── ListSyncPacket.java
│ │ │ ├── ModernPacket.java
│ │ │ ├── ModuleCoordinatesPacket.java
│ │ │ ├── NBTCoordinatesPacket.java
│ │ │ ├── NBTModuleCoordinatesPacket.java
│ │ │ ├── RequestPacket.java
│ │ │ ├── SlotPacket.java
│ │ │ ├── StringCoordinatesPacket.java
│ │ │ └── StringListPacket.java
│ │ ├── exception/
│ │ │ ├── DelayPacketException.java
│ │ │ └── TargetNotFoundException.java
│ │ ├── guis/
│ │ │ ├── AddChannelGuiProvider.java
│ │ │ ├── EditChannelGuiProvider.java
│ │ │ ├── LogisticsPlayerSettingsGuiProvider.java
│ │ │ ├── OpenGuideBook.java
│ │ │ ├── block/
│ │ │ │ ├── AutoCraftingGui.java
│ │ │ │ ├── PowerJunctionGui.java
│ │ │ │ ├── PowerProviderGui.java
│ │ │ │ ├── ProgramCompilerGui.java
│ │ │ │ ├── SecurityChannelManagerGui.java
│ │ │ │ ├── SecurityStationGui.java
│ │ │ │ └── StatisticsGui.java
│ │ │ ├── item/
│ │ │ │ ├── ItemAmountSignGui.java
│ │ │ │ └── ItemMangerGui.java
│ │ │ ├── logic/
│ │ │ │ └── LogicControllerGuiProvider.java
│ │ │ ├── module/
│ │ │ │ ├── inhand/
│ │ │ │ │ ├── ActiveSupplierInHand.java
│ │ │ │ │ ├── AdvancedExtractorModuleInHand.java
│ │ │ │ │ ├── CraftingModuleInHand.java
│ │ │ │ │ ├── ItemSinkInHand.java
│ │ │ │ │ ├── OreDictItemSinkModuleInHand.java
│ │ │ │ │ ├── ProviderModuleInHand.java
│ │ │ │ │ ├── SimpleFilterInventoryInHand.java
│ │ │ │ │ ├── SneakyModuleInHandGuiProvider.java
│ │ │ │ │ └── StringBasedItemSinkModuleGuiInHand.java
│ │ │ │ └── inpipe/
│ │ │ │ ├── ActiveSupplierSlot.java
│ │ │ │ ├── AdvancedExtractorModuleSlot.java
│ │ │ │ ├── CraftingModuleSlot.java
│ │ │ │ ├── FluidSupplierSlot.java
│ │ │ │ ├── ItemSinkSlot.java
│ │ │ │ ├── OreDictItemSinkModuleSlot.java
│ │ │ │ ├── ProviderModuleGuiProvider.java
│ │ │ │ ├── SimpleFilterInventorySlot.java
│ │ │ │ ├── SneakyModuleInSlotGuiProvider.java
│ │ │ │ └── StringBasedItemSinkModuleGuiSlot.java
│ │ │ ├── pipe/
│ │ │ │ ├── ChassisGuiProvider.java
│ │ │ │ ├── InvSysConGuiProvider.java
│ │ │ │ ├── InvSysConSelectChannelPopupGUIProvider.java
│ │ │ │ └── PipeController.java
│ │ │ └── upgrade/
│ │ │ ├── DisconnectionUpgradeConfigGuiProvider.java
│ │ │ └── SneakyUpgradeConfigGuiProvider.java
│ │ ├── packetcontent/
│ │ │ ├── IPacketContent.java
│ │ │ ├── IntegerContent.java
│ │ │ ├── ItemStackContent.java
│ │ │ └── PacketContentBuilder.java
│ │ └── packets/
│ │ ├── ActivateNBTDebug.java
│ │ ├── AddNewChannelPacket.java
│ │ ├── BufferTransfer.java
│ │ ├── DeleteChannelPacket.java
│ │ ├── DummyPacket.java
│ │ ├── EditChannelPacket.java
│ │ ├── NEISetCraftingRecipe.java
│ │ ├── PlayerConfigToClientPacket.java
│ │ ├── PlayerConfigToServerPacket.java
│ │ ├── PlayerList.java
│ │ ├── PlayerListRequest.java
│ │ ├── RequestUpdateNamesPacket.java
│ │ ├── SetGhostItemPacket.java
│ │ ├── UpdateName.java
│ │ ├── block/
│ │ │ ├── AddItemToTrackPacket.java
│ │ │ ├── AmountTaskSubGui.java
│ │ │ ├── ClearCraftingGridPacket.java
│ │ │ ├── CompilerStatusPacket.java
│ │ │ ├── CompilerTriggerTaskPacket.java
│ │ │ ├── CraftingCycleRecipe.java
│ │ │ ├── CraftingSetType.java
│ │ │ ├── LogicControllerPacket.java
│ │ │ ├── PipeSolidSideCheck.java
│ │ │ ├── PowerJunctionCheatPacket.java
│ │ │ ├── PowerJunctionLevel.java
│ │ │ ├── PowerPacketLaser.java
│ │ │ ├── PowerProviderLevel.java
│ │ │ ├── RemoveAmoundTask.java
│ │ │ ├── RequestAmountTaskSubGui.java
│ │ │ ├── RequestRotationPacket.java
│ │ │ ├── RequestRunningCraftingTasks.java
│ │ │ ├── Rotation.java
│ │ │ ├── RunningCraftingTasks.java
│ │ │ ├── SaveSecurityPlayerPacket.java
│ │ │ ├── SecurityAddCCIdPacket.java
│ │ │ ├── SecurityAuthorizationPacket.java
│ │ │ ├── SecurityCardPacket.java
│ │ │ ├── SecurityRemoveCCIdPacket.java
│ │ │ ├── SecurityRequestCCIdsPacket.java
│ │ │ ├── SecurityStationAuthorizedList.java
│ │ │ ├── SecurityStationAutoDestroy.java
│ │ │ ├── SecurityStationCC.java
│ │ │ ├── SecurityStationCCIDs.java
│ │ │ ├── SecurityStationId.java
│ │ │ ├── SecurityStationOpenPlayer.java
│ │ │ └── SecurityStationOpenPlayerRequest.java
│ │ ├── chassis/
│ │ │ ├── ChassisGUI.java
│ │ │ ├── ChestGuiClosed.java
│ │ │ ├── ChestGuiOpened.java
│ │ │ └── EnableQuickSortMarker.java
│ │ ├── cpipe/
│ │ │ ├── CPipeCleanupImport.java
│ │ │ ├── CPipeSatelliteImport.java
│ │ │ ├── CPipeSatelliteImportBack.java
│ │ │ └── CraftingPipeOpenConnectedGuiPacket.java
│ │ ├── debug/
│ │ │ ├── PipeDebugLogAskForTarget.java
│ │ │ ├── PipeDebugLogResponse.java
│ │ │ ├── SendNewLogLine.java
│ │ │ ├── SendNewLogWindow.java
│ │ │ └── UpdateStatusEntries.java
│ │ ├── debuggui/
│ │ │ ├── DebugAskForTarget.java
│ │ │ ├── DebugDataPacket.java
│ │ │ ├── DebugPanelOpen.java
│ │ │ └── DebugTargetResponse.java
│ │ ├── gui/
│ │ │ ├── ChannelInformationPacket.java
│ │ │ ├── DummyContainerSlotClick.java
│ │ │ ├── FuzzySlotSettingsPacket.java
│ │ │ ├── GuiClosePacket.java
│ │ │ ├── GuiOpenChassis.java
│ │ │ ├── GuiReopenPacket.java
│ │ │ ├── OpenAddChannelGUIPacket.java
│ │ │ ├── OpenChatGui.java
│ │ │ ├── OpenEditChannelGUIPacket.java
│ │ │ ├── OpenGUIPacket.java
│ │ │ ├── OpenSecurityChannelManagerPacket.java
│ │ │ ├── OpenUpgradePacket.java
│ │ │ ├── ProvideSatellitePipeListPacket.java
│ │ │ └── RequestSatellitePipeListPacket.java
│ │ ├── hud/
│ │ │ ├── ChestContent.java
│ │ │ ├── HUDSettingsPacket.java
│ │ │ ├── HUDStartBlockWatchingPacket.java
│ │ │ ├── HUDStartModuleWatchingPacket.java
│ │ │ ├── HUDStartWatchingPacket.java
│ │ │ ├── HUDStopBlockWatchingPacket.java
│ │ │ ├── HUDStopModuleWatchingPacket.java
│ │ │ └── HUDStopWatchingPacket.java
│ │ ├── module/
│ │ │ ├── AdvancedExtractorSneakyGuiPacket.java
│ │ │ ├── ItemSinkImportPacket.java
│ │ │ ├── ModuleBasedItemSinkList.java
│ │ │ ├── ModuleInventory.java
│ │ │ ├── ModulePropertiesUpdate.java
│ │ │ └── OreDictItemSinkList.java
│ │ ├── modules/
│ │ │ ├── AdvancedExtractorInclude.java
│ │ │ ├── ItemSinkDefault.java
│ │ │ ├── ProviderModuleInclude.java
│ │ │ ├── ProviderModuleMode.java
│ │ │ ├── QuickSortState.java
│ │ │ ├── SneakyModuleDirectionUpdate.java
│ │ │ └── SupplierPipeMode.java
│ │ ├── multiblock/
│ │ │ └── MultiBlockCoordinatesPacket.java
│ │ ├── orderer/
│ │ │ ├── ComponentList.java
│ │ │ ├── DiscContent.java
│ │ │ ├── DiskDropPacket.java
│ │ │ ├── DiskMacroRequestPacket.java
│ │ │ ├── DiskRequestConectPacket.java
│ │ │ ├── DiskSetNamePacket.java
│ │ │ ├── MissingItems.java
│ │ │ ├── OrderWatchRemovePacket.java
│ │ │ ├── OrdererContent.java
│ │ │ ├── OrdererManagerContent.java
│ │ │ ├── OrdererRefreshRequestPacket.java
│ │ │ ├── OrdererWatchPacket.java
│ │ │ ├── RequestComponentPacket.java
│ │ │ ├── RequestFluidOrdererRefreshPacket.java
│ │ │ ├── RequestSubmitListPacket.java
│ │ │ ├── RequestSubmitPacket.java
│ │ │ └── SubmitFluidRequestPacket.java
│ │ ├── pipe/
│ │ │ ├── AskForOpenTarget.java
│ │ │ ├── ChassisOrientationPacket.java
│ │ │ ├── ChassisPipeModuleContent.java
│ │ │ ├── CraftingPipeSetSatellitePacket.java
│ │ │ ├── CraftingPipeUpdatePacket.java
│ │ │ ├── CraftingPriority.java
│ │ │ ├── FindMostLikelyRecipeComponents.java
│ │ │ ├── FireWallFlag.java
│ │ │ ├── FluidCraftingAmount.java
│ │ │ ├── FluidSupplierAmount.java
│ │ │ ├── FluidSupplierMinMode.java
│ │ │ ├── FluidSupplierMode.java
│ │ │ ├── InvSysConContent.java
│ │ │ ├── InvSysConContentRequest.java
│ │ │ ├── InvSysConOpenSelectChannelPopupPacket.java
│ │ │ ├── InvSysConResistance.java
│ │ │ ├── InvSysConSetChannelOnPipePacket.java
│ │ │ ├── ItemAmountSignUpdatePacket.java
│ │ │ ├── ItemBufferSyncPacket.java
│ │ │ ├── MostLikelyRecipeComponentsResponse.java
│ │ │ ├── ParticleFX.java
│ │ │ ├── PipeContentPacket.java
│ │ │ ├── PipeContentRequest.java
│ │ │ ├── PipeDebugAskForTarget.java
│ │ │ ├── PipeDebugResponse.java
│ │ │ ├── PipeFluidUpdate.java
│ │ │ ├── PipeManagerContentPacket.java
│ │ │ ├── PipeManagerWatchingPacket.java
│ │ │ ├── PipePositionPacket.java
│ │ │ ├── PipePropertiesUpdate.java
│ │ │ ├── PipeSignTypes.java
│ │ │ ├── PipeTileStatePacket.java
│ │ │ ├── RequestChassisOrientationPacket.java
│ │ │ ├── RequestPipeDimension.java
│ │ │ ├── RequestRoutingLasersPacket.java
│ │ │ ├── RequestSignPacket.java
│ │ │ ├── RoutingLaserPacket.java
│ │ │ ├── SendQueueContent.java
│ │ │ ├── SlotFinderActivatePacket.java
│ │ │ ├── SlotFinderNumberPacket.java
│ │ │ ├── SlotFinderOpenGuiPacket.java
│ │ │ └── StatUpdate.java
│ │ ├── routingdebug/
│ │ │ ├── RoutingUpdateAskForTarget.java
│ │ │ ├── RoutingUpdateCanidatePipe.java
│ │ │ ├── RoutingUpdateClearClient.java
│ │ │ ├── RoutingUpdateDebugCanidateList.java
│ │ │ ├── RoutingUpdateDebugClosedSet.java
│ │ │ ├── RoutingUpdateDebugFilters.java
│ │ │ ├── RoutingUpdateDoneDebug.java
│ │ │ ├── RoutingUpdateInitDebug.java
│ │ │ ├── RoutingUpdateSourcePipe.java
│ │ │ ├── RoutingUpdateTargetResponse.java
│ │ │ └── RoutingUpdateUntrace.java
│ │ ├── satpipe/
│ │ │ ├── SatelliteSetNamePacket.java
│ │ │ ├── SetNameResult.java
│ │ │ └── SyncSatelliteNamePacket.java
│ │ └── upgrade/
│ │ ├── SneakyUpgradeSidePacket.java
│ │ └── ToogleDisconnectionUpgradeSidePacket.java
│ ├── pipefxhandlers/
│ │ ├── EntityModelFX.java
│ │ ├── EntitySparkleFX.java
│ │ ├── GenericSparkleFactory.java
│ │ ├── ParticleProvider.java
│ │ ├── Particles.java
│ │ ├── PipeFXLaserPowerBall.java
│ │ ├── PipeFXLaserPowerBeam.java
│ │ ├── PipeFXRenderHandler.java
│ │ └── providers/
│ │ ├── EntityBlueSparkleFXProvider.java
│ │ ├── EntityGoldSparkleFXProvider.java
│ │ ├── EntityGreenSparkleFXProvider.java
│ │ ├── EntityLightGreenSparkleFXProvider.java
│ │ ├── EntityLightRedSparkleFXProvider.java
│ │ ├── EntityOrangeSparkleFXProvider.java
│ │ ├── EntityRedSparkleFXProvider.java
│ │ ├── EntityVioletSparkleFXProvider.java
│ │ └── EntityWhiteSparkleFXProvider.java
│ ├── pipes/
│ │ ├── PipeBlockRequestTable.java
│ │ ├── PipeFluidExtractor.java
│ │ ├── PipeFluidInsertion.java
│ │ ├── PipeFluidProvider.java
│ │ ├── PipeFluidRequestLogistics.java
│ │ ├── PipeFluidSatellite.java
│ │ ├── PipeFluidSupplierMk2.java
│ │ ├── PipeItemsBasicLogistics.java
│ │ ├── PipeItemsCraftingLogistics.java
│ │ ├── PipeItemsFirewall.java
│ │ ├── PipeItemsFluidSupplier.java
│ │ ├── PipeItemsInvSysConnector.java
│ │ ├── PipeItemsProviderLogistics.java
│ │ ├── PipeItemsRemoteOrdererLogistics.java
│ │ ├── PipeItemsRequestLogistics.java
│ │ ├── PipeItemsRequestLogisticsMk2.java
│ │ ├── PipeItemsSatelliteLogistics.java
│ │ ├── PipeItemsSupplierLogistics.java
│ │ ├── PipeItemsSystemDestinationLogistics.java
│ │ ├── PipeItemsSystemEntranceLogistics.java
│ │ ├── PipeLogisticsChassis.java
│ │ ├── PipeLogisticsChassisMk1.java
│ │ ├── PipeLogisticsChassisMk2.java
│ │ ├── PipeLogisticsChassisMk3.java
│ │ ├── PipeLogisticsChassisMk4.java
│ │ ├── PipeLogisticsChassisMk5.java
│ │ ├── SatelliteNamingResult.java
│ │ ├── basic/
│ │ │ ├── CoreMultiBlockPipe.java
│ │ │ ├── CoreRoutedPipe.java
│ │ │ ├── CoreUnroutedPipe.java
│ │ │ ├── ItemInsertionHandler.java
│ │ │ ├── LogisticsBlockGenericPipe.java
│ │ │ ├── LogisticsBlockGenericSubMultiBlock.java
│ │ │ ├── LogisticsTileGenericPipe.java
│ │ │ ├── LogisticsTileGenericSubMultiBlock.java
│ │ │ ├── PowerSupplierHandler.java
│ │ │ ├── debug/
│ │ │ │ ├── DebugLogController.java
│ │ │ │ ├── LogWindow.java
│ │ │ │ └── StatusEntry.java
│ │ │ ├── fluid/
│ │ │ │ └── FluidRoutedPipe.java
│ │ │ └── ltgpmodcompat/
│ │ │ ├── LPDuctHolderTileEntity.java
│ │ │ ├── LPMicroblockBlock.java
│ │ │ └── LPMicroblockTileEntity.java
│ │ ├── signs/
│ │ │ ├── CraftingPipeSign.java
│ │ │ ├── IPipeSign.java
│ │ │ └── ItemAmountPipeSign.java
│ │ ├── tubes/
│ │ │ ├── HSTubeCurve.java
│ │ │ ├── HSTubeGain.java
│ │ │ ├── HSTubeLine.java
│ │ │ ├── HSTubeSCurve.java
│ │ │ └── HSTubeSpeedup.java
│ │ ├── unrouted/
│ │ │ └── PipeItemsBasicTransport.java
│ │ └── upgrades/
│ │ ├── ActionSpeedUpgrade.java
│ │ ├── AdvancedSatelliteUpgrade.java
│ │ ├── CCRemoteControlUpgrade.java
│ │ ├── CombinedSneakyUpgrade.java
│ │ ├── ConnectionUpgradeConfig.java
│ │ ├── CraftingByproductUpgrade.java
│ │ ├── CraftingCleanupUpgrade.java
│ │ ├── CraftingMonitoringUpgrade.java
│ │ ├── FluidCraftingUpgrade.java
│ │ ├── FuzzyUpgrade.java
│ │ ├── IConfigPipeUpgrade.java
│ │ ├── IPipeUpgrade.java
│ │ ├── ItemExtractionUpgrade.java
│ │ ├── ItemStackExtractionUpgrade.java
│ │ ├── LogicControllerUpgrade.java
│ │ ├── ModuleUpgradeManager.java
│ │ ├── OpaqueUpgrade.java
│ │ ├── PatternUpgrade.java
│ │ ├── PowerTransportationUpgrade.java
│ │ ├── SneakyUpgradeConfig.java
│ │ ├── SpeedUpgrade.java
│ │ ├── UpgradeManager.java
│ │ ├── UpgradeModuleUpgrade.java
│ │ └── power/
│ │ ├── BCPowerSupplierUpgrade.java
│ │ ├── IC2EVPowerSupplierUpgrade.java
│ │ ├── IC2HVPowerSupplierUpgrade.java
│ │ ├── IC2LVPowerSupplierUpgrade.java
│ │ ├── IC2MVPowerSupplierUpgrade.java
│ │ ├── IC2PowerSupplierUpgrade.java
│ │ └── RFPowerSupplierUpgrade.java
│ ├── proxy/
│ │ ├── ConfigToolHandler.java
│ │ ├── DontLoadProxy.java
│ │ ├── MainProxy.java
│ │ ├── PowerProxy.java
│ │ ├── ProxyManager.java
│ │ ├── SimpleServiceLocator.java
│ │ ├── SpecialInventoryHandlerManager.java
│ │ ├── SpecialTankHandlerManager.java
│ │ ├── VersionNotSupportedException.java
│ │ ├── buildcraft/
│ │ │ ├── BCPipeInformationProvider.java
│ │ │ ├── BuildCraftProxy.java
│ │ │ ├── BuildCraftToolWrench.java
│ │ │ ├── recipeprovider/
│ │ │ │ └── AssemblyTable.java
│ │ │ └── subproxies/
│ │ │ ├── BCPipeCapabilityProvider.java
│ │ │ └── IBCPipeCapabilityProvider.java
│ │ ├── cc/
│ │ │ ├── CCConstants.java
│ │ │ ├── CCProxy.java
│ │ │ ├── LPASMHookCC.java
│ │ │ ├── LPPeripheralProvider.java
│ │ │ └── wrapper/
│ │ │ ├── CCCommandWrapper.java
│ │ │ ├── LPPeripheralTilePipeWrapper.java
│ │ │ └── LPPeripheralTileSolidWrapper.java
│ │ ├── ccl/
│ │ │ ├── CCLProxy.java
│ │ │ ├── Model3D.java
│ │ │ └── TransformationProxy.java
│ │ ├── cofh/
│ │ │ ├── CoFHToolHammer.java
│ │ │ └── subproxies/
│ │ │ ├── ICoFHEnergyReceiver.java
│ │ │ └── ICoFHEnergyStorage.java
│ │ ├── computers/
│ │ │ ├── interfaces/
│ │ │ │ ├── CCCommand.java
│ │ │ │ ├── CCDirectCall.java
│ │ │ │ ├── CCQueued.java
│ │ │ │ ├── CCSecurtiyCheck.java
│ │ │ │ ├── CCType.java
│ │ │ │ ├── ICCTypeWrapped.java
│ │ │ │ ├── ILPCCTypeDefinition.java
│ │ │ │ └── ILPCCTypeHolder.java
│ │ │ ├── objects/
│ │ │ │ ├── CCFilterInventory.java
│ │ │ │ ├── CCFluidIdentifier.java
│ │ │ │ ├── CCItemIdentifier.java
│ │ │ │ ├── CCItemIdentifierBuilder.java
│ │ │ │ ├── CCItemIdentifierInventory.java
│ │ │ │ ├── CCItemIdentifierStack.java
│ │ │ │ ├── CCPair.java
│ │ │ │ ├── CCQuartet.java
│ │ │ │ ├── CCResource.java
│ │ │ │ ├── CCSinkResponder.java
│ │ │ │ ├── CCTriplet.java
│ │ │ │ └── LPGlobalCCAccess.java
│ │ │ └── wrapper/
│ │ │ ├── CCObjectWrapper.java
│ │ │ ├── CCWrapperInformation.java
│ │ │ └── ICommandWrapper.java
│ │ ├── enderchest/
│ │ │ └── EnderStorageProxy.java
│ │ ├── endercore/
│ │ │ └── EnderCoreProgressProvider.java
│ │ ├── ic/
│ │ │ └── IronChestProxy.java
│ │ ├── ic2/
│ │ │ ├── IC2ProgressProvider.java
│ │ │ └── IC2Proxy.java
│ │ ├── interfaces/
│ │ │ ├── IBCProxy.java
│ │ │ ├── ICCLProxy.java
│ │ │ ├── ICCProxy.java
│ │ │ ├── ICraftingRecipeProvider.java
│ │ │ ├── IEnderStorageProxy.java
│ │ │ ├── IFuzzyRecipeProvider.java
│ │ │ ├── IGenericProgressProvider.java
│ │ │ ├── IIC2Proxy.java
│ │ │ ├── IIronChestProxy.java
│ │ │ ├── ILPPipeConfigToolWrapper.java
│ │ │ ├── INEIProxy.java
│ │ │ ├── IOpenComputersProxy.java
│ │ │ ├── IPowerProxy.java
│ │ │ ├── IProxy.java
│ │ │ ├── ITDProxy.java
│ │ │ └── IThermalExpansionProxy.java
│ │ ├── nei/
│ │ │ └── NEIProxy.java
│ │ ├── object3d/
│ │ │ ├── interfaces/
│ │ │ │ ├── I3DOperation.java
│ │ │ │ ├── IBounds.java
│ │ │ │ ├── IModel3D.java
│ │ │ │ ├── IRenderState.java
│ │ │ │ ├── ITranslation.java
│ │ │ │ ├── IVec3.java
│ │ │ │ └── TextureTransformation.java
│ │ │ └── operation/
│ │ │ ├── LPColourMultiplier.java
│ │ │ ├── LPRotation.java
│ │ │ ├── LPScale.java
│ │ │ ├── LPTranslation.java
│ │ │ ├── LPUVScale.java
│ │ │ ├── LPUVTransformationList.java
│ │ │ └── LPUVTranslation.java
│ │ ├── opencomputers/
│ │ │ ├── IOCTile.java
│ │ │ ├── OpenComputersProxy.java
│ │ │ └── asm/
│ │ │ ├── BaseWrapperClass.java
│ │ │ ├── ClassCreator.java
│ │ │ └── DummyWrapperClass.java
│ │ ├── progressprovider/
│ │ │ └── MachineProgressProvider.java
│ │ ├── recipeproviders/
│ │ │ ├── AssemblyAdvancedWorkbench.java
│ │ │ ├── AutoWorkbench.java
│ │ │ └── LogisticsCraftingTable.java
│ │ ├── side/
│ │ │ ├── ClientProxy.java
│ │ │ └── ServerProxy.java
│ │ ├── specialconnection/
│ │ │ ├── SpecialPipeConnection.java
│ │ │ ├── SpecialTileConnection.java
│ │ │ └── TeleportPipes.java
│ │ ├── specialinventoryhandler/
│ │ │ ├── AEInterfaceInventoryHandler.java
│ │ │ ├── BuildCraftTransactorHandler.java
│ │ │ └── SpecialInventoryHandler.java
│ │ ├── specialtankhandler/
│ │ │ ├── AETankHandler.java
│ │ │ ├── BuildCraftTankHandler.java
│ │ │ └── SpecialTankHandler.java
│ │ ├── td/
│ │ │ ├── LPDuctUnitItem.java
│ │ │ ├── TDDuctInformationProvider.java
│ │ │ ├── ThermalDynamicsProxy.java
│ │ │ └── subproxies/
│ │ │ ├── ITDPart.java
│ │ │ └── TDPart.java
│ │ └── te/
│ │ ├── ThermalExpansionProgressProvider.java
│ │ └── ThermalExpansionProxy.java
│ ├── recipes/
│ │ ├── CraftingPartRecipes.java
│ │ ├── CraftingParts.java
│ │ ├── CraftingRecipes.java
│ │ ├── IRecipeProvider.java
│ │ ├── LPChipRecipes.java
│ │ ├── ModuleChippedCraftingRecipes.java
│ │ ├── NBTIngredient.java
│ │ ├── PipeChippedCraftingRecipes.java
│ │ ├── RecipeManager.java
│ │ ├── ShapelessResetRecipe.java
│ │ ├── UpgradeChippedCraftingRecipes.java
│ │ ├── conditions/
│ │ │ └── ConditionOreExists.java
│ │ └── ingredients/
│ │ └── IngredientPart.java
│ ├── renderer/
│ │ ├── CustomBlockRenderer.java
│ │ ├── FluidContainerRenderer.java
│ │ ├── FluidRenderer.java
│ │ ├── GuiOverlay.java
│ │ ├── IIconProvider.java
│ │ ├── LogisticsHUDRenderer.java
│ │ ├── LogisticsPipeItemRenderer.java
│ │ ├── LogisticsPipeWorldRenderer.java
│ │ ├── LogisticsRenderPipe.java
│ │ ├── LogisticsSolidBlockWorldRenderer.java
│ │ ├── LogisticsTileRenderController.java
│ │ ├── newpipe/
│ │ │ ├── GLRenderList.java
│ │ │ ├── GLRenderListHandler.java
│ │ │ ├── IHighlightPlacementRenderer.java
│ │ │ ├── ISpecialPipeRenderer.java
│ │ │ ├── LogisticsBlockModel.java
│ │ │ ├── LogisticsNewPipeItemBoxRenderer.java
│ │ │ ├── LogisticsNewPipeItemRenderer.java
│ │ │ ├── LogisticsNewPipeModel.java
│ │ │ ├── LogisticsNewPipeWorldRenderer.java
│ │ │ ├── LogisticsNewRenderPipe.java
│ │ │ ├── LogisticsNewSolidBlockWorldRenderer.java
│ │ │ ├── PropertyCache.java
│ │ │ ├── PropertyRenderList.java
│ │ │ ├── RenderEntry.java
│ │ │ └── tube/
│ │ │ ├── CurveTubeRenderer.java
│ │ │ ├── GainTubeRenderer.java
│ │ │ ├── LineTubeRenderer.java
│ │ │ ├── SCurveTubeRenderer.java
│ │ │ └── SpeedupTubeRenderer.java
│ │ └── state/
│ │ ├── ConnectionMatrix.java
│ │ ├── PipeRenderState.java
│ │ ├── PipeSubRenderState.java
│ │ └── TextureMatrix.java
│ ├── request/
│ │ ├── DictCraftingTemplate.java
│ │ ├── ICraftingTemplate.java
│ │ ├── IExtraPromise.java
│ │ ├── IPromise.java
│ │ ├── IReqCraftingTemplate.java
│ │ ├── ItemCraftingTemplate.java
│ │ ├── RequestHandler.java
│ │ ├── RequestLog.java
│ │ ├── RequestTree.java
│ │ ├── RequestTreeNode.java
│ │ └── resources/
│ │ ├── DictResource.java
│ │ ├── FluidResource.java
│ │ ├── IResource.java
│ │ ├── ItemResource.java
│ │ └── ResourceNetwork.java
│ ├── routing/
│ │ ├── ClientRouter.java
│ │ ├── DummyRoutingDebugAdapter.java
│ │ ├── ExitRoute.java
│ │ ├── FluidLogisticsPromise.java
│ │ ├── IPaintPath.java
│ │ ├── IRouter.java
│ │ ├── IRouterQueuedTask.java
│ │ ├── ItemRoutingInformation.java
│ │ ├── LaserData.java
│ │ ├── LogisticsDictPromise.java
│ │ ├── LogisticsExtraDictPromise.java
│ │ ├── LogisticsExtraPromise.java
│ │ ├── LogisticsPromise.java
│ │ ├── PipeRoutingConnectionType.java
│ │ ├── RouterCost.java
│ │ ├── RouterManager.java
│ │ ├── ServerRouter.java
│ │ ├── channels/
│ │ │ ├── ChannelConnection.java
│ │ │ ├── ChannelInformation.java
│ │ │ ├── ChannelManager.java
│ │ │ └── ChannelManagerProvider.java
│ │ ├── debug/
│ │ │ ├── ClientViewController.java
│ │ │ ├── DebugController.java
│ │ │ ├── DebugWindow.java
│ │ │ ├── ExitRouteDebug.java
│ │ │ ├── HUDRoutingTableDebugProvider.java
│ │ │ ├── HUDRoutingTableGeneralInfo.java
│ │ │ └── RoutingTableDebugUpdateThread.java
│ │ ├── order/
│ │ │ ├── ClientSideOrderInfo.java
│ │ │ ├── DistanceTracker.java
│ │ │ ├── IDistanceTracker.java
│ │ │ ├── IOrderInfoProvider.java
│ │ │ ├── LinkedLogisticsOrderList.java
│ │ │ ├── LogisticsFluidOrder.java
│ │ │ ├── LogisticsFluidOrderManager.java
│ │ │ ├── LogisticsItemOrder.java
│ │ │ ├── LogisticsItemOrderManager.java
│ │ │ ├── LogisticsOrder.java
│ │ │ ├── LogisticsOrderLinkedList.java
│ │ │ └── LogisticsOrderManager.java
│ │ └── pathfinder/
│ │ ├── IPipeInformationProvider.java
│ │ ├── IRouteProvider.java
│ │ ├── ISubMultiBlockPipeInformationProvider.java
│ │ ├── PathFinder.java
│ │ ├── PipeInformationManager.java
│ │ └── changedetection/
│ │ └── TEControl.java
│ ├── security/
│ │ ├── PermissionException.java
│ │ └── SecuritySettings.java
│ ├── textures/
│ │ ├── Textures.java
│ │ └── provider/
│ │ ├── LPActionTriggerIconProvider.java
│ │ ├── LPPipeIconProvider.java
│ │ └── LPPipeIconTransformerProvider.java
│ ├── ticks/
│ │ ├── ClientPacketBufferHandlerThread.java
│ │ ├── HudUpdateTick.java
│ │ ├── LPTickHandler.java
│ │ ├── QueuedTasks.java
│ │ ├── RenderTickHandler.java
│ │ ├── RoutingTableUpdateThread.java
│ │ ├── ServerPacketBufferHandlerThread.java
│ │ └── VersionChecker.java
│ ├── transport/
│ │ ├── EntrencsTransport.java
│ │ ├── LPItemList.java
│ │ ├── LPTravelingItem.java
│ │ ├── PipeFluidTransportLogistics.java
│ │ ├── PipeMultiBlockTransportLogistics.java
│ │ ├── PipeTransportLogistics.java
│ │ └── TransportInvConnection.java
│ └── utils/
│ ├── CacheHolder.java
│ ├── CardManagementInventory.java
│ ├── ChainAddArrayList.java
│ ├── Color.java
│ ├── CraftingUtil.java
│ ├── DelayedGeneric.java
│ ├── DummyWorldProvider.java
│ ├── EnumFacingUtil.java
│ ├── EqualWeakReference.java
│ ├── FinalNBTTagCompound.java
│ ├── FinalPair.java
│ ├── FluidIdentifier.java
│ ├── FluidIdentifierStack.java
│ ├── FluidSinkReply.java
│ ├── IHavePriority.java
│ ├── IPositionRotateble.java
│ ├── ISimpleInventoryEventHandler.java
│ ├── InventoryHelper.java
│ ├── InventoryUtil.java
│ ├── InventoryUtilFactory.java
│ ├── LPPositionSet.java
│ ├── MinecraftColor.java
│ ├── ModStatusHelper.java
│ ├── OneList.java
│ ├── OrientationsUtil.java
│ ├── PlayerCollectionList.java
│ ├── PlayerIdentifier.java
│ ├── QuickSortChestMarkerStorage.java
│ ├── ReflectionHelper.java
│ ├── RoutedItemHelper.java
│ ├── SafeTimeTracker.java
│ ├── SinkReply.java
│ ├── SlidingWindowBitSet.java
│ ├── SpecialTankUtil.java
│ ├── StackTraceUtil.java
│ ├── StaticResolve.java
│ ├── StaticResolverUtil.java
│ ├── StreamHelper.java
│ ├── SyncList.java
│ ├── TankUtil.java
│ ├── TileBuffer.java
│ ├── gui/
│ │ ├── ColorSlot.java
│ │ ├── DummyContainer.java
│ │ ├── DummyModuleContainer.java
│ │ ├── DummySlot.java
│ │ ├── FluidSlot.java
│ │ ├── FuzzyDummySlot.java
│ │ ├── FuzzyUnmodifiableSlot.java
│ │ ├── GuiCheckBox.java
│ │ ├── GuiGraphics.java
│ │ ├── GuiStringHandlerButton.java
│ │ ├── HandelableSlot.java
│ │ ├── HudGraphics.java
│ │ ├── IGuiAccess.java
│ │ ├── IItemSearch.java
│ │ ├── IItemTextureRenderSlot.java
│ │ ├── IRenderSlot.java
│ │ ├── ISmallColorRenderSlot.java
│ │ ├── ISubGuiControler.java
│ │ ├── InputBar.java
│ │ ├── ItemDisplay.java
│ │ ├── LogisticsBaseGuiScreen.java
│ │ ├── LogisticsBaseTabGuiScreen.java
│ │ ├── ModuleSlot.java
│ │ ├── RestrictedSlot.java
│ │ ├── SimpleGraphics.java
│ │ ├── SmallGuiButton.java
│ │ ├── SneakyUpgradeSlot.java
│ │ ├── StaticRestrictedSlot.java
│ │ ├── SubGuiScreen.java
│ │ ├── TextListDisplay.java
│ │ ├── UnmodifiableSlot.java
│ │ ├── UpgradeSlot.java
│ │ ├── extension/
│ │ │ ├── GuiExtension.java
│ │ │ └── GuiExtensionController.java
│ │ ├── hud/
│ │ │ └── BasicHUDButton.java
│ │ └── sideconfig/
│ │ └── SideConfigDisplay.java
│ ├── item/
│ │ ├── DictIdentifier.java
│ │ ├── DictItemIdentifier.java
│ │ ├── ItemIdentifier.java
│ │ ├── ItemIdentifierInventory.java
│ │ ├── ItemIdentifierStack.java
│ │ ├── ItemStackRenderer.java
│ │ └── SimpleStackInventory.java
│ ├── math/
│ │ ├── BoundingBox.java
│ │ ├── Camera.java
│ │ ├── Matrix4d.java
│ │ ├── MatrixTranformations.java
│ │ ├── Vec2.java
│ │ ├── VecmathUtil.java
│ │ ├── Vector2d.java
│ │ ├── Vector2f.java
│ │ ├── Vector3d.java
│ │ ├── Vector3f.java
│ │ ├── Vector4d.java
│ │ └── Vertex.java
│ ├── string/
│ │ ├── ChatColor.java
│ │ └── StringUtils.java
│ ├── transactor/
│ │ ├── IInvSlot.java
│ │ ├── ITransactor.java
│ │ ├── InventoryIterator.java
│ │ ├── InventoryIteratorSimple.java
│ │ ├── Transactor.java
│ │ └── TransactorSimple.java
│ └── tuples/
│ ├── Pair.java
│ ├── Quartet.java
│ └── Triplet.java
├── dummy/
│ └── src/
│ └── main/
│ └── java/
│ ├── com/
│ │ └── enderio/
│ │ └── core/
│ │ ├── api/
│ │ │ └── common/
│ │ │ └── util/
│ │ │ └── IProgressTile.java
│ │ └── common/
│ │ └── util/
│ │ ├── BlockCoord.java
│ │ ├── InventoryWrapper.java
│ │ └── RoundRobinIterator.java
│ ├── cpw/
│ │ └── mods/
│ │ └── ironchest/
│ │ ├── client/
│ │ │ └── gui/
│ │ │ └── chest/
│ │ │ └── GUIChest.java
│ │ └── common/
│ │ └── tileentity/
│ │ └── chest/
│ │ └── TileEntityIronChest.java
│ ├── crazypants/
│ │ └── enderio/
│ │ ├── conduit/
│ │ │ ├── AbstractConduit.java
│ │ │ ├── ConnectionMode.java
│ │ │ ├── IConduit.java
│ │ │ ├── IConduitBundle.java
│ │ │ ├── item/
│ │ │ │ ├── IItemConduit.java
│ │ │ │ └── ItemConduit.java
│ │ │ └── liquid/
│ │ │ └── ILiquidConduit.java
│ │ └── machine/
│ │ └── transceiver/
│ │ ├── Channel.java
│ │ ├── ChannelType.java
│ │ ├── ServerChannelRegister.java
│ │ └── TileTransceiver.java
│ ├── ic2/
│ │ ├── api/
│ │ │ └── classic/
│ │ │ └── tile/
│ │ │ └── machine/
│ │ │ └── IProgressMachine.java
│ │ └── core/
│ │ └── block/
│ │ └── machine/
│ │ └── tileentity/
│ │ └── TileEntityStandardMachine.java
│ └── org/
│ └── luaj/
│ └── vm2/
│ ├── LuaNil.java
│ ├── LuaTable.java
│ ├── LuaValue.java
│ └── Varargs.java
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── jitpack.yml
├── lib/
│ └── appliedenergistics2-rv6-stable-7-api.jar
├── lombok.config
├── resources/
│ ├── META-INF/
│ │ └── lp_at.cfg
│ ├── assets/
│ │ └── logisticspipes/
│ │ ├── blockstates/
│ │ │ ├── pipe.json
│ │ │ ├── solid_block.json
│ │ │ └── sub_multiblock.json
│ │ ├── book/
│ │ │ └── en_us/
│ │ │ ├── dev_zero_guides/
│ │ │ │ ├── active_routing.md
│ │ │ │ ├── consolidating_pipes.md
│ │ │ │ ├── crafting.md
│ │ │ │ ├── index.md
│ │ │ │ ├── managing_items_with_pipes.md
│ │ │ │ └── passive_routing.md
│ │ │ └── main_menu.md
│ │ ├── fonts/
│ │ │ ├── OFL.TXT
│ │ │ ├── minecraft-bold.bdf
│ │ │ ├── minecraft-plain.bdf
│ │ │ └── ter-u12n.bdf
│ │ ├── lang/
│ │ │ └── en_us.lang
│ │ ├── models/
│ │ │ ├── block/
│ │ │ │ ├── pipe.json
│ │ │ │ ├── solid_block.json
│ │ │ │ └── sub_multiblock.json
│ │ │ └── item/
│ │ │ ├── broken_item.json
│ │ │ ├── chip/
│ │ │ │ ├── advanced.json
│ │ │ │ ├── advanced_raw.json
│ │ │ │ ├── basic.json
│ │ │ │ ├── basic_raw.json
│ │ │ │ ├── fpga.json
│ │ │ │ └── fpga_raw.json
│ │ │ ├── disk.json
│ │ │ ├── fluid_container.json
│ │ │ ├── guide_book.json
│ │ │ ├── hud_glasses.json
│ │ │ ├── item_card.json
│ │ │ ├── logistics_programmer.json
│ │ │ ├── module/
│ │ │ │ ├── active_supplier.json
│ │ │ │ ├── blank.json
│ │ │ │ ├── crafter.json
│ │ │ │ ├── crafter_mk2.json
│ │ │ │ ├── crafter_mk3.json
│ │ │ │ ├── enchantment_sink.json
│ │ │ │ ├── enchantment_sink_mk2.json
│ │ │ │ ├── extractor.json
│ │ │ │ ├── extractor_advanced.json
│ │ │ │ ├── extractor_advanced_mk2.json
│ │ │ │ ├── extractor_advanced_mk3.json
│ │ │ │ ├── extractor_mk2.json
│ │ │ │ ├── extractor_mk3.json
│ │ │ │ ├── item_sink.json
│ │ │ │ ├── item_sink_cc.json
│ │ │ │ ├── item_sink_creativetab.json
│ │ │ │ ├── item_sink_mod.json
│ │ │ │ ├── item_sink_oredict.json
│ │ │ │ ├── item_sink_polymorphic.json
│ │ │ │ ├── passive_supplier.json
│ │ │ │ ├── provider.json
│ │ │ │ ├── provider_mk2.json
│ │ │ │ ├── quick_sort.json
│ │ │ │ ├── quick_sort_cc.json
│ │ │ │ ├── terminus.json
│ │ │ │ └── thaumic_aspect_sink.json
│ │ │ ├── parts/
│ │ │ │ ├── 0.json
│ │ │ │ ├── 1.json
│ │ │ │ ├── 2.json
│ │ │ │ └── 3.json
│ │ │ ├── pipe.json
│ │ │ ├── pipe_controller.json
│ │ │ ├── pipe_manager.json
│ │ │ ├── remote_orderer/
│ │ │ │ ├── 0.json
│ │ │ │ ├── 1.json
│ │ │ │ ├── 10.json
│ │ │ │ ├── 11.json
│ │ │ │ ├── 12.json
│ │ │ │ ├── 13.json
│ │ │ │ ├── 14.json
│ │ │ │ ├── 15.json
│ │ │ │ ├── 16.json
│ │ │ │ ├── 2.json
│ │ │ │ ├── 3.json
│ │ │ │ ├── 4.json
│ │ │ │ ├── 5.json
│ │ │ │ ├── 6.json
│ │ │ │ ├── 7.json
│ │ │ │ ├── 8.json
│ │ │ │ └── 9.json
│ │ │ ├── sign_creator.0.json
│ │ │ ├── sign_creator.1.json
│ │ │ ├── solid_block.json
│ │ │ ├── sub_multiblock.json
│ │ │ └── upgrade/
│ │ │ ├── action_speed.json
│ │ │ ├── cc_remote_control.json
│ │ │ ├── crafting_byproduct.json
│ │ │ ├── crafting_cleanup.json
│ │ │ ├── crafting_monitoring.json
│ │ │ ├── disconnection.json
│ │ │ ├── fluid_crafting.json
│ │ │ ├── fuzzy.json
│ │ │ ├── item_extraction.json
│ │ │ ├── item_stack_extraction.json
│ │ │ ├── logic_controller.json
│ │ │ ├── module_upgrade.json
│ │ │ ├── opaque.json
│ │ │ ├── pattern.json
│ │ │ ├── power_supplier_eu.json
│ │ │ ├── power_supplier_eu_ev.json
│ │ │ ├── power_supplier_eu_hv.json
│ │ │ ├── power_supplier_eu_lv.json
│ │ │ ├── power_supplier_eu_mv.json
│ │ │ ├── power_supplier_mj.json
│ │ │ ├── power_supplier_rf.json
│ │ │ ├── power_transportation.json
│ │ │ ├── satellite_advanced.json
│ │ │ ├── sneaky.json
│ │ │ ├── sneaky_combination.json
│ │ │ └── speed.json
│ │ ├── recipes/
│ │ │ ├── _factories.json
│ │ │ ├── block_frame.json
│ │ │ ├── chip/
│ │ │ │ ├── chip_advanced_raw.json
│ │ │ │ ├── chip_basic_raw.json
│ │ │ │ ├── chip_basic_raw_nocopper.json
│ │ │ │ └── chip_fpga_raw.json
│ │ │ ├── crafting_table.json
│ │ │ ├── crafting_table_fuzzy.json
│ │ │ ├── disk.json
│ │ │ ├── guide_book.json
│ │ │ ├── logistics_programmer.json
│ │ │ ├── module_blank.json
│ │ │ ├── pipe/
│ │ │ │ ├── pipe_basic.json
│ │ │ │ ├── pipe_hs_curve.json
│ │ │ │ ├── pipe_hs_gain.json
│ │ │ │ ├── pipe_hs_line.json
│ │ │ │ ├── pipe_hs_s_curve.json
│ │ │ │ ├── pipe_hs_speedup.json
│ │ │ │ ├── pipe_request_table.json
│ │ │ │ └── pipe_transport_basic.json
│ │ │ ├── pipe_controller.json
│ │ │ ├── pipe_manager.json
│ │ │ ├── power_junction.json
│ │ │ ├── program_compiler.json
│ │ │ ├── remote_orderer.json
│ │ │ ├── security_station.json
│ │ │ ├── sign_creator.json
│ │ │ └── statistics_table.json
│ │ └── textures/
│ │ └── particles/
│ │ └── laserball.psd
│ ├── logisticspipes/
│ │ └── models/
│ │ ├── BlockModel_result.obj
│ │ ├── HSTube-Gain_result.obj
│ │ ├── HSTube-Line_result.obj
│ │ ├── HSTube-Speedup_result.obj
│ │ ├── HSTube-Turn_result.obj
│ │ ├── PipeModel_Transport_Box.obj
│ │ └── PipeModel_moved.obj
│ └── pack.mcmeta
├── resources_raw/
│ ├── chips/
│ │ └── chip.xcf
│ ├── logistics3.blend
│ ├── logistics4-v2.blend
│ ├── logistics4.blend
│ ├── logistics4.blend1
│ └── mcmod.info
├── run/
│ └── .gitkeep
├── run-server/
│ └── .gitkeep
├── settings.gradle
├── src/
│ ├── api/
│ │ ├── java/
│ │ │ └── network/
│ │ │ └── rs485/
│ │ │ └── debug/
│ │ │ └── api/
│ │ │ ├── IDataConnection.java
│ │ │ ├── IDebugGuiEntry.java
│ │ │ └── IObjectIdentification.java
│ │ └── kotlin/
│ │ └── network/
│ │ └── rs485/
│ │ └── logisticspipes/
│ │ ├── IStore.kt
│ │ ├── connection/
│ │ │ ├── Adjacent.kt
│ │ │ ├── ConnectionType.kt
│ │ │ └── NeighborTileEntity.kt
│ │ ├── gui/
│ │ │ ├── Constraints.kt
│ │ │ ├── Dsl.kt
│ │ │ └── SwingStuff.kt
│ │ ├── pipes/
│ │ │ └── IChassisPipe.kt
│ │ ├── property/
│ │ │ ├── BitSetProperty.kt
│ │ │ ├── BooleanProperty.kt
│ │ │ ├── EnumProperty.kt
│ │ │ ├── IntegerProperty.kt
│ │ │ ├── InventoryProperty.kt
│ │ │ ├── ListProperty.kt
│ │ │ ├── NullableEnumProperty.kt
│ │ │ ├── Property.kt
│ │ │ ├── PropertyHolder.kt
│ │ │ ├── UUIDProperty.kt
│ │ │ ├── Util.kt
│ │ │ ├── ValueProperty.kt
│ │ │ └── layer/
│ │ │ ├── PropertyLayer.kt
│ │ │ ├── PropertyLayerInventoryAdapter.kt
│ │ │ ├── PropertyOverlay.kt
│ │ │ ├── SimplePropertyOverlay.kt
│ │ │ └── ValuePropertyOverlay.kt
│ │ └── util/
│ │ └── Rectangle.kt
│ ├── main/
│ │ ├── java/
│ │ │ └── network/
│ │ │ └── rs485/
│ │ │ └── logisticspipes/
│ │ │ ├── network/
│ │ │ │ └── packets/
│ │ │ │ └── SetCurrentPagePacket.java
│ │ │ ├── proxy/
│ │ │ │ └── mcmp/
│ │ │ │ ├── BlockAccessDelegate.java
│ │ │ │ ├── IMCMPProxy.java
│ │ │ │ ├── MCMPProxy.java
│ │ │ │ └── subproxy/
│ │ │ │ ├── IMCMPBlockAccess.java
│ │ │ │ ├── IMCMPLTGPCompanion.java
│ │ │ │ ├── LPTileMultipartContainer.java
│ │ │ │ ├── MCMPBlockAccess.java
│ │ │ │ ├── MCMPLTGPCompanion.java
│ │ │ │ └── MCMPMultipartContainerProvider.java
│ │ │ ├── util/
│ │ │ │ ├── LPDataIOWrapper.java
│ │ │ │ ├── LPDataInput.java
│ │ │ │ ├── LPDataOutput.java
│ │ │ │ ├── LPFinalSerializable.java
│ │ │ │ ├── LPSerializable.java
│ │ │ │ └── items/
│ │ │ │ └── ItemStackLoader.java
│ │ │ └── world/
│ │ │ ├── CoordinateUtils.java
│ │ │ ├── DoubleCoordinates.java
│ │ │ ├── DoubleCoordinatesType.java
│ │ │ └── ICoordinates.java
│ │ └── kotlin/
│ │ ├── logisticspipes/
│ │ │ ├── pipes/
│ │ │ │ ├── PipeFluidBasic.kt
│ │ │ │ ├── PipeFluidTerminus.kt
│ │ │ │ └── PipeFluidUtil.kt
│ │ │ └── routing/
│ │ │ └── AsyncRouting.kt
│ │ └── network/
│ │ └── rs485/
│ │ ├── debug/
│ │ │ ├── OpenGLDebugger.kt
│ │ │ └── PerformanceMeter.kt
│ │ ├── grow/
│ │ │ ├── ChunkedChannel.kt
│ │ │ ├── Coroutines.kt
│ │ │ └── ServerTickDispatcher.kt
│ │ ├── logisticspipes/
│ │ │ ├── FluidSinkPipe.kt
│ │ │ ├── SatellitePipe.kt
│ │ │ ├── compat/
│ │ │ │ ├── BarrelInventoryHandler.kt
│ │ │ │ ├── JEIAdvancedGuiHandler.kt
│ │ │ │ ├── JEIGhostIngredientHandler.kt
│ │ │ │ └── TheOneProbeIntegration.kt
│ │ │ ├── config/
│ │ │ │ ├── ClientConfiguration.kt
│ │ │ │ ├── PlayerConfiguration.kt
│ │ │ │ ├── ServerConfiguration.kt
│ │ │ │ └── ServerConfigurationManager.kt
│ │ │ ├── connection/
│ │ │ │ ├── AdjacentFactory.kt
│ │ │ │ ├── AdjacentUtil.kt
│ │ │ │ ├── DynamicAdjacent.kt
│ │ │ │ ├── LPNeighborTileEntity.kt
│ │ │ │ ├── LPNeighborTileEntitySneakyInsertion.kt
│ │ │ │ ├── NoAdjacent.kt
│ │ │ │ ├── PipeInventoryConnectionChecker.kt
│ │ │ │ └── SingleAdjacent.kt
│ │ │ ├── gui/
│ │ │ │ ├── BaseGuiContainer.kt
│ │ │ │ ├── BaseGuiScreen.kt
│ │ │ │ ├── DslExtension.kt
│ │ │ │ ├── GuiDrawer.kt
│ │ │ │ ├── GuiRenderer.kt
│ │ │ │ ├── WidgetContainer.kt
│ │ │ │ ├── WidgetScreen.kt
│ │ │ │ ├── font/
│ │ │ │ │ ├── BDF.kt
│ │ │ │ │ ├── FontParser.kt
│ │ │ │ │ ├── FontWrapper.kt
│ │ │ │ │ ├── IFont.kt
│ │ │ │ │ └── LPFontRenderer.kt
│ │ │ │ ├── guidebook/
│ │ │ │ │ ├── BookmarkManagingButton.kt
│ │ │ │ │ ├── Drawable.kt
│ │ │ │ │ ├── DrawableHeaderParagraph.kt
│ │ │ │ │ ├── DrawableHorizontalLine.kt
│ │ │ │ │ ├── DrawableImageParagraph.kt
│ │ │ │ │ ├── DrawableMenuParagraph.kt
│ │ │ │ │ ├── DrawablePage.kt
│ │ │ │ │ ├── DrawablePageFactory.kt
│ │ │ │ │ ├── DrawableParagraph.kt
│ │ │ │ │ ├── DrawableRegularParagraph.kt
│ │ │ │ │ ├── DrawableWord.kt
│ │ │ │ │ ├── GuiGuideBook.kt
│ │ │ │ │ ├── HomeButton.kt
│ │ │ │ │ ├── LPGuiButton.kt
│ │ │ │ │ ├── LinkGroup.kt
│ │ │ │ │ ├── Page.kt
│ │ │ │ │ ├── SliderButton.kt
│ │ │ │ │ └── TabButton.kt
│ │ │ │ ├── module/
│ │ │ │ │ ├── ItemSinkGui.kt
│ │ │ │ │ └── ProviderGui.kt
│ │ │ │ └── widget/
│ │ │ │ ├── FuzzySelectionWidget.kt
│ │ │ │ ├── GhostSlots.kt
│ │ │ │ ├── LPGuiButton.kt
│ │ │ │ ├── LPGuiWidget.kt
│ │ │ │ ├── Label.kt
│ │ │ │ ├── LabelWidget.kt
│ │ │ │ ├── LockedSlot.kt
│ │ │ │ ├── PlayerInventorySlotGroup.kt
│ │ │ │ ├── SlotGroup.kt
│ │ │ │ ├── TextButton.kt
│ │ │ │ └── VerticalLabel.kt
│ │ │ ├── guidebook/
│ │ │ │ ├── BookContents.kt
│ │ │ │ ├── DebugPage.kt
│ │ │ │ └── ItemGuideBook.kt
│ │ │ ├── inventory/
│ │ │ │ ├── FuzzySlotAccess.kt
│ │ │ │ ├── IItemIdentifierInventory.kt
│ │ │ │ ├── ProviderMode.kt
│ │ │ │ ├── SlotAccess.kt
│ │ │ │ └── container/
│ │ │ │ ├── ItemSinkContainer.kt
│ │ │ │ ├── LPBaseContainer.kt
│ │ │ │ └── ProviderContainer.kt
│ │ │ ├── logistics/
│ │ │ │ └── LogisticsManager.kt
│ │ │ ├── module/
│ │ │ │ ├── AsyncAdvancedExtractor.kt
│ │ │ │ ├── AsyncComputerQuicksort.kt
│ │ │ │ ├── AsyncExtractorModule.kt
│ │ │ │ ├── AsyncModule.kt
│ │ │ │ ├── AsyncQuicksortModule.kt
│ │ │ │ ├── Gui.kt
│ │ │ │ ├── PipeServiceProviderUtil.kt
│ │ │ │ ├── SimpleFilter.kt
│ │ │ │ ├── SneakyDirection.kt
│ │ │ │ └── Util.kt
│ │ │ ├── property/
│ │ │ │ ├── AdjacentProperty.kt
│ │ │ │ ├── ItemIdentifierInventoryProperty.kt
│ │ │ │ ├── PropertyUpdater.kt
│ │ │ │ ├── PropertyUpdaterEventListener.kt
│ │ │ │ ├── SimpleInventoryProperty.kt
│ │ │ │ ├── SlottedModule.kt
│ │ │ │ ├── SlottedModuleListProperty.kt
│ │ │ │ └── UpgradeManagerListProperty.kt
│ │ │ ├── proxy/
│ │ │ │ ├── StorageDrawersProxy.kt
│ │ │ │ └── StorageDrawersProxyImpl.kt
│ │ │ ├── util/
│ │ │ │ ├── ColorUtil.kt
│ │ │ │ ├── FuzzyUtil.kt
│ │ │ │ ├── Item.kt
│ │ │ │ ├── TextUtil.kt
│ │ │ │ └── math/
│ │ │ │ ├── BorderedRectangle.kt
│ │ │ │ └── MutableRectangle.kt
│ │ │ └── world/
│ │ │ └── WorldCoordinatesWrapper.kt
│ │ ├── markdown/
│ │ │ ├── Element.kt
│ │ │ ├── MarkdownParser.kt
│ │ │ └── Paragraph.kt
│ │ └── util/
│ │ ├── ByteBufUtils.kt
│ │ └── SystemUtil.kt
│ └── test/
│ └── kotlin/
│ └── network/
│ └── rs485/
│ ├── logisticspipes/
│ │ ├── integration/
│ │ │ ├── CraftingTest.kt
│ │ │ ├── LPTestBuilder.kt
│ │ │ ├── MinecraftTest.kt
│ │ │ ├── PipePlacer.kt
│ │ │ ├── TestWorldBuilder.kt
│ │ │ └── UnroutedPipePlacer.kt
│ │ └── util/
│ │ ├── LPDataIOWrapperTest.kt
│ │ └── TestUtil.kt
│ ├── markdown/
│ │ └── MarkdownParserTest.kt
│ └── minecraft/
│ ├── BlockPlacer.kt
│ ├── BlockPosSelector.kt
│ └── WorldBuilder.kt
└── style/
└── LP_Format_IntelliJ.xml
Showing preview only (699K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (9216 symbols across 1032 files)
FILE: common/logisticspipes/LPBlocks.java
class LPBlocks (line 10) | public class LPBlocks {
FILE: common/logisticspipes/LPConstants.java
class LPConstants (line 3) | public class LPConstants {
method LPConstants (line 5) | private LPConstants() {}
FILE: common/logisticspipes/LPItems.java
class LPItems (line 23) | public class LPItems {
FILE: common/logisticspipes/LogisticsEventListener.java
class LogisticsEventListener (line 75) | public class LogisticsEventListener {
method onEntitySpawn (line 80) | @SubscribeEvent
method onPlayerLeftClickBlock (line 100) | @SubscribeEvent
method onPlayerLeftClickBlock (line 124) | @SubscribeEvent
method WorldLoad (line 150) | @SubscribeEvent
method WorldUnload (line 164) | @SubscribeEvent
method watchChunk (line 172) | @SubscribeEvent
method unWatchChunk (line 181) | @SubscribeEvent
method onPlayerLogin (line 189) | @SubscribeEvent
method onPlayerLogout (line 200) | @SubscribeEvent
class GuiEntry (line 205) | @AllArgsConstructor
method onGuiOpen (line 225) | @SubscribeEvent
method addGuiToReopen (line 252) | @SideOnly(Side.CLIENT)
method clientLoggedIn (line 257) | @SubscribeEvent
method onItemStackToolTip (line 295) | @SubscribeEvent
method onItemCrafting (line 312) | @SubscribeEvent
FILE: common/logisticspipes/LogisticsPipes.java
class LogisticsPipes (line 213) | @Mod(
method isDEBUG (line 226) | public static boolean isDEBUG() {
method LogisticsPipes (line 237) | public LogisticsPipes() { //TODO: remove throws
method loadManifestValues (line 269) | private static void loadManifestValues(ClassLoader loader) {
method getVersionString (line 293) | public static String getVersionString() {
method createIcon (line 313) | @SideOnly(Side.CLIENT)
method isDevelopmentEnvironment (line 333) | public static boolean isDevelopmentEnvironment() {
method init (line 344) | @Mod.EventHandler
method isTesting (line 428) | public static boolean isTesting() {
method preInit (line 432) | @Mod.EventHandler
method postInit (line 473) | @Mod.EventHandler
method textureLoad (line 524) | @SubscribeEvent
method initItems (line 533) | @SubscribeEvent
method setName (line 574) | public static <T extends Item> T setName(T item, String name) {
method setName (line 578) | public static <T extends Item> T setName(T item, String name, String m...
method setName (line 585) | public static <T extends Block> T setName(T block, String name) {
method initBlocks (line 591) | @SubscribeEvent
method onModelLoad (line 612) | @SubscribeEvent
method registerRecipes (line 617) | private void registerRecipes() {
method loadClasses (line 630) | @SneakyThrows
method forName (line 646) | private void forName(String string) {
method beforeStart (line 652) | @Mod.EventHandler
method cleanup (line 657) | @Mod.EventHandler
method registerCommands (line 672) | @Mod.EventHandler
method serverStarted (line 677) | @Mod.EventHandler
method certificateWarning (line 682) | @Mod.EventHandler
method getComputerLP (line 693) | public static Object getComputerLP() {
method registerPipes (line 700) | public void registerPipes(IForgeRegistry<Item> registry) {
method registerPipe (line 740) | protected void registerPipe(IForgeRegistry<Item> registry, String name...
method registerShapelessResetRecipe (line 756) | protected void registerShapelessResetRecipe(Item fromItem, Item toItem) {
method getClientPlayerConfig (line 775) | public static ClientConfiguration getClientPlayerConfig() {
method getServerConfigManager (line 782) | public static ServerConfigurationManager getServerConfigManager() {
FILE: common/logisticspipes/api/IHUDArmor.java
type IHUDArmor (line 7) | public interface IHUDArmor {
method isEnabled (line 9) | boolean isEnabled(@Nonnull ItemStack item);
FILE: common/logisticspipes/api/ILPPipe.java
type ILPPipe (line 6) | public interface ILPPipe {
method isRoutedPipe (line 11) | boolean isRoutedPipe();
FILE: common/logisticspipes/api/ILPPipeConfigTool.java
type ILPPipeConfigTool (line 12) | public interface ILPPipeConfigTool {
method canWrench (line 14) | boolean canWrench(EntityPlayer player, @Nonnull ItemStack wrench, ILPP...
method wrenchUsed (line 16) | void wrenchUsed(EntityPlayer player, @Nonnull ItemStack wrench, ILPPip...
FILE: common/logisticspipes/api/ILPPipeTile.java
type ILPPipeTile (line 8) | public interface ILPPipeTile {
method getLPPipe (line 16) | ILPPipe getLPPipe();
method getBlockPos (line 18) | BlockPos getBlockPos();
FILE: common/logisticspipes/api/ILogisticsPowerProvider.java
type ILogisticsPowerProvider (line 10) | public interface ILogisticsPowerProvider extends IRoutedPowerProvider {
method getPowerLevel (line 12) | int getPowerLevel();
FILE: common/logisticspipes/api/IProgressProvider.java
type IProgressProvider (line 8) | public interface IProgressProvider {
method getMachineProgressForLP (line 14) | byte getMachineProgressForLP();
FILE: common/logisticspipes/api/IRoutedPowerProvider.java
type IRoutedPowerProvider (line 13) | public interface IRoutedPowerProvider {
method useEnergy (line 16) | boolean useEnergy(int amount);
method canUseEnergy (line 19) | boolean canUseEnergy(int amount);
method useEnergy (line 25) | boolean useEnergy(int amount, List<Object> providersToIgnore);
method canUseEnergy (line 27) | boolean canUseEnergy(int amount, List<Object> providersToIgnore);
method getX (line 29) | int getX();
method getY (line 31) | int getY();
method getZ (line 33) | int getZ();
FILE: common/logisticspipes/asm/LogisticsASMHookClass.java
class LogisticsASMHookClass (line 10) | public class LogisticsASMHookClass {
method callingClearedMethod (line 12) | public static void callingClearedMethod() {
method validate (line 16) | @SneakyThrows(Exception.class)
method invalidate (line 28) | @SneakyThrows(Exception.class)
FILE: common/logisticspipes/asm/LogisticsClassTransformer.java
class LogisticsClassTransformer (line 51) | public class LogisticsClassTransformer implements IClassTransformer {
method LogisticsClassTransformer (line 61) | public LogisticsClassTransformer() {
method transform (line 77) | @Override
method bootATRemapper (line 106) | private void bootATRemapper() {
method readClasspathATs (line 133) | private void readClasspathATs(List<IClassTransformer> modATs) {
method readClasspathATsInner (line 158) | private void readClasspathATsInner(Consumer<String> readMapFile) throw...
method applyLPTransforms (line 173) | private byte[] applyLPTransforms(String name, byte[] bytes) {
method clearNegativeInterfaceCache (line 215) | public void clearNegativeInterfaceCache() {
method handleField (line 230) | @SuppressWarnings("unchecked")
method handleLPTransformation (line 249) | @SuppressWarnings("unchecked")
method handleCCLuaJLuaMachine (line 392) | private byte[] handleCCLuaJLuaMachine(byte[] bytes) {
method handleTileEntityClass (line 488) | private byte[] handleTileEntityClass(byte[] bytes) {
method handleItemStackClass (line 561) | private byte[] handleItemStackClass(byte[] bytes) {
method handleFluidStackClass (line 565) | private byte[] handleFluidStackClass(byte[] bytes) {
method handleFluidClass (line 569) | private byte[] handleFluidClass(byte[] bytes) {
method addAddInfoPart (line 573) | private byte[] addAddInfoPart(byte[] bytes, String className) {
FILE: common/logisticspipes/asm/LogisticsPipesClassInjector.java
class LogisticsPipesClassInjector (line 22) | public class LogisticsPipesClassInjector implements IClassTransformer {
method LogisticsPipesClassInjector (line 27) | public LogisticsPipesClassInjector() throws NoSuchFieldException, Secu...
method transform (line 32) | @Override
FILE: common/logisticspipes/asm/LogisticsPipesCoreLoader.java
class LogisticsPipesCoreLoader (line 11) | @IFMLLoadingPlugin.MCVersion("1.12.2")
method LogisticsPipesCoreLoader (line 19) | public LogisticsPipesCoreLoader() throws Exception {
method getASMTransformerClass (line 24) | @Override
method getModContainerClass (line 29) | @Override
method getSetupClass (line 34) | @Override
method injectData (line 39) | @Override
method getAccessTransformerClass (line 46) | @Override
method isDevelopmentEnvironment (line 51) | public static boolean isDevelopmentEnvironment() {
FILE: common/logisticspipes/asm/ModAccessTransformerRemapper.java
class ModAccessTransformerRemapper (line 15) | public class ModAccessTransformerRemapper {
method ModAccessTransformerRemapper (line 24) | @SuppressWarnings("unchecked")
method apply (line 53) | public void apply(IClassTransformer modAT) {
method getModifiers (line 69) | @SuppressWarnings("unchecked")
method applySingleModifier (line 85) | private void applySingleModifier(String className, Object modifier) {
method getDesc (line 120) | private String getDesc(Object modifier) {
method ensureModifierDesc (line 130) | private void ensureModifierDesc(@Nonnull Object modifier) {
method getName (line 141) | private String getName(Object modifier) {
method setName (line 151) | private void setName(Object modifier, String newName) {
method ensureModifierName (line 161) | private void ensureModifierName(@Nonnull Object modifier) {
FILE: common/logisticspipes/asm/ParamProfiler.java
class ParamProfiler (line 20) | public class ParamProfiler {
method handleClass (line 26) | public static byte[] handleClass(byte[] bytes) {
method methodStart (line 193) | @SuppressWarnings("unused") // Used by ASM
method methodEnd (line 204) | @SuppressWarnings("unused") // Used by ASM
method handleException (line 223) | @SuppressWarnings("unused") // Used by ASM
class Entry (line 229) | @Data
FILE: common/logisticspipes/asm/addinfo/IAddInfo.java
type IAddInfo (line 3) | public interface IAddInfo {
FILE: common/logisticspipes/asm/addinfo/IAddInfoProvider.java
type IAddInfoProvider (line 3) | public interface IAddInfoProvider {
method getLogisticsPipesAddInfo (line 5) | <T extends IAddInfo> T getLogisticsPipesAddInfo(Class<T> clazz);
method setLogisticsPipesAddInfo (line 7) | void setLogisticsPipesAddInfo(IAddInfo info);
FILE: common/logisticspipes/asm/mcmp/ClassBlockMultipartContainerHandler.java
class ClassBlockMultipartContainerHandler (line 15) | public class ClassBlockMultipartContainerHandler {
method handleClass (line 17) | public static byte[] handleClass(byte[] bytes) {
FILE: common/logisticspipes/asm/mcmp/MCMPHooks.java
class MCMPHooks (line 7) | public class MCMPHooks {
type IMCMPGetTEHook (line 9) | public interface IMCMPGetTEHook {
method apply (line 11) | TileEntity apply(IBlockAccess world, BlockPos pos);
method getTileEntityForBlockClass (line 16) | public static TileEntity getTileEntityForBlockClass(IBlockAccess world...
FILE: common/logisticspipes/asm/td/ClassRenderDuctItemsHandler.java
class ClassRenderDuctItemsHandler (line 14) | public class ClassRenderDuctItemsHandler {
method handleRenderDuctItemsClass (line 16) | public static byte[] handleRenderDuctItemsClass(byte[] bytes) {
FILE: common/logisticspipes/asm/td/ClassTravelingItemHandler.java
class ClassTravelingItemHandler (line 16) | public class ClassTravelingItemHandler {
method handleTravelingItemClass (line 18) | public static byte[] handleTravelingItemClass(byte[] bytes) {
FILE: common/logisticspipes/asm/td/ILPTravelingItemInfo.java
type ILPTravelingItemInfo (line 3) | public interface ILPTravelingItemInfo {
method getLPRoutingInfoAddition (line 5) | Object getLPRoutingInfoAddition();
method setLPRoutingInfoAddition (line 7) | void setLPRoutingInfoAddition(Object info);
FILE: common/logisticspipes/asm/td/ThermalDynamicsHooks.java
class ThermalDynamicsHooks (line 11) | public class ThermalDynamicsHooks {
method travelingItemToNBT (line 13) | public static void travelingItemToNBT(TravelingItem travelingItem, NBT...
method travelingItemNBTContructor (line 21) | public static void travelingItemNBTContructor(TravelingItem travelingI...
method renderItemTransportBox (line 29) | public static void renderItemTransportBox(TravelingItem item) {
method handleItemSendPacket (line 38) | public static ItemStack handleItemSendPacket(ItemStack stack, Travelin...
FILE: common/logisticspipes/asm/te/ILPTEInformation.java
type ILPTEInformation (line 3) | public interface ILPTEInformation {
method getLPTileEntityObject (line 5) | LPTileEntityObject getLPTileEntityObject();
method setLPTileEntityObject (line 7) | void setLPTileEntityObject(LPTileEntityObject object);
FILE: common/logisticspipes/asm/te/ITileEntityChangeListener.java
type ITileEntityChangeListener (line 7) | public interface ITileEntityChangeListener {
method pipeRemoved (line 9) | void pipeRemoved(DoubleCoordinates pos);
method pipeAdded (line 11) | void pipeAdded(DoubleCoordinates pos, EnumFacing side);
FILE: common/logisticspipes/asm/te/LPTileEntityObject.java
class LPTileEntityObject (line 9) | public class LPTileEntityObject {
method getCacheHolder (line 16) | public CacheHolder getCacheHolder() {
method trigger (line 23) | public void trigger(CacheTypes type) {
FILE: common/logisticspipes/asm/util/ASMHelper.java
class ASMHelper (line 22) | public class ASMHelper {
method getContentForMethod (line 26) | public static String getContentForMethod(ClassReader classReader, Stri...
method getContentForMethod (line 30) | public static String getContentForMethod(ClassReader classReader, Stri...
method getCheckSumForMethod (line 62) | public static String getCheckSumForMethod(ClassReader classReader, Str...
method getCheckSumForMethod (line 66) | public static String getCheckSumForMethod(ClassReader classReader, Str...
method toSHA1 (line 74) | public static String toSHA1(byte[] convertme) {
method getHex (line 84) | private static String getHex(byte[] raw) {
class FilterClassVisitor (line 95) | private static class FilterClassVisitor extends ClassVisitor {
method FilterClassVisitor (line 100) | public FilterClassVisitor(TraceClassVisitor traceClassVisitor, Strin...
method visitMethod (line 106) | @Override
class FilterMaxVisitMethodVisitor (line 115) | private static class FilterMaxVisitMethodVisitor extends MethodVisitor {
method FilterMaxVisitMethodVisitor (line 117) | public FilterMaxVisitMethodVisitor(MethodVisitor mv) {
method visitMaxs (line 121) | @Override
class MethodTextifier (line 125) | private static class MethodTextifier extends Printer {
method MethodTextifier (line 127) | public MethodTextifier() {
method visit (line 131) | @Override
method visitSource (line 134) | @Override
method visitOuterClass (line 137) | @Override
method visitClassAnnotation (line 140) | @Override
method visitClassAttribute (line 145) | @Override
method visitInnerClass (line 148) | @Override
method visitField (line 151) | @Override
method visitMethod (line 156) | @Override
method visitClassEnd (line 163) | @Override
method visit (line 166) | @Override
method visitEnum (line 169) | @Override
method visitAnnotation (line 172) | @Override
method visitArray (line 177) | @Override
method visitAnnotationEnd (line 182) | @Override
method visitFieldAnnotation (line 185) | @Override
method visitFieldAttribute (line 190) | @Override
method visitFieldEnd (line 195) | @Override
method visitAnnotationDefault (line 198) | @Override
method visitMethodAnnotation (line 203) | @Override
method visitParameterAnnotation (line 208) | @Override
method visitMethodAttribute (line 213) | @Override
method visitCode (line 216) | @Override
method visitFrame (line 219) | @Override
method visitInsn (line 222) | @Override
method visitIntInsn (line 225) | @Override
method visitVarInsn (line 228) | @Override
method visitTypeInsn (line 231) | @Override
method visitFieldInsn (line 234) | @Override
method visitMethodInsn (line 237) | @Override
method visitInvokeDynamicInsn (line 240) | @Override
method visitJumpInsn (line 243) | @Override
method visitLabel (line 246) | @Override
method visitLdcInsn (line 249) | @Override
method visitIincInsn (line 252) | @Override
method visitTableSwitchInsn (line 255) | @Override
method visitLookupSwitchInsn (line 258) | @Override
method visitMultiANewArrayInsn (line 261) | @Override
method visitTryCatchBlock (line 264) | @Override
method visitLocalVariable (line 267) | @Override
method visitLineNumber (line 270) | @Override
method visitMaxs (line 273) | @Override
method visitMethodEnd (line 276) | @Override
method visitAttribute (line 279) | public void visitAttribute(final Attribute attr) {}
FILE: common/logisticspipes/asm/wrapper/AbstractSubWrapper.java
class AbstractSubWrapper (line 5) | public abstract class AbstractSubWrapper extends AbstractWrapper {
method AbstractSubWrapper (line 9) | public AbstractSubWrapper(AbstractWrapper wrapper) {
method isEnabled (line 13) | @Override
method canTryAnyway (line 18) | @Override
method handleException (line 23) | @Override
method getName (line 28) | @Override
method getTypeName (line 33) | @Override
method getState (line 38) | @Override
method getReason (line 43) | @Override
method getModId (line 48) | @Override
method getWrapperInterfaces (line 53) | @Override
method reEnable (line 58) | @Override
FILE: common/logisticspipes/asm/wrapper/AbstractWrapper.java
class AbstractWrapper (line 14) | public abstract class AbstractWrapper {
method handleException (line 29) | @SneakyThrows(Throwable.class)
method reEnable (line 48) | public void reEnable() {
method isEnabled (line 56) | protected boolean isEnabled() {
method canTryAnyway (line 60) | protected boolean canTryAnyway() {
method getName (line 64) | public abstract String getName();
method getTypeName (line 66) | public abstract String getTypeName();
FILE: common/logisticspipes/asm/wrapper/CraftingRecipeProviderWrapper.java
class CraftingRecipeProviderWrapper (line 8) | class CraftingRecipeProviderWrapper extends AbstractWrapper implements I...
method CraftingRecipeProviderWrapper (line 13) | CraftingRecipeProviderWrapper(ICraftingRecipeProvider provider, String...
method getName (line 18) | @Override
method getTypeName (line 23) | @Override
method canOpenGui (line 28) | @Override
method importRecipe (line 40) | @Override
FILE: common/logisticspipes/asm/wrapper/GenericLPPipeConfigToolWrapper.java
class GenericLPPipeConfigToolWrapper (line 12) | public class GenericLPPipeConfigToolWrapper extends AbstractWrapper impl...
method GenericLPPipeConfigToolWrapper (line 17) | GenericLPPipeConfigToolWrapper(ILPPipeConfigToolWrapper wrapper, Strin...
method getName (line 22) | @Override
method getTypeName (line 27) | @Override
method getWrappedTool (line 32) | @Override
class GenericLPPipeConfigTool (line 47) | static class GenericLPPipeConfigTool extends AbstractSubWrapper implem...
method GenericLPPipeConfigTool (line 51) | public GenericLPPipeConfigTool(ILPPipeConfigTool tool, AbstractWrapp...
method canWrench (line 56) | @Override
method wrenchUsed (line 68) | @Override
FILE: common/logisticspipes/asm/wrapper/GenericProgressProviderWrapper.java
class GenericProgressProviderWrapper (line 7) | public class GenericProgressProviderWrapper extends AbstractWrapper impl...
method GenericProgressProviderWrapper (line 12) | GenericProgressProviderWrapper(IGenericProgressProvider provider, Stri...
method isType (line 17) | @Override
method getProgress (line 29) | @Override
method getName (line 41) | @Override
method getTypeName (line 46) | @Override
FILE: common/logisticspipes/asm/wrapper/LogisticsWrapperHandler.java
class LogisticsWrapperHandler (line 39) | public class LogisticsWrapperHandler {
method LogisticsWrapperHandler (line 48) | private LogisticsWrapperHandler() {}
method getWrappedPipeConfigToolWrapper (line 50) | public static ILPPipeConfigToolWrapper getWrappedPipeConfigToolWrapper...
method getWrappedProgressProvider (line 85) | public static IGenericProgressProvider getWrappedProgressProvider(Stri...
method getWrappedRecipeProvider (line 120) | public static ICraftingRecipeProvider getWrappedRecipeProvider(String ...
method getWrappedProxy (line 155) | @SuppressWarnings("unchecked")
method getWrappedSubProxy (line 307) | @SuppressWarnings("unchecked")
method loadClass (line 419) | private static Class<?> loadClass(byte[] data, String lookfor) throws ...
method addGetTypeName (line 427) | private static void addGetTypeName(ClassWriter cw, String className, S...
method addGetName (line 442) | private static void addGetName(ClassWriter cw, String className, Strin...
method addProxyMethod (line 457) | private static void addProxyMethod(ClassWriter cw, Method method, Stri...
method addMethodParameterLoad (line 578) | private static void addMethodParameterLoad(MethodVisitor mv, Method me...
method addParameterVars (line 604) | private static void addParameterVars(MethodVisitor mv, Method method, ...
method getPrimitiveMapping (line 615) | private static String getPrimitiveMapping(Class<?> clazz) {
method getPrimitiveReturnMapping (line 635) | private static int getPrimitiveReturnMapping(Class<?> clazz) {
method getClassSignature (line 649) | private static String getClassSignature(Class<?> clazz) {
method saveGeneratedClass (line 663) | public static void saveGeneratedClass(final byte[] data, final String ...
FILE: common/logisticspipes/asm/wrapper/WrapperState.java
type WrapperState (line 3) | public enum WrapperState {
FILE: common/logisticspipes/blocks/BlockDummy.java
class BlockDummy (line 21) | public class BlockDummy extends Block {
method BlockDummy (line 28) | public BlockDummy() {
method createBlockState (line 33) | @Nonnull
method getStateFromMeta (line 39) | @Nonnull
method getMetaFromState (line 45) | @Override
method hasTileEntity (line 50) | @Override
method breakBlock (line 55) | @Override
FILE: common/logisticspipes/blocks/LogisticsProgramCompilerTileEntity.java
class LogisticsProgramCompilerTileEntity (line 38) | public class LogisticsProgramCompilerTileEntity extends LogisticsSolidTi...
class ProgrammCategories (line 40) | public static class ProgrammCategories {
method getGuiProvider (line 77) | @Override
method getNBTTagListForKey (line 82) | public NBTTagList getNBTTagListForKey(String key) {
method triggerNewTask (line 96) | public void triggerNewTask(ResourceLocation category, String taskType) {
method guiOpenedByPlayer (line 105) | @Override
method getClientUpdatePacket (line 111) | private CoordinatesPacket getClientUpdatePacket() {
method guiClosedByPlayer (line 121) | @Override
method update (line 126) | @Override
method updateClient (line 199) | public void updateClient() {
method onBlockBreak (line 203) | @Override
method setStateOnClient (line 208) | public void setStateOnClient(CompilerStatusPacket compilerStatusPacket) {
method readFromNBT (line 216) | @Override
method writeToNBT (line 222) | @Override
FILE: common/logisticspipes/blocks/LogisticsSecurityTileEntity.java
class LogisticsSecurityTileEntity (line 47) | public class LogisticsSecurityTileEntity extends LogisticsSolidTileEntit...
method invalidate (line 68) | @Override
method validate (line 76) | @Override
method onChunkUnload (line 84) | @Override
method deauthorizeStation (line 92) | public void deauthorizeStation() {
method authorizeStation (line 96) | public void authorizeStation() {
method guiOpenedByPlayer (line 100) | @Override
method guiClosedByPlayer (line 109) | @Override
method getSecId (line 114) | public UUID getSecId() {
method setClientUUID (line 123) | public void setClientUUID(UUID id) {
method setClientCC (line 129) | public void setClientCC(boolean flag) {
method setClientDestroy (line 135) | public void setClientDestroy(boolean flag) {
method readFromNBT (line 141) | @Override
method writeToNBT (line 168) | @Override
method buttonFreqCard (line 193) | public void buttonFreqCard(int integer, EntityPlayer player) {
method handleOpenSecurityPlayer (line 234) | public void handleOpenSecurityPlayer(EntityPlayer player, @Nonnull Str...
method saveNewSecuritySettings (line 246) | public void saveNewSecuritySettings(NBTTagCompound tag) {
method getSecuritySettingsForPlayer (line 255) | public SecuritySettings getSecuritySettingsForPlayer(EntityPlayer enti...
method changeCC (line 272) | public void changeCC() {
method changeDestroy (line 277) | public void changeDestroy() {
method addCCToList (line 282) | public void addCCToList(Integer id) {
method removeCCFromList (line 289) | public void removeCCFromList(Integer id) {
method requestList (line 293) | public void requestList(EntityPlayer player) {
method handleListPacket (line 303) | public void handleListPacket(NBTTagCompound tag) {
method getAllowCC (line 312) | @Override
method canAutomatedDestroy (line 320) | @Override
method useEnergy (line 328) | private boolean useEnergy(int amount) {
method addInfoToCrashReport (line 347) | @Override
method getGuiProvider (line 353) | @Override
FILE: common/logisticspipes/blocks/LogisticsSolidBlock.java
class LogisticsSolidBlock (line 40) | public class LogisticsSolidBlock extends Block {
type Type (line 49) | public enum Type {
method Type (line 75) | Type(int meta) {
method Type (line 79) | Type(int meta, @Nullable Supplier<TileEntity> teConstructor) {
method Type (line 83) | Type(int meta, @Nullable Supplier<TileEntity> teConstructor, boolean...
method hasTE (line 89) | public boolean hasTE() {
method createTE (line 93) | public TileEntity createTE() {
method LogisticsSolidBlock (line 102) | public LogisticsSolidBlock(Type type) {
method onNeighborChange (line 110) | @Override
method onBlockActivated (line 119) | @Override
method onBlockPlacedBy (line 133) | @Override
method breakBlock (line 145) | @Override
method createTileEntity (line 154) | @Nullable
method hasTileEntity (line 161) | @Override
method createBlockState (line 166) | @Nonnull
method getMetaFromState (line 176) | @Override
method getActualState (line 181) | @Nonnull
FILE: common/logisticspipes/blocks/LogisticsSolidTileEntity.java
class LogisticsSolidTileEntity (line 44) | @ModDependentInterface(modId = { LPConstants.openComputersModID, LPConst...
method LogisticsSolidTileEntity (line 58) | public LogisticsSolidTileEntity() {
method readFromNBT (line 62) | @Override
method writeToNBT (line 69) | @Nonnull
method onChunkUnload (line 78) | @Override
method update (line 84) | @Override
method tryUpdateBlockFormat (line 102) | protected void tryUpdateBlockFormat() {
method shouldRefresh (line 113) | @Override
method invalidate (line 121) | @Override
method onBlockBreak (line 127) | public void onBlockBreak() {
method getRotation (line 130) | @Override
method isActive (line 136) | public boolean isActive() {
method setRotation (line 140) | @Override
method notifyOfBlockChange (line 145) | public void notifyOfBlockChange() {
method node (line 148) | @Override
method onConnect (line 154) | @Override
method onDisconnect (line 159) | @Override
method onMessage (line 164) | @Override
method invoke (line 169) | @Override
method methods (line 177) | @Override
method sidedNode (line 183) | @Override
method canConnect (line 194) | @Override
method getOCNode (line 202) | @Override
method getLPPosition (line 207) | public DoubleCoordinates getLPPosition() {
method getWorldForHUD (line 211) | public World getWorldForHUD() {
method getTypeHolder (line 215) | @Override
FILE: common/logisticspipes/blocks/crafting/AutoCraftingInventory.java
class AutoCraftingInventory (line 12) | public class AutoCraftingInventory extends InventoryCrafting {
method AutoCraftingInventory (line 16) | public AutoCraftingInventory(PlayerIdentifier playerID) {
FILE: common/logisticspipes/blocks/crafting/LogisticsCraftingTableTileEntity.java
class LogisticsCraftingTableTileEntity (line 56) | public class LogisticsCraftingTableTileEntity extends LogisticsSolidTile...
method LogisticsCraftingTableTileEntity (line 74) | public LogisticsCraftingTableTileEntity() {
method cacheRecipe (line 78) | public void cacheRecipe() {
method cycleRecipe (line 133) | public void cycleRecipe(boolean down) {
method outputFuzzy (line 199) | public IBitSet outputFuzzy() {
method inputFuzzy (line 204) | public IBitSet inputFuzzy(int slot) {
method getOutput (line 209) | @Nonnull
method onBlockBreak (line 347) | @Override
method InventoryChanged (line 352) | @Override
method handleNEIRecipePacket (line 359) | public void handleNEIRecipePacket(NonNullList<ItemStack> content) {
method readFromNBT (line 368) | @Override
method writeToNBT (line 398) | @Override
method hasCapability (line 417) | @Override
method getCapability (line 425) | @Nullable
method getSizeInventory (line 434) | @Override
method isEmpty (line 439) | @Override
method getStackInSlot (line 444) | @Override
method decrStackSize (line 450) | @Override
method removeStackFromSlot (line 456) | @Override
method setInventorySlotContents (line 462) | @Override
method getInventoryStackLimit (line 467) | @Override
method isUsableByPlayer (line 472) | @Override
method openInventory (line 477) | @Override
method closeInventory (line 481) | @Override
method isItemValidForSlot (line 485) | @Override
method getField (line 501) | @Override
method setField (line 506) | @Override
method getFieldCount (line 511) | @Override
method clear (line 516) | @Override
method placedBy (line 521) | public void placedBy(EntityLivingBase par5EntityLivingBase) {
method isFuzzy (line 527) | public boolean isFuzzy() {
method getGuiProvider (line 531) | @Override
method guiOpenedByPlayer (line 536) | @Override
method guiClosedByPlayer (line 541) | @Override
method getName (line 546) | @Nonnull
method hasCustomName (line 552) | @Override
method getDisplayName (line 557) | @Nullable
method onWorldUnload (line 563) | @SubscribeEvent
FILE: common/logisticspipes/blocks/powertile/LogisticsIC2PowerProviderTileEntity.java
class LogisticsIC2PowerProviderTileEntity (line 17) | @ModDependentInterface(modId = { LPConstants.ic2ModID }, interfacePath =...
method LogisticsIC2PowerProviderTileEntity (line 27) | public LogisticsIC2PowerProviderTileEntity() {
method update (line 31) | @Override
method invalidate (line 42) | @Override
method validate (line 54) | @Override
method onChunkUnload (line 65) | @Override
method addEnergy (line 77) | public void addEnergy(double amount) {
method freeSpace (line 90) | public double freeSpace() {
method getMaxStorage (line 94) | @Override
method readFromNBT (line 100) | @Override
method writeToNBT (line 105) | @Override
method getBrand (line 110) | @Override
method getMaxProvidePerTick (line 115) | @Override
method handlePower (line 120) | @Override
method getLaserColor (line 125) | @Override
method acceptsEnergyFrom (line 130) | @Override
method getDemandedEnergy (line 136) | @Override
method getSinkTier (line 142) | @Override
method injectEnergy (line 148) | @Override
FILE: common/logisticspipes/blocks/powertile/LogisticsPowerJunctionTileEntity.java
class LogisticsPowerJunctionTileEntity (line 50) | @ModDependentInterface(modId = { LPConstants.ic2ModID }, interfacePath =...
method receiveEnergy (line 86) | @Override
method extractEnergy (line 104) | @Override
method getEnergyStored (line 109) | @Override
method getMaxEnergyStored (line 114) | @Override
method canExtract (line 119) | @Override
method canReceive (line 124) | @Override
method LogisticsPowerJunctionTileEntity (line 132) | public LogisticsPowerJunctionTileEntity() {
method useEnergy (line 137) | @Override
method canUseEnergy (line 153) | @Override
method useEnergy (line 161) | @Override
method freeSpace (line 166) | public int freeSpace() {
method updateClients (line 170) | public void updateClients() {
method canUseEnergy (line 176) | @Override
method addEnergy (line 181) | public void addEnergy(float amount) {
method readFromNBT (line 195) | @Override
method writeToNBT (line 204) | @Override
method update (line 212) | @Override
method invalidate (line 232) | @Override
method validate (line 244) | @Override
method onChunkUnload (line 255) | @Override
method getPowerLevel (line 267) | @Override
method getDisplayPowerLevel (line 273) | @Override
method getBrand (line 278) | @Override
method getMaxStorage (line 283) | @Override
method getChargeState (line 289) | @Override
method guiOpenedByPlayer (line 294) | @Override
method guiClosedByPlayer (line 300) | @Override
method handlePowerPacket (line 305) | public void handlePowerPacket(int integer) {
method getRenderer (line 311) | @Override
method getX (line 316) | @Override
method getY (line 321) | @Override
method getZ (line 326) | @Override
method startWatching (line 331) | @Override
method stopWatching (line 336) | @Override
method playerStartWatching (line 341) | @Override
method playerStopWatching (line 347) | @Override
method isHUDExistent (line 352) | @Override
method addInfoToCrashReport (line 357) | @Override
method acceptsEnergyFrom (line 363) | @Override
method transferFromIC2Buffer (line 369) | private void transferFromIC2Buffer() {
method getDemandedEnergy (line 377) | @Override
method injectEnergy (line 388) | @Override
method getSinkTier (line 396) | @Override
method isHUDInvalid (line 402) | @Override
method hasCapability (line 407) | @Override
method getCapability (line 418) | @Nullable
method getGuiProvider (line 430) | @Override
FILE: common/logisticspipes/blocks/powertile/LogisticsPowerProviderTileEntity.java
class LogisticsPowerProviderTileEntity (line 53) | @CCType(name = "LogisticsPowerProvider")
method LogisticsPowerProviderTileEntity (line 76) | protected LogisticsPowerProviderTileEntity() {
method update (line 80) | @Override
method handlePower (line 132) | protected abstract void handlePower(CoreRoutedPipe pipe, double toSend);
method sendPowerLaserPackets (line 134) | private void sendPowerLaserPackets(IRouter sourceRouter, IRouter desti...
method getMaxProvidePerTick (line 170) | protected abstract double getMaxProvidePerTick();
method getLaserColor (line 172) | @CCCommand(description = "Returns the color for the power provided by ...
method getMaxStorage (line 175) | @Override
method getBrand (line 179) | @Override
method invalidate (line 183) | @Override
method validate (line 191) | @Override
method onChunkUnload (line 199) | @Override
method requestPower (line 207) | @Override
method getPowerLevel (line 228) | @Override
method usePaused (line 234) | @Override
method readFromNBT (line 239) | @Override
method writeToNBT (line 251) | @Override
method getRenderer (line 259) | @Override
method getX (line 264) | @Override
method getY (line 269) | @Override
method getZ (line 274) | @Override
method startWatching (line 279) | @Override
method stopWatching (line 284) | @Override
method playerStartWatching (line 289) | @Override
method playerStopWatching (line 295) | @Override
method isHUDExistent (line 300) | @Override
method guiOpenedByPlayer (line 305) | @Override
method guiClosedByPlayer (line 311) | @Override
method updateClients (line 316) | public void updateClients() {
method addInfoToCrashReport (line 321) | @Override
method handlePowerPacket (line 327) | public void handlePowerPacket(double d) {
method getChargeState (line 333) | @Override
method getDisplayPowerLevel (line 338) | @Override
method isHUDInvalid (line 343) | @Override
method getGuiProvider (line 348) | @Override
FILE: common/logisticspipes/blocks/powertile/LogisticsRFPowerProviderTileEntity.java
class LogisticsRFPowerProviderTileEntity (line 18) | public class LogisticsRFPowerProviderTileEntity extends LogisticsPowerPr...
method receiveEnergy (line 26) | @Override
method extractEnergy (line 31) | @Override
method getEnergyStored (line 36) | @Override
method getMaxEnergyStored (line 41) | @Override
method canExtract (line 46) | @Override
method canReceive (line 51) | @Override
method LogisticsRFPowerProviderTileEntity (line 59) | public LogisticsRFPowerProviderTileEntity() {
method addEnergy (line 63) | public void addEnergy(double amount) {
method addStoredRF (line 76) | private void addStoredRF() {
method freeSpace (line 86) | public int freeSpace() {
method update (line 90) | @Override
method getMaxStorage (line 100) | @Override
method readFromNBT (line 106) | @Override
method writeToNBT (line 112) | @Override
method getBrand (line 119) | @Override
method getMaxProvidePerTick (line 124) | @Override
method handlePower (line 129) | @Override
method getLaserColor (line 134) | @Override
method hasCapability (line 139) | @Override
method getCapability (line 147) | @Nullable
FILE: common/logisticspipes/blocks/stats/LogisticsStatisticsTileEntity.java
class LogisticsStatisticsTileEntity (line 19) | public class LogisticsStatisticsTileEntity extends LogisticsSolidTileEnt...
method notifyOfBlockChange (line 25) | @Override
method update (line 31) | @Override
method readFromNBT (line 46) | @Override
method writeToNBT (line 58) | @Override
method getGuiProvider (line 72) | @Override
method getConnectedPipe (line 77) | public CoreRoutedPipe getConnectedPipe() {
FILE: common/logisticspipes/blocks/stats/TrackingTask.java
class TrackingTask (line 12) | public class TrackingTask {
method tick (line 19) | public void tick(int tickCount, CoreRoutedPipe pipe) {
method readFromNBT (line 29) | public void readFromNBT(NBTTagCompound nbt) {
method writeToNBT (line 42) | public void writeToNBT(NBTTagCompound nbt) {
method writeToLPData (line 55) | public void writeToLPData(LPDataOutput output) {
method readFromLPData (line 61) | public void readFromLPData(LPDataInput input) {
FILE: common/logisticspipes/commands/LogisticsPipesCommand.java
class LogisticsPipesCommand (line 22) | public class LogisticsPipesCommand extends CommandBase {
method LogisticsPipesCommand (line 26) | public LogisticsPipesCommand() {
method getName (line 30) | @Nonnull
method getUsage (line 36) | @Nonnull
method execute (line 48) | @Override
method isOP (line 72) | public static boolean isOP(ICommandSender sender) {
FILE: common/logisticspipes/commands/MainCommandHandler.java
class MainCommandHandler (line 21) | public class MainCommandHandler extends SubCommandHandler {
method getNames (line 23) | @Override
method isCommandUsableBy (line 28) | @Override
method getDescription (line 33) | @Override
method registerSubCommands (line 38) | @Override
FILE: common/logisticspipes/commands/abstracts/ICommandHandler.java
type ICommandHandler (line 5) | public interface ICommandHandler {
method getNames (line 7) | String[] getNames();
method isCommandUsableBy (line 9) | boolean isCommandUsableBy(ICommandSender sender);
method getDescription (line 11) | String[] getDescription();
method executeCommand (line 13) | void executeCommand(ICommandSender sender, String[] args);
FILE: common/logisticspipes/commands/abstracts/SubCommandHandler.java
class SubCommandHandler (line 16) | public abstract class SubCommandHandler implements ICommandHandler {
method SubCommandHandler (line 18) | public SubCommandHandler() {
method registerSubCommands (line 24) | public abstract void registerSubCommands();
method registerSubCommand (line 26) | protected final void registerSubCommand(ICommandHandler newHandler) {
method displayHelp (line 38) | public final void displayHelp(ICommandSender sender) {
method executeCommand (line 65) | @Override
FILE: common/logisticspipes/commands/chathelper/LPChatListener.java
class LPChatListener (line 27) | public class LPChatListener {
method serverChat (line 34) | @SubscribeEvent
method clientChat (line 72) | @SubscribeEvent
method clearChat (line 109) | @ClientSideOnlyMethodContent
method storeSendMessages (line 114) | @ClientSideOnlyMethodContent
method restoreSendMessages (line 120) | @ClientSideOnlyMethodContent
method addSendMessages (line 130) | @ClientSideOnlyMethodContent
method register (line 139) | public static void register(MorePageDisplay displayInput, String name) {
method remove (line 146) | public static void remove(String name) {
method handleAnswer (line 150) | public boolean handleAnswer(boolean flag, ICommandSender sender) {
method existTaskFor (line 173) | public static boolean existTaskFor(String name) {
method removeTask (line 177) | public static void removeTask(String name) {
method addTask (line 181) | public static boolean addTask(Callable<Boolean> input, ICommandSender ...
FILE: common/logisticspipes/commands/chathelper/MorePageDisplay.java
class MorePageDisplay (line 15) | public class MorePageDisplay {
method MorePageDisplay (line 27) | public MorePageDisplay(ArrayList<String> header, ICommandSender name) {
method MorePageDisplay (line 35) | public MorePageDisplay(String[] header, ICommandSender name) {
method getRow (line 44) | public int getRow() {
method getColum (line 48) | public int getColum() {
method append (line 52) | public void append(String input) {
method append (line 56) | public void append(String input, boolean flag) {
method isTerminated (line 60) | public boolean isTerminated() {
method display (line 64) | public void display(ICommandSender sender) {
method display (line 68) | public void display(ICommandSender player, int page) {
method replaceMeta (line 72) | private String replaceMeta(String input, int page, int count) {
method handleChat (line 150) | public boolean handleChat(String input, ICommandSender sender) {
method isNumber (line 219) | public static boolean isNumber(String input) {
method toNumber (line 230) | public static int toNumber(String input) {
method clearscreen (line 237) | private void clearscreen(ICommandSender sender, int count) {
method display (line 243) | public void display(ICommandSender sender, int page, boolean flag) {
method printLastLine (line 247) | public void printLastLine(ICommandSender sender) {
method printLastLine (line 251) | public void printLastLine(ICommandSender sender, boolean flag) {
method getPageCount (line 256) | public int getPageCount(int count) {
method display (line 272) | public void display(ICommandSender sender, int page, boolean flag, boo...
class StringConnected (line 325) | private static class StringConnected {
method StringConnected (line 327) | StringConnected(String s, boolean b) {
FILE: common/logisticspipes/commands/commands/BypassCommand.java
class BypassCommand (line 11) | public class BypassCommand implements ICommandHandler {
method getNames (line 13) | @Override
method isCommandUsableBy (line 18) | @Override
method getDescription (line 23) | @Override
method executeCommand (line 28) | @Override
FILE: common/logisticspipes/commands/commands/ChangelogCommand.java
class ChangelogCommand (line 11) | public class ChangelogCommand implements ICommandHandler {
method getNames (line 13) | @Override
method isCommandUsableBy (line 18) | @Override
method getDescription (line 23) | @Override
method executeCommand (line 28) | @Override
FILE: common/logisticspipes/commands/commands/ClearCommand.java
class ClearCommand (line 9) | public class ClearCommand implements ICommandHandler {
method getNames (line 11) | @Override
method isCommandUsableBy (line 16) | @Override
method getDescription (line 21) | @Override
method executeCommand (line 26) | @Override
FILE: common/logisticspipes/commands/commands/DebugCommand.java
class DebugCommand (line 15) | public class DebugCommand extends SubCommandHandler {
method getNames (line 19) | @Override
method isCommandUsableBy (line 24) | @Override
method getDescription (line 29) | @Override
method registerSubCommands (line 34) | @Override
FILE: common/logisticspipes/commands/commands/DummyCommand.java
class DummyCommand (line 7) | public class DummyCommand implements ICommandHandler {
method getNames (line 9) | @Override
method isCommandUsableBy (line 14) | @Override
method getDescription (line 19) | @Override
method executeCommand (line 24) | @Override
FILE: common/logisticspipes/commands/commands/DumpCommand.java
class DumpCommand (line 9) | public class DumpCommand implements ICommandHandler {
method getNames (line 11) | @Override
method isCommandUsableBy (line 16) | @Override
method getDescription (line 21) | @Override
method executeCommand (line 26) | @Override
FILE: common/logisticspipes/commands/commands/NBTDebugCommand.java
class NBTDebugCommand (line 13) | public class NBTDebugCommand implements ICommandHandler {
method getNames (line 15) | @Override
method isCommandUsableBy (line 20) | @Override
method getDescription (line 25) | @Override
method executeCommand (line 30) | @Override
FILE: common/logisticspipes/commands/commands/NameLookupCommand.java
class NameLookupCommand (line 11) | public class NameLookupCommand implements ICommandHandler {
method getNames (line 13) | @Override
method isCommandUsableBy (line 18) | @Override
method getDescription (line 23) | @Override
method executeCommand (line 28) | @Override
FILE: common/logisticspipes/commands/commands/RoutingThreadCommand.java
class RoutingThreadCommand (line 9) | public class RoutingThreadCommand implements ICommandHandler {
method getNames (line 11) | @Override
method isCommandUsableBy (line 16) | @Override
method getDescription (line 21) | @Override
method executeCommand (line 26) | @Override
FILE: common/logisticspipes/commands/commands/TestCommand.java
class TestCommand (line 15) | public class TestCommand implements ICommandHandler {
method getNames (line 17) | @Override
method isCommandUsableBy (line 22) | @Override
method getDescription (line 27) | @Override
method executeCommand (line 32) | @Override
FILE: common/logisticspipes/commands/commands/TransferNamesCommand.java
class TransferNamesCommand (line 13) | public class TransferNamesCommand implements ICommandHandler {
method getNames (line 15) | @Override
method isCommandUsableBy (line 20) | @Override
method getDescription (line 25) | @Override
method executeCommand (line 30) | @Override
FILE: common/logisticspipes/commands/commands/VersionCommand.java
class VersionCommand (line 10) | public class VersionCommand implements ICommandHandler {
method getNames (line 12) | @Override
method isCommandUsableBy (line 17) | @Override
method getDescription (line 22) | @Override
method executeCommand (line 27) | @Override
FILE: common/logisticspipes/commands/commands/WrapperCommand.java
class WrapperCommand (line 10) | public class WrapperCommand extends SubCommandHandler {
method getNames (line 12) | @Override
method isCommandUsableBy (line 17) | @Override
method getDescription (line 22) | @Override
method registerSubCommands (line 27) | @Override
FILE: common/logisticspipes/commands/commands/debug/DebugGuiController.java
class DebugGuiController (line 28) | public class DebugGuiController {
method DebugGuiController (line 38) | private DebugGuiController() {}
method instance (line 40) | public static DebugGuiController instance() {
method execClient (line 47) | public void execClient() {
method execServer (line 53) | public void execServer() {
method startWatchingOf (line 63) | public void startWatchingOf(Object object, EntityPlayer player) {
method createNewDebugGui (line 89) | public void createNewDebugGui(String name, int identification) {
method handleDataPacket (line 104) | public void handleDataPacket(byte[] payload, int identifier, EntityPla...
class DataConnectionServer (line 139) | @AllArgsConstructor
method passData (line 145) | @Override
method closeCon (line 150) | @Override
class DataConnectionClient (line 156) | @AllArgsConstructor
method passData (line 161) | @Override
method closeCon (line 166) | @Override
class ObjectIdentification (line 172) | private static class ObjectIdentification implements IObjectIdentifica...
method toStringObject (line 174) | @Override
method handleObject (line 179) | @Override
FILE: common/logisticspipes/commands/commands/debug/HandCommand.java
class HandCommand (line 10) | public class HandCommand implements ICommandHandler {
method getNames (line 12) | @Override
method isCommandUsableBy (line 17) | @Override
method getDescription (line 22) | @Override
method executeCommand (line 27) | @Override
FILE: common/logisticspipes/commands/commands/debug/MeCommand.java
class MeCommand (line 9) | public class MeCommand implements ICommandHandler {
method getNames (line 11) | @Override
method isCommandUsableBy (line 16) | @Override
method getDescription (line 21) | @Override
method executeCommand (line 26) | @Override
FILE: common/logisticspipes/commands/commands/debug/PipeCommand.java
class PipeCommand (line 13) | public class PipeCommand implements ICommandHandler {
method getNames (line 15) | @Override
method isCommandUsableBy (line 20) | @Override
method getDescription (line 25) | @Override
method executeCommand (line 30) | @Override
FILE: common/logisticspipes/commands/commands/debug/RoutingTableCommand.java
class RoutingTableCommand (line 12) | public class RoutingTableCommand implements ICommandHandler {
method getNames (line 14) | @Override
method isCommandUsableBy (line 19) | @Override
method getDescription (line 24) | @Override
method executeCommand (line 29) | @Override
FILE: common/logisticspipes/commands/commands/debug/TargetCommand.java
class TargetCommand (line 12) | public class TargetCommand implements ICommandHandler {
method getNames (line 14) | @Override
method isCommandUsableBy (line 19) | @Override
method getDescription (line 24) | @Override
method executeCommand (line 29) | @Override
FILE: common/logisticspipes/commands/commands/wrapper/EnableCommand.java
class EnableCommand (line 16) | public class EnableCommand implements ICommandHandler {
method getNames (line 18) | @Override
method isCommandUsableBy (line 23) | @Override
method getDescription (line 28) | @Override
method executeCommand (line 33) | @Override
FILE: common/logisticspipes/commands/commands/wrapper/ListCommand.java
class ListCommand (line 12) | public class ListCommand implements ICommandHandler {
method getNames (line 14) | @Override
method isCommandUsableBy (line 19) | @Override
method getDescription (line 24) | @Override
method executeCommand (line 29) | @Override
FILE: common/logisticspipes/commands/commands/wrapper/ShowCommand.java
class ShowCommand (line 16) | public class ShowCommand implements ICommandHandler {
method getNames (line 18) | @Override
method isCommandUsableBy (line 23) | @Override
method getDescription (line 28) | @Override
method executeCommand (line 33) | @Override
FILE: common/logisticspipes/commands/exception/CommandNotFoundException.java
class CommandNotFoundException (line 3) | public class CommandNotFoundException extends LPCommandException {
FILE: common/logisticspipes/commands/exception/DuplicatedCommandException.java
class DuplicatedCommandException (line 3) | public class DuplicatedCommandException extends LPCommandException {
FILE: common/logisticspipes/commands/exception/LPCommandException.java
class LPCommandException (line 3) | public class LPCommandException extends RuntimeException {
FILE: common/logisticspipes/commands/exception/MissingArgumentException.java
class MissingArgumentException (line 3) | public class MissingArgumentException extends LPCommandException {
FILE: common/logisticspipes/commands/exception/PermissionDeniedException.java
class PermissionDeniedException (line 3) | public class PermissionDeniedException extends LPCommandException {
FILE: common/logisticspipes/config/Configs.java
class Configs (line 15) | public class Configs {
method load (line 70) | public static void load() {
method savePopupState (line 258) | public static void savePopupState() {
FILE: common/logisticspipes/datafixer/DataFixerSolidBlockItems.java
class DataFixerSolidBlockItems (line 11) | public class DataFixerSolidBlockItems implements IFixableData {
method getFixVersion (line 16) | @Override
method fixTagCompound (line 21) | @Nonnull
FILE: common/logisticspipes/datafixer/DataFixerTE.java
class DataFixerTE (line 12) | public class DataFixerTE implements IFixableData {
method getFixVersion (line 30) | @Override
method fixTagCompound (line 35) | @Nonnull
FILE: common/logisticspipes/datafixer/LPDataFixer.java
class LPDataFixer (line 9) | public class LPDataFixer {
method LPDataFixer (line 15) | private LPDataFixer() {}
method init (line 17) | public void init() {
FILE: common/logisticspipes/datafixer/MissingMappingHandler.java
class MissingMappingHandler (line 19) | public class MissingMappingHandler {
method onMissingBlocks (line 141) | @SubscribeEvent
method onMissingItems (line 152) | @SubscribeEvent
FILE: common/logisticspipes/entity/FakeNetServerHandler.java
class FakeNetServerHandler (line 51) | public class FakeNetServerHandler extends NetHandlerPlayServer {
class NetworkManagerFake (line 53) | public static class NetworkManagerFake extends NetworkManager {
method NetworkManagerFake (line 55) | public NetworkManagerFake() {
method channelActive (line 59) | @Override
method setConnectionState (line 62) | @Override
method channelInactive (line 65) | @Override
method exceptionCaught (line 68) | @Override
method setNetHandler (line 71) | @Override
method sendPacket (line 74) | @Override
method sendPacket (line 77) | @Override
method processReceivedPackets (line 80) | @Override
method getRemoteAddress (line 83) | @Nonnull
method isLocalChannel (line 89) | @Override
method enableEncryption (line 94) | @Override
method isChannelOpen (line 97) | @Override
method getNetHandler (line 102) | @Nonnull
method getExitMessage (line 108) | @Nonnull
method setCompressionThreshold (line 114) | @Override
method disableAutoRead (line 117) | @Override
method handleDisconnection (line 120) | @Override
method channel (line 123) | @Nonnull
method FakeNetServerHandler (line 131) | public FakeNetServerHandler(MinecraftServer server, EntityPlayerMP pla...
method update (line 135) | @Override
method disconnect (line 138) | @Override
method processInput (line 141) | @Override
method processVehicleMove (line 144) | @Override
method processConfirmTeleport (line 147) | @Override
method processPlayer (line 150) | @Override
method setPlayerLocation (line 153) | @Override
method setPlayerLocation (line 156) | @Override
method processPlayerDigging (line 159) | @Override
method processTryUseItemOnBlock (line 162) | @Override
method processTryUseItem (line 165) | @Override
method handleSpectate (line 168) | @Override
method handleResourcePackStatus (line 171) | @Override
method processSteerBoat (line 174) | @Override
method onDisconnect (line 177) | @Override
method sendPacket (line 180) | @Override
method processHeldItemChange (line 183) | @Override
method processChatMessage (line 186) | @Override
method handleAnimation (line 189) | @Override
method processEntityAction (line 192) | @Override
method processUseEntity (line 195) | @Override
method processClientStatus (line 198) | @Override
method processCloseWindow (line 201) | @Override
method processClickWindow (line 204) | @Override
method processEnchantItem (line 207) | @Override
method processCreativeInventoryAction (line 210) | @Override
method processConfirmTransaction (line 213) | @Override
method processUpdateSign (line 216) | @Override
method processKeepAlive (line 219) | @Override
method processPlayerAbilities (line 222) | @Override
method processTabComplete (line 225) | @Override
method processClientSettings (line 228) | @Override
method processCustomPayload (line 231) | @Override
FILE: common/logisticspipes/entity/FakePlayerLP.java
class FakePlayerLP (line 18) | @SuppressWarnings("EntityConstructor")
method FakePlayerLP (line 25) | public FakePlayerLP(WorldServer world) {
method getDisplayName (line 34) | @Nonnull
method onUpdate (line 40) | @Override
method unlockRecipes (line 43) | @Override
method unlockRecipes (line 46) | @Override
method resetRecipes (line 49) | @Override
FILE: common/logisticspipes/gui/GuiCardManager.java
class GuiCardManager (line 14) | public class GuiCardManager extends LogisticsBaseGuiScreen {
method GuiCardManager (line 16) | public GuiCardManager(EntityPlayer player) {
method drawGuiContainerBackgroundLayer (line 43) | @Override
FILE: common/logisticspipes/gui/GuiChassisPipe.java
class GuiChassisPipe (line 38) | public class GuiChassisPipe extends LogisticsBaseGuiScreen {
method GuiChassisPipe (line 50) | public GuiChassisPipe(EntityPlayer player, PipeLogisticsChassis chassi...
method initGui (line 83) | @Override
method updateModuleConfigButtonVisibility (line 109) | private void updateModuleConfigButtonVisibility(int slot) {
method onGuiClosed (line 119) | @Override
method actionPerformed (line 125) | @Override
method drawGuiContainerForegroundLayer (line 142) | @Override
method getModuleName (line 157) | private String getModuleName(int slot) {
method drawGuiContainerBackgroundLayer (line 174) | @Override
FILE: common/logisticspipes/gui/GuiCraftingPipe.java
class GuiCraftingPipe (line 55) | public class GuiCraftingPipe extends ModuleBaseGui {
method GuiCraftingPipe (line 81) | public GuiCraftingPipe(EntityPlayer player, ModuleCrafter module, bool...
method initGui (line 171) | @Override
method actionPerformed (line 250) | @Override
method openSubGuiForSatelliteSelection (line 332) | private void openSubGuiForSatelliteSelection(int id, boolean fluidSate...
method onGuiClosed (line 339) | @Override
method drawGuiContainerForegroundLayer (line 349) | @Override
method drawGuiContainerBackgroundLayer (line 388) | @Override
method updateCleanupModeButton (line 409) | private Unit updateCleanupModeButton(Property<Boolean> prop) {
class FluidCraftingExtension (line 415) | private final class FluidCraftingExtension extends GuiExtension {
method FluidCraftingExtension (line 419) | public FluidCraftingExtension(int id) {
method getFinalWidth (line 423) | @Override
method getFinalHeight (line 432) | @Override
method renderForeground (line 437) | @Override
method renderFluidText (line 494) | private void renderFluidText(int left, int top, int i) {
method renderSelectSlot (line 527) | @Override
class ByproductExtension (line 536) | private final class ByproductExtension extends GuiExtension {
method getFinalWidth (line 538) | @Override
method getFinalHeight (line 543) | @Override
method renderForeground (line 548) | @Override
class CleanupExtension (line 569) | private final class CleanupExtension extends GuiExtension {
method getFinalWidth (line 571) | @Override
method getFinalHeight (line 576) | @Override
method renderForeground (line 581) | @Override
FILE: common/logisticspipes/gui/GuiFirewall.java
class GuiFirewall (line 13) | public class GuiFirewall extends LogisticsBaseGuiScreen {
method GuiFirewall (line 19) | public GuiFirewall(PipeItemsFirewall pipe, EntityPlayer player) {
method initGui (line 32) | @Override
method actionPerformed (line 45) | @Override
method drawGuiContainerBackgroundLayer (line 68) | @Override
FILE: common/logisticspipes/gui/GuiFluidBasic.java
class GuiFluidBasic (line 12) | public class GuiFluidBasic extends LogisticsBaseGuiScreen {
method GuiFluidBasic (line 14) | public GuiFluidBasic(EntityPlayer player, IInventory inventory) {
method initGui (line 22) | @Override
method drawGuiContainerBackgroundLayer (line 27) | @Override
method drawGuiContainerForegroundLayer (line 34) | @Override
FILE: common/logisticspipes/gui/GuiFluidSupplierMk2Pipe.java
class GuiFluidSupplierMk2Pipe (line 27) | public class GuiFluidSupplierMk2Pipe extends LogisticsBaseGuiScreen {
method GuiFluidSupplierMk2Pipe (line 33) | public GuiFluidSupplierMk2Pipe(IInventory playerInventory, IInventory ...
method drawGuiContainerForegroundLayer (line 49) | @Override
method drawGuiContainerBackgroundLayer (line 61) | @Override
method initGui (line 73) | @Override
method actionPerformed (line 89) | @Override
method onGuiClosed (line 115) | @Override
FILE: common/logisticspipes/gui/GuiFluidSupplierPipe.java
class GuiFluidSupplierPipe (line 25) | public class GuiFluidSupplierPipe extends LogisticsBaseGuiScreen {
method GuiFluidSupplierPipe (line 31) | public GuiFluidSupplierPipe(IInventory playerInventory, IInventory dum...
method drawGuiContainerForegroundLayer (line 52) | @Override
method drawGuiContainerBackgroundLayer (line 61) | @Override
method initGui (line 70) | @Override
method actionPerformed (line 78) | @Override
method onGuiClosed (line 89) | @Override
FILE: common/logisticspipes/gui/GuiFluidTerminus.java
class GuiFluidTerminus (line 18) | public class GuiFluidTerminus extends LogisticsBaseGuiScreen {
method GuiFluidTerminus (line 24) | public GuiFluidTerminus(EntityPlayer player, PipeFluidTerminus pipe) {
method onGuiClosed (line 43) | @Override
method initGui (line 54) | @Override
method drawGuiContainerBackgroundLayer (line 59) | @Override
method drawGuiContainerForegroundLayer (line 68) | @Override
FILE: common/logisticspipes/gui/GuiFreqCardContent.java
class GuiFreqCardContent (line 12) | public class GuiFreqCardContent extends LogisticsBaseGuiScreen {
method GuiFreqCardContent (line 14) | public GuiFreqCardContent(EntityPlayer player, IInventory card) {
method drawGuiContainerBackgroundLayer (line 23) | @Override
FILE: common/logisticspipes/gui/GuiInvSysConnector.java
class GuiInvSysConnector (line 35) | public class GuiInvSysConnector extends LogisticsBaseGuiScreen implement...
method GuiInvSysConnector (line 46) | public GuiInvSysConnector(EntityPlayer player, PipeItemsInvSysConnecto...
method initGui (line 57) | @Override
method closeGui (line 81) | @Override
method drawGuiContainerBackgroundLayer (line 87) | @Override
method drawGuiContainerForegroundLayer (line 101) | @Override
method refreshPacket (line 139) | private void refreshPacket() {
method pageDown (line 143) | private void pageDown() {
method pageUp (line 151) | private void pageUp() {
method maxPage (line 159) | private int maxPage() {
method actionPerformed (line 167) | @Override
method mouseClicked (line 188) | @Override
method keyTyped (line 195) | @Override
method handleContentAnswer (line 202) | public void handleContentAnswer(Collection<ItemIdentifierStack> allIte...
method handleResistanceAnswer (line 207) | public void handleResistanceAnswer(int resistance) {
method handleChannelInformation (line 211) | @Override
FILE: common/logisticspipes/gui/GuiLogisticsCraftingTable.java
class GuiLogisticsCraftingTable (line 22) | public class GuiLogisticsCraftingTable extends LogisticsBaseGuiScreen {
method GuiLogisticsCraftingTable (line 32) | public GuiLogisticsCraftingTable(EntityPlayer player, LogisticsCraftin...
method initGui (line 61) | @Override
method drawGuiContainerBackgroundLayer (line 69) | @Override
method actionPerformed (line 105) | @Override
method isMouseInFuzzyPanel (line 112) | private boolean isMouseInFuzzyPanel(int mx, int my) {
FILE: common/logisticspipes/gui/GuiLogisticsSettings.java
class GuiLogisticsSettings (line 25) | public class GuiLogisticsSettings extends LogisticsBaseTabGuiScreen {
method GuiLogisticsSettings (line 29) | public GuiLogisticsSettings(final EntityPlayer player) {
class PipeRenderSettings (line 39) | private class PipeRenderSettings extends TabSubGui {
method PipeRenderSettings (line 46) | private PipeRenderSettings() {}
method initTab (line 48) | @Override
method renderIcon (line 67) | @Override
method renderBackgroundContent (line 81) | @Override
method buttonClicked (line 84) | @Override
method renderForegroundContent (line 94) | @Override
method handleClick (line 104) | @Override
method handleKey (line 111) | @Override
method guiClose (line 116) | @Override
FILE: common/logisticspipes/gui/GuiPipeController.java
class GuiPipeController (line 48) | public class GuiPipeController extends LogisticsBaseTabGuiScreen {
method GuiPipeController (line 54) | public GuiPipeController(final EntityPlayer player, final CoreRoutedPi...
class Upgrades (line 86) | private class Upgrades extends TabSubGui {
method Upgrades (line 92) | private Upgrades(DummyContainer dummy) {
method initTab (line 113) | @Override
method checkButton (line 128) | @Override
method showSlot (line 136) | @Override
method renderIcon (line 141) | @Override
method buttonClicked (line 155) | @Override
method renderBackgroundContent (line 164) | @Override
method renderForegroundContent (line 176) | @Override
class Security (line 185) | private class Security extends TabSubGui {
method Security (line 187) | public Security(DummyContainer dummy) {
method renderIcon (line 204) | @Override
method renderBackgroundContent (line 209) | @Override
method renderForegroundContent (line 214) | @Override
class Statistics (line 231) | private class Statistics extends TabSubGui {
method renderIcon (line 233) | @Override
method renderBackgroundContent (line 238) | @Override
method renderForegroundContent (line 243) | @Override
class Logic (line 289) | private class Logic extends TabSubGui {
method initTab (line 293) | @Override
method renderIcon (line 298) | @Override
method buttonClicked (line 312) | @Override
method renderBackgroundContent (line 320) | @Override
method checkButton (line 327) | @Override
method renderForegroundContent (line 335) | @Override
class Tasks (line 341) | private class Tasks extends TabSubGui {
method initTab (line 348) | @Override
method renderIcon (line 360) | @Override
method renderBackgroundContent (line 365) | @Override
method leavingTab (line 370) | @Override
method enteringTab (line 378) | @Override
method buttonClicked (line 386) | @Override
method renderForegroundContent (line 395) | @Override
FILE: common/logisticspipes/gui/GuiPowerJunction.java
class GuiPowerJunction (line 20) | public class GuiPowerJunction extends LogisticsBaseGuiScreen {
method GuiPowerJunction (line 26) | public GuiPowerJunction(EntityPlayer player, LogisticsPowerJunctionTil...
method drawGuiContainerForegroundLayer (line 34) | @Override
method drawGuiContainerBackgroundLayer (line 42) | @Override
method initGui (line 60) | @Override
method actionPerformed (line 69) | @Override
FILE: common/logisticspipes/gui/GuiPowerProvider.java
class GuiPowerProvider (line 14) | public class GuiPowerProvider extends LogisticsBaseGuiScreen {
method GuiPowerProvider (line 20) | public GuiPowerProvider(EntityPlayer player, LogisticsPowerProviderTil...
method drawGuiContainerBackgroundLayer (line 30) | @Override
FILE: common/logisticspipes/gui/GuiProgramCompiler.java
class GuiProgramCompiler (line 36) | public class GuiProgramCompiler extends LogisticsBaseGuiScreen {
method GuiProgramCompiler (line 47) | public GuiProgramCompiler(EntityPlayer player, LogisticsProgramCompile...
method initGui (line 138) | @Override
method closeGui (line 153) | @Override
method actionPerformed (line 159) | @Override
method drawGuiContainerBackgroundLayer (line 213) | @Override
method getProgramListForSelectionIndex (line 276) | private List<ResourceLocation> getProgramListForSelectionIndex(NBTTagL...
method getSortingClass (line 287) | private int getSortingClass(Item object) {
method handleMouseInputSub (line 298) | @Override
method keyTyped (line 323) | @Override
method mouseClicked (line 334) | @Override
method drawGuiContainerForegroundLayer (line 348) | @Override
FILE: common/logisticspipes/gui/GuiSatellitePipe.java
class GuiSatellitePipe (line 31) | public class GuiSatellitePipe extends LogisticsBaseGuiScreen {
method GuiSatellitePipe (line 41) | public GuiSatellitePipe(@Nonnull SatellitePipe satellitePipe) {
method initGui (line 54) | @Override
method closeGui (line 63) | @Override
method actionPerformed (line 69) | @Override
method drawGuiContainerForegroundLayer (line 81) | @Override
method drawGuiContainerBackgroundLayer (line 94) | @Override
method mouseClicked (line 101) | @Override
method keyTyped (line 108) | @Override
method handleResponse (line 115) | public void handleResponse(SatelliteNamingResult result, String newNam...
FILE: common/logisticspipes/gui/GuiSecurityStation.java
class GuiSecurityStation (line 40) | public class GuiSecurityStation extends LogisticsBaseGuiScreen implement...
method GuiSecurityStation (line 59) | public GuiSecurityStation(LogisticsSecurityTileEntity tile, EntityPlay...
method initGui (line 69) | @Override
method closeGui (line 102) | @Override
method actionPerformed (line 108) | @Override
method drawGuiContainerBackgroundLayer (line 140) | @Override
method mouseClicked (line 189) | @Override
method keyTyped (line 202) | @Override
method receivePlayerList (line 215) | @Override
method handlePlayerSecurityOpen (line 221) | public void handlePlayerSecurityOpen(SecuritySettings setting) {
method refreshCheckBoxes (line 226) | public void refreshCheckBoxes() {
FILE: common/logisticspipes/gui/GuiStatistics.java
class GuiStatistics (line 42) | public class GuiStatistics extends LogisticsBaseGuiScreen {
method GuiStatistics (line 56) | public GuiStatistics(final LogisticsStatisticsTileEntity tile) {
method initGui (line 61) | @Override
method closeGui (line 73) | @Override
method resetSubGui (line 79) | @Override
method getActiveTab (line 85) | private StatisticsTab getActiveTab() {
method actionPerformed (line 89) | @Override
method mouseClickMove (line 94) | @Override
method drawGuiContainerBackgroundLayer (line 102) | @Override
method drawBG (line 112) | private void drawBG() {
method keyTyped (line 134) | @Override
method mouseClicked (line 140) | @Override
method drawGuiContainerForegroundLayer (line 154) | @Override
method checkButtons (line 160) | @Override
method handleMouseInputSub (line 166) | @Override
method handlePacket1 (line 172) | public void handlePacket1(List<ItemIdentifierStack> identList) {
method handlePacket2 (line 176) | public void handlePacket2(List<ItemIdentifierStack> identList) {
type StatisticsTab (line 180) | private interface StatisticsTab {
method init (line 182) | void init();
method draw (line 184) | void draw(int mouseX, int mouseY);
method drawForegroundLayer (line 186) | default void drawForegroundLayer(int mouseX, int mouseY) {}
method checkButtons (line 188) | default void checkButtons() {}
method actionPerformed (line 190) | default void actionPerformed(GuiButton button) {}
method keyTyped (line 192) | default void keyTyped(char c, int i) {}
method handleClick (line 194) | default void handleClick(int mouseX, int mouseY, int mouseButton) {}
method onMouseDrag (line 196) | default void onMouseDrag(int x, int y, int dx, int dy) {}
method onMouseScroll (line 198) | default void onMouseScroll(int dw) {}
class TabTracker (line 202) | private class TabTracker implements StatisticsTab {
method init (line 217) | @Override
method draw (line 230) | @Override
method getSelectedTask (line 321) | @Nullable
method getTaskData (line 331) | private long[] getTaskData(TrackingTask task) {
method drawForegroundLayer (line 338) | @Override
method actionPerformed (line 343) | @Override
method keyTyped (line 365) | @Override
method handleClick (line 374) | @Override
method checkButtons (line 392) | @Override
method onMouseDrag (line 402) | @Override
method onMouseScroll (line 416) | @Override
method drawGraphPart (line 423) | private void drawGraphPart(int prevX, int prevY, int x, int y) {
method clampYPlane (line 453) | private Vec2 clampYPlane(Vec2 v, Vec2 toClamp, float x0, boolean gre...
method clampXPlane (line 467) | @SuppressWarnings("SuspiciousNameCombination")
method clampCorner (line 473) | private Vec2 clampCorner(Vec2 from, Vec2 to, Vec2 corner, boolean gr...
method formatTime (line 477) | private String formatTime(int minutes) {
method updateItemList (line 492) | public void updateItemList() {
method handlePacket (line 498) | public void handlePacket(List<ItemIdentifierStack> identList) {
class TabCrafting (line 510) | private class TabCrafting implements StatisticsTab {
method init (line 516) | @Override
method draw (line 530) | @Override
method drawForegroundLayer (line 536) | @Override
method actionPerformed (line 542) | @Override
method keyTyped (line 553) | @Override
method handleClick (line 562) | @Override
method checkButtons (line 567) | @Override
method handlePacket (line 574) | public void handlePacket(List<ItemIdentifierStack> identList) {
FILE: common/logisticspipes/gui/GuiSupplierPipe.java
class GuiSupplierPipe (line 41) | public class GuiSupplierPipe extends LogisticsBaseGuiScreen {
method GuiSupplierPipe (line 53) | public GuiSupplierPipe(IInventory playerInventory, IInventory dummyInv...
method onGuiClosed (line 88) | @Override
method drawGuiContainerForegroundLayer (line 99) | @Override
method drawGuiContainerBackgroundLayer (line 123) | @Override
method initGui (line 146) | @Override
method actionPerformed (line 159) | @Override
method refreshMode (line 182) | public void refreshMode() {
method getLimitationText (line 190) | @Nonnull
method getModeText (line 195) | private String getModeText() {
FILE: common/logisticspipes/gui/ItemAmountSignCreationGui.java
class ItemAmountSignCreationGui (line 12) | public class ItemAmountSignCreationGui extends LogisticsBaseGuiScreen {
method ItemAmountSignCreationGui (line 14) | public ItemAmountSignCreationGui(EntityPlayer player, CoreRoutedPipe p...
method drawGuiContainerBackgroundLayer (line 23) | @Override
FILE: common/logisticspipes/gui/hud/BasicHUDGui.java
class BasicHUDGui (line 14) | public abstract class BasicHUDGui implements IHeadUpDisplayRenderer {
method addButton (line 18) | protected void addButton(IHUDButton button) {
method renderHeadUpDisplay (line 22) | @Override
method handleCursor (line 34) | @Override
FILE: common/logisticspipes/gui/hud/GuiHUDSettings.java
class GuiHUDSettings (line 21) | public class GuiHUDSettings extends LogisticsBaseGuiScreen {
method GuiHUDSettings (line 26) | public GuiHUDSettings(EntityPlayer player, int slot) {
method initGui (line 36) | @Override
method actionPerformed (line 53) | @Override
method drawGuiContainerBackgroundLayer (line 61) | @Override
FILE: common/logisticspipes/gui/hud/HUDCrafting.java
class HUDCrafting (line 17) | public class HUDCrafting extends BasicHUDGui {
method HUDCrafting (line 21) | public HUDCrafting(PipeItemsCraftingLogistics pipe) {
method renderHeadUpDisplay (line 25) | @Override
method display (line 70) | @Override
method cursorOnWindow (line 75) | @Override
FILE: common/logisticspipes/gui/hud/HUDInvSysConnector.java
class HUDInvSysConnector (line 13) | public class HUDInvSysConnector extends BasicHUDGui {
method HUDInvSysConnector (line 18) | public HUDInvSysConnector(PipeItemsInvSysConnector pipe) {
method renderHeadUpDisplay (line 22) | @Override
method display (line 45) | @Override
method cursorOnWindow (line 59) | @Override
FILE: common/logisticspipes/gui/hud/HUDPowerLevel.java
class HUDPowerLevel (line 17) | public class HUDPowerLevel extends BasicHUDGui implements IHeadUpDisplay...
method HUDPowerLevel (line 22) | public HUDPowerLevel(IPowerLevelDisplay junction) {
method renderHeadUpDisplay (line 26) | @Override
method drawTexturedModalRect (line 53) | public void drawTexturedModalRect(int par1, int par2, int par3, int pa...
method display (line 66) | @Override
method cursorOnWindow (line 71) | @Override
FILE: common/logisticspipes/gui/hud/HUDProvider.java
class HUDProvider (line 14) | public class HUDProvider extends BasicHUDGui {
method HUDProvider (line 20) | public HUDProvider(final PipeItemsProviderLogistics pipe) {
method renderHeadUpDisplay (line 100) | @Override
method getMaxPage (line 134) | public int getMaxPage() {
method getMaxPageOrderer (line 142) | public int getMaxPageOrderer() {
method display (line 150) | @Override
method cursorOnWindow (line 155) | @Override
FILE: common/logisticspipes/gui/hud/HUDSatellite.java
class HUDSatellite (line 16) | public class HUDSatellite extends BasicHUDGui {
method HUDSatellite (line 22) | public HUDSatellite(@Nonnull SatellitePipe pipe) {
method renderHeadUpDisplay (line 64) | @Override
method getMaxPage (line 121) | public int getMaxPage() {
method display (line 129) | @Override
method cursorOnWindow (line 134) | @Override
FILE: common/logisticspipes/gui/hud/HudChassisPipe.java
class HudChassisPipe (line 21) | public class HudChassisPipe extends BasicHUDGui {
method HudChassisPipe (line 32) | public HudChassisPipe(PipeLogisticsChassis pipeLogisticsChassis, ItemI...
method renderHeadUpDisplay (line 92) | @Override
method display (line 158) | @Override
method cursorOnWindow (line 171) | @Override
method handleCursor (line 176) | @Override
method moduleClicked (line 183) | private void moduleClicked(int number) {
method resetSelection (line 193) | private void resetSelection() {
method isSlotSelected (line 203) | private boolean isSlotSelected() {
method isSlotSelected (line 207) | private boolean isSlotSelected(int number) {
method shouldDisplayButton (line 211) | private boolean shouldDisplayButton(int number) {
method stopWatching (line 215) | public void stopWatching() {
class ItemButton (line 219) | private class ItemButton extends BasicHUDButton {
method ItemButton (line 224) | public ItemButton(ItemIdentifierInventory inv, int position, int x, ...
method clicked (line 230) | @Override
method renderButton (line 235) | @Override
method renderAlways (line 267) | @Override
method shouldRenderButton (line 282) | @Override
method buttonEnabled (line 287) | @Override
FILE: common/logisticspipes/gui/hud/modules/HUDAdvancedExtractor.java
class HUDAdvancedExtractor (line 23) | public class HUDAdvancedExtractor implements IHUDModuleRenderer {
method HUDAdvancedExtractor (line 29) | public HUDAdvancedExtractor(AsyncAdvancedExtractor moduleAdvancedExtra...
method renderContent (line 35) | @Override
method getButtons (line 57) | @Override
class TabButton (line 62) | private class TabButton extends BasicHUDButton {
method TabButton (line 66) | public TabButton(String name, int mode, int x, int y, int width, int...
method clicked (line 71) | @Override
method renderButton (line 76) | @Override
method shouldRenderButton (line 130) | @Override
method buttonEnabled (line 135) | @Override
FILE: common/logisticspipes/gui/hud/modules/HUDItemSink.java
class HUDItemSink (line 18) | public class HUDItemSink implements IHUDModuleRenderer {
method HUDItemSink (line 22) | public HUDItemSink(ModuleItemSink module) {
method renderContent (line 26) | @Override
method getButtons (line 40) | @Override
FILE: common/logisticspipes/gui/hud/modules/HUDOreDictItemSink.java
class HUDOreDictItemSink (line 17) | public class HUDOreDictItemSink implements IHUDModuleRenderer {
method HUDOreDictItemSink (line 21) | public HUDOreDictItemSink(ModuleOreDictItemSink module) {
method renderContent (line 25) | @Override
method getButtons (line 33) | @Override
FILE: common/logisticspipes/gui/hud/modules/HUDProviderModule.java
class HUDProviderModule (line 19) | public class HUDProviderModule implements IHUDModuleRenderer {
method HUDProviderModule (line 27) | public HUDProviderModule(ModuleProvider moduleProvider) {
method getMaxPage (line 65) | public int getMaxPage() {
method renderContent (line 73) | @Override
method getButtons (line 81) | @Override
FILE: common/logisticspipes/gui/hud/modules/HUDSimpleFilterModule.java
class HUDSimpleFilterModule (line 14) | public class HUDSimpleFilterModule implements IHUDModuleRenderer {
method HUDSimpleFilterModule (line 18) | public HUDSimpleFilterModule(SimpleFilter filter) {
method renderContent (line 22) | @Override
method getButtons (line 30) | @Override
FILE: common/logisticspipes/gui/hud/modules/HUDStringBasedItemSink.java
class HUDStringBasedItemSink (line 15) | public class HUDStringBasedItemSink implements IHUDModuleRenderer {
method HUDStringBasedItemSink (line 21) | public HUDStringBasedItemSink(IStringBasedModule module) {
method renderContent (line 60) | @Override
method getButtons (line 71) | @Override
FILE: common/logisticspipes/gui/modules/GuiAdvancedExtractor.java
class GuiAdvancedExtractor (line 27) | public class GuiAdvancedExtractor extends ModuleBaseGui {
method GuiAdvancedExtractor (line 33) | public GuiAdvancedExtractor(IInventory playerInventory, AsyncAdvancedE...
method initGui (line 54) | @Override
method onGuiClosed (line 65) | @Override
method actionPerformed (line 75) | @Override
method drawGuiContainerForegroundLayer (line 89) | @Override
method drawGuiContainerBackgroundLayer (line 95) | @Override
FILE: common/logisticspipes/gui/modules/GuiFluidSupplier.java
class GuiFluidSupplier (line 18) | public class GuiFluidSupplier extends ModuleBaseGui {
method GuiFluidSupplier (line 22) | public GuiFluidSupplier(IInventory playerInventory, ModuleFluidSupplie...
method drawGuiContainerForegroundLayer (line 38) | @Override
method drawGuiContainerBackgroundLayer (line 46) | @Override
FILE: common/logisticspipes/gui/modules/GuiOreDictItemSink.java
class GuiOreDictItemSink (line 29) | public class GuiOreDictItemSink extends ModuleBaseGui {
method GuiOreDictItemSink (line 41) | public GuiOreDictItemSink(IInventory playerInventory, ModuleOreDictIte...
method initGui (line 59) | @Override
method onGuiClosed (line 69) | @Override
method actionPerformed (line 79) | @Override
method mouseClicked (line 90) | @Override
method drawGuiContainerBackgroundLayer (line 101) | @Override
method getOreNames (line 188) | private List<String> getOreNames(@Nonnull ItemStack stack) {
FILE: common/logisticspipes/gui/modules/GuiSimpleFilter.java
class GuiSimpleFilter (line 19) | public class GuiSimpleFilter extends ModuleBaseGui {
method GuiSimpleFilter (line 23) | public GuiSimpleFilter(IInventory playerInventory, LogisticsModule fil...
method drawGuiContainerForegroundLayer (line 40) | @Override
method drawGuiContainerBackgroundLayer (line 48) | @Override
FILE: common/logisticspipes/gui/modules/GuiSneakyConfigurator.java
class GuiSneakyConfigurator (line 27) | public class GuiSneakyConfigurator extends ModuleBaseGui {
method GuiSneakyConfigurator (line 31) | public GuiSneakyConfigurator(IInventory playerInventory, LogisticsModu...
method initGui (line 39) | @Override
method refreshButtons (line 57) | private void refreshButtons() {
method actionPerformed (line 64) | @Override
method drawGuiContainerForegroundLayer (line 74) | @Override
method drawGuiContainerBackgroundLayer (line 86) | @Override
method getButtonOrientationString (line 96) | private String getButtonOrientationString(EnumFacing orientation) {
FILE: common/logisticspipes/gui/modules/GuiStringBasedItemSink.java
class GuiStringBasedItemSink (line 26) | public class GuiStringBasedItemSink extends ModuleBaseGui {
method GuiStringBasedItemSink (line 36) | public GuiStringBasedItemSink(IInventory playerInventory, LogisticsMod...
method initGui (line 55) | @Override
method onGuiClosed (line 65) | @Override
method actionPerformed (line 75) | @Override
method mouseClicked (line 102) | @Override
method drawGuiContainerBackgroundLayer (line 113) | @Override
FILE: common/logisticspipes/gui/modules/ModuleBaseGui.java
class ModuleBaseGui (line 16) | public abstract class ModuleBaseGui extends LogisticsBaseGuiScreen {
method ModuleBaseGui (line 21) | public ModuleBaseGui(Container par1Container, LogisticsModule module) {
method keyTyped (line 26) | @Override
FILE: common/logisticspipes/gui/orderer/FluidGuiOrderer.java
class FluidGuiOrderer (line 16) | public class FluidGuiOrderer extends GuiOrderer {
method FluidGuiOrderer (line 18) | public FluidGuiOrderer(PipeFluidRequestLogistics pipe, EntityPlayer en...
method initGui (line 24) | @Override
method actionPerformed (line 35) | @Override
method getStackAmount (line 45) | @Override
method refreshItems (line 50) | @Override
method specialItemRendering (line 55) | @Override
FILE: common/logisticspipes/gui/orderer/GuiOrderer.java
class GuiOrderer (line 48) | public abstract class GuiOrderer extends LogisticsBaseGuiScreen implemen...
method GuiOrderer (line 64) | public GuiOrderer(int x, int y, int z, int dim, EntityPlayer entityPla...
method refreshItems (line 78) | public abstract void refreshItems();
method handlePacket (line 80) | public void handlePacket(Collection<ItemIdentifierStack> allItems) {
method initGui (line 84) | @Override
method closeGui (line 115) | @Override
method doesGuiPauseGame (line 121) | @Override
method drawGuiContainerBackgroundLayer (line 126) | @Override
method drawGuiContainerForegroundLayer (line 147) | @Override
method itemSearched (line 155) | @Override
method isSearched (line 177) | private boolean isSearched(String value, String search) {
method mouseClicked (line 188) | @Override
method handleMouseInputSub (line 195) | @Override
method handleRequestAnswer (line 201) | public void handleRequestAnswer(Collection<IResource> items, boolean e...
method handleSimulateAnswer (line 212) | public void handleSimulateAnswer(Collection<IResource> used, Collectio...
method actionPerformed (line 219) | @Override
method getStackAmount (line 257) | protected int getStackAmount() {
method keyTyped (line 261) | @Override
method resetSubGui (line 281) | @Override
FILE: common/logisticspipes/gui/orderer/GuiRequestTable.java
class GuiRequestTable (line 69) | public class GuiRequestTable extends LogisticsBaseGuiScreen implements I...
method GuiRequestTable (line 89) | public GuiRequestTable(EntityPlayer entityPlayer, PipeBlockRequestTabl...
method initGui (line 121) | @Override
method closeGui (line 193) | @Override
method drawGuiContainerBackgroundLayer (line 199) | @Override
method refreshItems (line 411) | public void refreshItems() {
method actionPerformed (line 430) | @Override
method requestMatrix (line 546) | private void requestMatrix(int multiplier) {
method getStackAmount (line 554) | protected int getStackAmount() {
method handlePacket (line 558) | public void handlePacket(Collection<ItemIdentifierStack> allItems) {
method specialItemRendering (line 562) | @Override
method drawGuiContainerForegroundLayer (line 567) | @Override
method itemSearched (line 577) | @Override
method isSearched (line 601) | private boolean isSearched(String value, String search) {
method mouseClicked (line 612) | @Override
method handleMouseInputSub (line 621) | @Override
method handleRequestAnswer (line 629) | public void handleRequestAnswer(Collection<IResource> items, boolean e...
method handleSimulateAnswer (line 640) | public void handleSimulateAnswer(Collection<IResource> used, Collectio...
method keyTyped (line 647) | @Override
method resetSubGui (line 667) | @Override
method getDisk (line 673) | @Override
method getX (line 679) | @Override
method getY (line 684) | @Override
method getZ (line 689) | @Override
method getItemDisplay (line 694) | @Override
type DisplayOptions (line 699) | private enum DisplayOptions {
FILE: common/logisticspipes/gui/orderer/NormalGuiOrderer.java
class NormalGuiOrderer (line 14) | public class NormalGuiOrderer extends GuiOrderer {
type DisplayOptions (line 16) | private enum DisplayOptions {
method NormalGuiOrderer (line 24) | public NormalGuiOrderer(int x, int y, int z, int dim, EntityPlayer ent...
method initGui (line 29) | @Override
method refreshItems (line 37) | @Override
method actionPerformed (line 57) | @Override
method specialItemRendering (line 81) | @Override
FILE: common/logisticspipes/gui/orderer/NormalMk2GuiOrderer.java
class NormalMk2GuiOrderer (line 24) | public class NormalMk2GuiOrderer extends NormalGuiOrderer implements IDi...
method NormalMk2GuiOrderer (line 29) | public NormalMk2GuiOrderer(PipeItemsRequestLogisticsMk2 RequestPipeMK2...
method initGui (line 35) | @Override
method drawGuiContainerBackgroundLayer (line 42) | @Override
method mouseClicked (line 58) | @Override
method actionPerformed (line 67) | @Override
method getDisk (line 76) | @Override
method specialItemRendering (line 82) | @Override
method getX (line 93) | @Override
method getY (line 98) | @Override
method getZ (line 103) | @Override
method getItemDisplay (line 108) | @Override
FILE: common/logisticspipes/gui/popup/ActionChoicePopup.java
class ActionChoicePopup (line 9) | public class ActionChoicePopup extends SubGuiScreen {
method ActionChoicePopup (line 18) | public ActionChoicePopup(String message, String leftButton, Runnable l...
method initGui (line 33) | @Override
method renderGuiBackground (line 50) | @Override
method actionPerformed (line 56) | @Override
FILE: common/logisticspipes/gui/popup/DisconnectionConfigurationPopup.java
class DisconnectionConfigurationPopup (line 20) | public class DisconnectionConfigurationPopup extends SubGuiScreen {
method DisconnectionConfigurationPopup (line 29) | public DisconnectionConfigurationPopup(CoreRoutedPipe pipe, UpgradeSlo...
method initGui (line 35) | @Override
method handleSelection (line 54) | public void handleSelection(SideConfigDisplay.SelectedFace selection) {
method drawGuiContainerForegroundLayer (line 59) | @Override
method handleMouseInputSub (line 78) | @Override
method renderGuiBackground (line 84) | @Override
method actionPerformed (line 89) | @Override
FILE: common/logisticspipes/gui/popup/GuiAddChannelPopup.java
class GuiAddChannelPopup (line 22) | public class GuiAddChannelPopup extends SubGuiScreen {
method GuiAddChannelPopup (line 28) | public GuiAddChannelPopup(UUID responsibleSecurityID) {
method GuiAddChannelPopup (line 33) | protected GuiAddChannelPopup(UUID responsibleSecurityID, int ySize) {
method initGui (line 38) | @Override
method exitGui (line 59) | @Override
method renderGuiBackground (line 66) | @Override
method drawTitle (line 77) | protected void drawTitle() {
method drawGuiContainerForegroundLayer (line 82) | @Override
method keyTyped (line 88) | @Override
method mouseClicked (line 95) | @Override
method actionPerformed (line 102) | @Override
FILE: common/logisticspipes/gui/popup/GuiAddMacro.java
class GuiAddMacro (line 32) | public class GuiAddMacro extends SubGuiScreen implements IItemSearch {
method GuiAddMacro (line 59) | public GuiAddMacro(IDiskProvider diskProvider, String macroName) {
method loadMacroItems (line 66) | private void loadMacroItems() {
method initGui (line 99) | @Override
method mouseClicked (line 110) | @Override
method handleMouseInputSub (line 130) | @Override
method renderToolTips (line 143) | @Override
method drawGuiContainerForegroundLayer (line 150) | @Override
method renderGuiBackground (line 293) | @Override
method getSearchedItemNumber (line 372) | private int getSearchedItemNumber(List<ItemIdentifierStack> list) {
method itemSearched (line 382) | @Override
method isSearched (line 393) | private boolean isSearched(String value, String search) {
method nextPageAll (line 404) | private void nextPageAll() {
method prevPageAll (line 412) | private void prevPageAll() {
method nextPageMacro (line 420) | private void nextPageMacro() {
method prevPageMacro (line 428) | private void prevPageMacro() {
method actionPerformed (line 436) | @Override
method keyTyped (line 491) | @Override
FILE: common/logisticspipes/gui/popup/GuiAddTracking.java
class GuiAddTracking (line 33) | public class GuiAddTracking extends SubGuiScreen implements IItemSearch {
method GuiAddTracking (line 41) | public GuiAddTracking(LogisticsStatisticsTileEntity tile) {
method initGui (line 46) | @Override
method exitGui (line 71) | @Override
method renderToolTips (line 78) | @Override
method drawGuiContainerForegroundLayer (line 85) | @Override
method renderGuiBackground (line 90) | @Override
method actionPerformed (line 101) | @Override
method refreshItems (line 137) | private void refreshItems() {
method mouseClicked (line 141) | @Override
method keyTyped (line 148) | @Override
method handlePacket (line 162) | public void handlePacket(List<ItemIdentifierStack> identList) {
method itemSearched (line 169) | @Override
method isSearched (line 191) | private boolean isSearched(String value, String search) {
FILE: common/logisticspipes/gui/popup/GuiDiskPopup.java
class GuiDiskPopup (line 25) | public class GuiDiskPopup extends SubGuiScreen {
method GuiDiskPopup (line 37) | public GuiDiskPopup(IDiskProvider diskProvider) {
method mouseClicked (line 87) | @Override
method writeDiskName (line 105) | private void writeDiskName() {
method initGui (line 117) | @Override
method renderGuiBackground (line 129) | @Override
method handleMouseInputSub (line 161) | @Override
method handleRequest (line 174) | private void handleRequest() {
method handleDelete (line 178) | private void handleDelete() {
method handleAddEdit (line 203) | private void handleAddEdit() {
method actionPerformed (line 218) | @Override
method keyTyped (line 237) | @Override
FILE: common/logisticspipes/gui/popup/GuiEditCCAccessTable.java
class GuiEditCCAccessTable (line 23) | public class GuiEditCCAccessTable extends SubGuiScreen {
method GuiEditCCAccessTable (line 42) | public GuiEditCCAccessTable(LogisticsSecurityTileEntity tile) {
method initGui (line 47) | @Override
method renderGuiBackground (line 59) | @Override
method mouseClicked (line 125) | @Override
method actionPerformed (line 140) | @Override
method keyTyped (line 216) | @Override
method drawRect (line 269) | public void drawRect(int x1, int y1, int x2, int y2, Color color) {
FILE: common/logisticspipes/gui/popup/GuiEditChannelPopup.java
class GuiEditChannelPopup (line 16) | public class GuiEditChannelPopup extends GuiAddChannelPopup {
method GuiEditChannelPopup (line 22) | public GuiEditChannelPopup(UUID correspondingSecurityStationID, Channe...
method initGui (line 28) | @Override
method renderGuiBackground (line 41) | @Override
method drawTitle (line 48) | @Override
method actionPerformed (line 53) | @Override
FILE: common/logisticspipes/gui/popup/GuiManageChannelPopup.java
class GuiManageChannelPopup (line 22) | public class GuiManageChannelPopup extends SubGuiScreen implements IGUIC...
method GuiManageChannelPopup (line 30) | public GuiManageChannelPopup(List<ChannelInformation> channelList, Blo...
method initGui (line 53) | @Override
method renderGuiBackground (line 65) | @Override
method drawTitle (line 73) | protected void drawTitle() {
method mouseClicked (line 78) | @Override
method handleMouseInputSub (line 84) | @Override
method actionPerformed (line 97) | @Override
method handleChannelInformation (line 124) | @Override
FILE: common/logisticspipes/gui/popup/GuiMessagePopup.java
class GuiMessagePopup (line 9) | public class GuiMessagePopup extends SubGuiScreen {
method GuiMessagePopup (line 14) | public GuiMessagePopup(Object... message) {
method initGui (line 29) | @Override
method renderGuiBackground (line 36) | @Override
method actionPerformed (line 60) | @Override
FILE: common/logisticspipes/gui/popup/GuiRecipeImport.java
class GuiRecipeImport (line 27) | public class GuiRecipeImport extends SubGuiScreen {
class Candidates (line 29) | public static class Candidates {
method Candidates (line 31) | public Candidates(Set<ItemIdentifierStack> set) {
method GuiRecipeImport (line 45) | public GuiRecipeImport(TileEntity tile, ItemStack[][] stacks) {
method initGui (line 79) | @Override
method renderToolTips (line 98) | @Override
method drawGuiContainerForegroundLayer (line 103) | @Override
method renderGuiBackground (line 157) | @Override
method actionPerformed (line 178) | @Override
method handleProposePacket (line 214) | public void handleProposePacket(List<Integer> response) {
method mouseClicked (line 225) | @Override
FILE: common/logisticspipes/gui/popup/GuiRequestPopup.java
class GuiRequestPopup (line 18) | public class GuiRequestPopup extends SubGuiScreen {
method GuiRequestPopup (line 24) | public GuiRequestPopup(EntityPlayer player, Object... message) {
method initGui (line 48) | @Override
method renderGuiBackground (line 56) | @Override
method actionPerformed (line 80) | @Override
FILE: common/logisticspipes/gui/popup/GuiSecurityStationPopup.java
class GuiSecurityStationPopup (line 19) | public class GuiSecurityStationPopup extends SubGuiScreen {
method GuiSecurityStationPopup (line 26) | public GuiSecurityStationPopup(SecuritySettings setting, LogisticsSecu...
method initGui (line 32) | @Override
method renderGuiBackground (line 46) | @Override
method actionPerformed (line 58) | @Override
method refreshCheckBoxes (line 103) | public void refreshCheckBoxes() {
FILE: common/logisticspipes/gui/popup/GuiSelectChannelPopup.java
class GuiSelectChannelPopup (line 14) | public class GuiSelectChannelPopup extends GuiManageChannelPopup {
method GuiSelectChannelPopup (line 20) | public GuiSelectChannelPopup(List<ChannelInformation> channelList, Blo...
method initGui (line 25) | @Override
method drawTitle (line 32) | protected void drawTitle() {
method actionPerformed (line 37) | @Override
FILE: common/logisticspipes/gui/popup/GuiSelectSatellitePopup.java
class GuiSelectSatellitePopup (line 22) | public class GuiSelectSatellitePopup extends SubGuiScreen {
method GuiSelectSatellitePopup (line 30) | public GuiSelectSatellitePopup(BlockPos pos, boolean fluidSatellites, ...
method drawTitle (line 53) | protected void drawTitle() {
method initGui (line 57) | @Override
method renderGuiBackground (line 68) | @Override
method mouseClicked (line 76) | @Override
method handleMouseInputSub (line 82) | @Override
method actionPerformed (line 95) | @Override
method handleSatelliteList (line 117) | public void handleSatelliteList(List<Pair<String, UUID>> list) {
FILE: common/logisticspipes/gui/popup/RequestMonitorPopup.java
class RequestMonitorPopup (line 40) | public class RequestMonitorPopup extends SubGuiScreen {
type ZOOM_LEVEL (line 42) | private enum ZOOM_LEVEL {
method ZOOM_LEVEL (line 47) | ZOOM_LEVEL(float zoom, int bottom, int right, int line, int moveY, i...
method next (line 65) | ZOOM_LEVEL next() {
method prev (line 74) | ZOOM_LEVEL prev() {
method RequestMonitorPopup (line 100) | public RequestMonitorPopup(PipeBlockRequestTable table, int orderId) {
method mirror (line 108) | private static void mirror(int[] par0ArrayOfInteger, int width, int he...
method initGui (line 119) | @Override
method actionPerformed (line 127) | @Override
method renderToolTips (line 136) | @Override
method drawGuiContainerForegroundLayer (line 143) | @Override
method renderGuiBackground (line 148) | @Override
method createBoundary (line 200) | private void createBoundary() {
method drawTransparentBack (line 208) | private void drawTransparentBack() {
method findLowest (line 213) | private void findLowest(LinkedLogisticsOrderList list, int lowerLimit) {
method saveTreeToImage (line 223) | private void saveTreeToImage() {
method saveImage (line 273) | private void saveImage(BufferedImage bufferedimage) {
method drawForScreenShot (line 293) | private void drawForScreenShot(int top, int left) {
method drawMap (line 356) | private void drawMap(int par1, int par2) {
method renderLinkedOrderListItems (line 457) | private void renderLinkedOrderListItems(LinkedLogisticsOrderList list,...
method renderLinkedOrderListLines (line 500) | private void renderLinkedOrderListLines(LinkedLogisticsOrderList list,...
method drawPointFor (line 541) | private void drawPointFor(LinkedLogisticsOrderList list, int xPos, int...
method renderItemAt (line 576) | private void renderItemAt(ItemIdentifierStack item, int x, int y) {
method drawProgressPoint (line 591) | protected void drawProgressPoint(int x, int y, int color) {
method getTexture (line 596) | private TextureAtlasSprite getTexture(Block blockIn) {
FILE: common/logisticspipes/gui/popup/SelectItemOutOfList.java
class SelectItemOutOfList (line 24) | public class SelectItemOutOfList extends SubGuiScreen implements IItemSe...
type IHandleItemChoice (line 26) | public interface IHandleItemChoice {
method handleItemChoice (line 28) | void handleItemChoice(int slot);
method SelectItemOutOfList (line 36) | public SelectItemOutOfList(List<ItemIdentifierStack> candidate, IHandl...
method initGui (line 42) | @Override
method exitGui (line 63) | @Override
method renderToolTips (line 70) | @Override
method drawGuiContainerForegroundLayer (line 77) | @Override
method renderGuiBackground (line 80) | @Override
method actionPerformed (line 94) | @Override
method handleMouseInputSub (line 111) | @Override
method keyTyped (line 117) | @Override
method mouseClicked (line 126) | @Override
method itemSearched (line 133) | @Override
method isSearched (line 155) | private boolean isSearched(String value, String search) {
FILE: common/logisticspipes/gui/popup/SneakyConfigurationPopup.java
class SneakyConfigurationPopup (line 22) | public class SneakyConfigurationPopup extends SubGuiScreen {
method SneakyConfigurationPopup (line 31) | public SneakyConfigurationPopup(List<DoubleCoordinates> config, Upgrad...
method initGui (line 37) | @Override
method handleSelection (line 56) | public void handleSelection(SideConfigDisplay.SelectedFace selection) {
method drawGuiContainerForegroundLayer (line 61) | @Override
method handleMouseInputSub (line 78) | @Override
method renderGuiBackground (line 84) | @Override
method actionPerformed (line 89) | @Override
FILE: common/logisticspipes/hud/HUDConfig.java
class HUDConfig (line 10) | public class HUDConfig implements IHUDConfig {
method HUDConfig (line 14) | public HUDConfig(@Nonnull ItemStack stack) {
method HUDConfig (line 19) | public HUDConfig(NBTTagCompound tag) {
method isChassisHUD (line 35) | @Override
method isHUDCrafting (line 40) | @Override
method isHUDInvSysCon (line 45) | @Override
method isHUDPowerLevel (line 50) | @Override
method isHUDProvider (line 55) | @Override
method isHUDSatellite (line 60) | @Override
method setChassisHUD (line 65) | @Override
method setHUDCrafting (line 70) | @Override
method setHUDInvSysCon (line 75) | @Override
method setHUDPowerJunction (line 80) | @Override
method setHUDProvider (line 85) | @Override
method setHUDSatellite (line 90) | @Override
FILE: common/logisticspipes/interfaces/IBlockWatchingHandler.java
type IBlockWatchingHandler (line 5) | public interface IBlockWatchingHandler {
method playerStartWatching (line 7) | void playerStartWatching(EntityPlayer player);
method playerStopWatching (line 9) | void playerStopWatching(EntityPlayer player);
FILE: common/logisticspipes/interfaces/IBufferItems.java
type IBufferItems (line 6) | public interface IBufferItems {
method addToBuffer (line 14) | int addToBuffer(ItemIdentifierStack stack, IAdditionalTargetInformatio...
FILE: common/logisticspipes/interfaces/IChainAddList.java
type IChainAddList (line 5) | public interface IChainAddList<T> extends List<T> {
method addChain (line 7) | T addChain(T add);
FILE: common/logisticspipes/interfaces/IChangeListener.java
type IChangeListener (line 3) | public interface IChangeListener {
method listenedChanged (line 5) | void listenedChanged();
FILE: common/logisticspipes/interfaces/IChestContentReceiver.java
type IChestContentReceiver (line 7) | public interface IChestContentReceiver {
method setReceivedChestContent (line 9) | void setReceivedChestContent(Collection<ItemIdentifierStack> _allItems);
FILE: common/logisticspipes/interfaces/IClientInformationProvider.java
type IClientInformationProvider (line 6) | public interface IClientInformationProvider {
method getClientInformation (line 8) | @Nonnull
FILE: common/logisticspipes/interfaces/IClientState.java
type IClientState (line 6) | public interface IClientState {
method writeData (line 8) | void writeData(LPDataOutput output);
method readData (line 10) | void readData(LPDataInput input);
FILE: common/logisticspipes/interfaces/IDebugHUDProvider.java
type IDebugHUDProvider (line 5) | public interface IDebugHUDProvider {
method getHUDs (line 7) | List<IHeadUpDisplayRendererProvider> getHUDs();
FILE: common/logisticspipes/interfaces/IDiskProvider.java
type IDiskProvider (line 9) | public interface IDiskProvider {
method getDisk (line 11) | @Nonnull
method getX (line 14) | int getX();
method getY (line 16) | int getY();
method getZ (line 18) | int getZ();
method getItemDisplay (line 20) | ItemDisplay getItemDisplay();
FILE: common/logisticspipes/interfaces/IFuzzySlot.java
type IFuzzySlot (line 5) | public interface IFuzzySlot {
method getFuzzyFlags (line 7) | IBitSet getFuzzyFlags();
method getX (line 9) | int getX();
method getY (line 11) | int getY();
method getSlotId (line 13) | int getSlotId();
FILE: common/logisticspipes/interfaces/IGUIChannelInformationReceiver.java
type IGUIChannelInformationReceiver (line 5) | public interface IGUIChannelInformationReceiver {
method handleChannelInformation (line 7) | void handleChannelInformation(ChannelInformation channel, boolean flag);
FILE: common/logisticspipes/interfaces/IGuiOpenControler.java
type IGuiOpenControler (line 5) | public interface IGuiOpenControler {
method guiOpenedByPlayer (line 7) | void guiOpenedByPlayer(EntityPlayer player);
method guiClosedByPlayer (line 9) | void guiClosedByPlayer(EntityPlayer player);
FILE: common/logisticspipes/interfaces/IGuiTileEntity.java
type IGuiTileEntity (line 5) | public interface IGuiTileEntity {
method getGuiProvider (line 7) | CoordinatesGuiProvider getGuiProvider();
FILE: common/logisticspipes/interfaces/IHUDButton.java
type IHUDButton (line 3) | public interface IHUDButton {
method getX (line 5) | int getX();
method getY (line 7) | int getY();
method sizeX (line 9) | int sizeX();
method sizeY (line 11) | int sizeY();
method setFocused (line 13) | void setFocused();
method isFocused (line 15) | boolean isFocused();
method clearFocused (line 17) | void clearFocused();
method blockFocused (line 19) | void blockFocused();
method isblockFocused (line 21) | boolean isblockFocused();
method focusedTime (line 23) | int focusedTime();
method clicked (line 25) | void clicked();
method renderButton (line 27) | void renderButton(boolean hover, boolean clicked, boolean shifted);
method renderAlways (line 29) | void renderAlways(boolean shifted);
method shouldRenderButton (line 31) | boolean shouldRenderButton();
method buttonEnabled (line 33) | boolean buttonEnabled();
FILE: common/logisticspipes/interfaces/IHUDConfig.java
type IHUDConfig (line 3) | public interface IHUDConfig {
method isChassisHUD (line 5) | boolean isChassisHUD();
method isHUDCrafting (line 7) | boolean isHUDCrafting();
method isHUDInvSysCon (line 9) | boolean isHUDInvSysCon();
method isHUDPowerLevel (line 11) | boolean isHUDPowerLevel();
method isHUDProvider (line 13) | boolean isHUDProvider();
method isHUDSatellite (line 15) | boolean isHUDSatellite();
method setChassisHUD (line 17) | void setChassisHUD(boolean state);
method setHUDCrafting (line 19) | void setHUDCrafting(boolean state);
method setHUDInvSysCon (line 21) | void setHUDInvSysCon(boolean state);
method setHUDPowerJunction (line 23) | void setHUDPowerJunction(boolean state);
method setHUDProvider (line 25) | void setHUDProvider(boolean state);
method setHUDSatellite (line 27) | void setHUDSatellite(boolean state);
FILE: common/logisticspipes/interfaces/IHUDModuleHandler.java
type IHUDModuleHandler (line 3) | public interface IHUDModuleHandler {
method startHUDWatching (line 5) | void startHUDWatching();
method stopHUDWatching (line 7) | void stopHUDWatching();
method getHUDRenderer (line 9) | IHUDModuleRenderer getHUDRenderer();
FILE: common/logisticspipes/interfaces/IHUDModuleRenderer.java
type IHUDModuleRenderer (line 5) | public interface IHUDModuleRenderer {
method renderContent (line 7) | void renderContent(boolean shifted);
method getButtons (line 9) | List<IHUDButton> getButtons();
FILE: common/logisticspipes/interfaces/IHeadUpDisplayBlockRendererProvider.java
type IHeadUpDisplayBlockRendererProvider (line 3) | public interface IHeadUpDisplayBlockRendererProvider extends IHeadUpDisp...
method isHUDInvalid (line 5) | boolean isHUDInvalid();
method isHUDExistent (line 7) | boolean isHUDExistent();
FILE: common/logisticspipes/interfaces/IHeadUpDisplayRenderer.java
type IHeadUpDisplayRenderer (line 5) | public interface IHeadUpDisplayRenderer {
method renderHeadUpDisplay (line 7) | void renderHeadUpDisplay(double d, boolean day, boolean shifted, Minec...
method display (line 9) | boolean display(IHUDConfig config);
method cursorOnWindow (line 11) | boolean cursorOnWindow(int x, int y);
method handleCursor (line 13) | void handleCursor(int x, int y);
FILE: common/logisticspipes/interfaces/IHeadUpDisplayRendererProvider.java
type IHeadUpDisplayRendererProvider (line 5) | public interface IHeadUpDisplayRendererProvider {
method getRenderer (line 7) | IHeadUpDisplayRenderer getRenderer();
method getX (line 9) | int getX();
method getY (line 11) | int getY();
method getZ (line 13) | int getZ();
method getWorldForHUD (line 15) | World getWorldForHUD();
method startWatching (line 17) | void startWatching();
method stopWatching (line 19) | void stopWatching();
FILE: common/logisticspipes/interfaces/IInventoryUtil.java
type IInventoryUtil (line 11) | public interface IInventoryUtil {
method itemCount (line 13) | int itemCount(@Nonnull ItemIdentifier item);
method getItemsAndCount (line 15) | @Nonnull
method getSingleItem (line 18) | @Deprecated
method getMultipleItems (line 22) | @Nonnull
method containsUndamagedItem (line 32) | boolean containsUndamagedItem(@Nonnull ItemIdentifier item);
method roomForItem (line 42) | int roomForItem(@Nonnull ItemStack stack);
method getItems (line 44) | @Nonnull
method getSizeInventory (line 48) | int getSizeInventory();
method getStackInSlot (line 50) | @Nonnull
method decrStackSize (line 53) | @Nonnull
FILE: common/logisticspipes/interfaces/IItemAdvancedExistance.java
type IItemAdvancedExistance (line 7) | public interface IItemAdvancedExistance {
method canExistInNormalInventory (line 9) | boolean canExistInNormalInventory(@Nonnull ItemStack stack);
method canExistInWorld (line 11) | boolean canExistInWorld(@Nonnull ItemStack stack);
FILE: common/logisticspipes/interfaces/ILPItemAcceptor.java
type ILPItemAcceptor (line 10) | public interface ILPItemAcceptor {
method accept (line 12) | boolean accept(LogisticsTileGenericPipe pipe, EnumFacing from, @Nonnul...
FILE: common/logisticspipes/interfaces/ILPPositionProvider.java
type ILPPositionProvider (line 5) | public interface ILPPositionProvider {
method getLPPosition (line 7) | DoubleCoordinates getLPPosition();
FILE: common/logisticspipes/interfaces/ILegacyActiveModule.java
type ILegacyActiveModule (line 15) | public interface ILegacyActiveModule {
method onBlockRemoval (line 17) | void onBlockRemoval();
method canProvide (line 19) | void canProvide(RequestTreeNode tree, RequestTree root, List<IFilter> ...
method fullFill (line 21) | LogisticsOrder fullFill(LogisticsPromise promise, IRequestItems destin...
method getAllItems (line 23) | void getAllItems(Map<ItemIdentifier, Integer> list, List<IFilter> filt...
FILE: common/logisticspipes/interfaces/ILogisticsItem.java
type ILogisticsItem (line 7) | public interface ILogisticsItem {
method getModelPath (line 9) | default String getModelPath() {
method getModelCount (line 13) | default int getModelCount() {
method getItem (line 17) | default Item getItem() {
FILE: common/logisticspipes/interfaces/IModuleInventoryReceive.java
type IModuleInventoryReceive (line 8) | public interface IModuleInventoryReceive {
method handleInvContent (line 10) | void handleInvContent(@Nonnull Collection<ItemIdentifierStack> _allIte...
FILE: common/logisticspipes/interfaces/IModuleWatchReciver.java
type IModuleWatchReciver (line 5) | public interface IModuleWatchReciver {
method startWatching (line 7) | void startWatching(EntityPlayer player);
method stopWatching (line 9) | void stopWatching(EntityPlayer player);
FILE: common/logisticspipes/interfaces/IOrderManagerContentReceiver.java
type IOrderManagerContentReceiver (line 7) | public interface IOrderManagerContentReceiver {
method setOrderManagerContent (line 9) | void setOrderManagerContent(Collection<ItemIdentifierStack> _allItems);
FILE: common/logisticspipes/interfaces/IPipeServiceProvider.java
type IPipeServiceProvider (line 19) | public interface IPipeServiceProvider extends IRoutedPowerProvider, ISpa...
method isNthTick (line 21) | boolean isNthTick(int n);
method getDebug (line 23) | @Nonnull
method getCacheHolder (line 26) | CacheHolder getCacheHolder();
method getPos (line 28) | @Nonnull
method markTileDirty (line 31) | void markTileDirty();
method getAvailableAdjacent (line 36) | @Nonnull
method getPointedOrientation (line 42) | @Nullable
method getItemOrderManager (line 48) | LogisticsItemOrderManager getItemOrderManager();
method queueRoutedItem (line 50) | void queueRoutedItem(IRoutedItem routedItem, EnumFacing from);
method getUpgradeManager (line 52) | @Nonnull
method countOnRoute (line 55) | int countOnRoute(ItemIdentifier item);
FILE: common/logisticspipes/interfaces/IPipeUpgradeManager.java
type IPipeUpgradeManager (line 5) | public interface IPipeUpgradeManager {
method hasPowerPassUpgrade (line 7) | boolean hasPowerPassUpgrade();
method hasRFPowerSupplierUpgrade (line 9) | boolean hasRFPowerSupplierUpgrade();
method hasBCPowerSupplierUpgrade (line 11) | boolean hasBCPowerSupplierUpgrade();
method getIC2PowerLevel (line 13) | int getIC2PowerLevel();
method getSpeedUpgradeCount (line 15) | int getSpeedUpgradeCount();
method isSideDisconnected (line 17) | boolean isSideDisconnected(EnumFacing side);
method hasCCRemoteControlUpgrade (line 19) | boolean hasCCRemoteControlUpgrade();
method hasCraftingMonitoringUpgrade (line 21) | boolean hasCraftingMonitoringUpgrade();
method isOpaque (line 23) | boolean isOpaque();
method hasUpgradeModuleUpgrade (line 25) | boolean hasUpgradeModuleUpgrade();
method hasCombinedSneakyUpgrade (line 27) | boolean hasCombinedSneakyUpgrade();
method getCombinedSneakyOrientation (line 29) | EnumFacing[] getCombinedSneakyOrientation();
FILE: common/logisticspipes/interfaces/IPowerLevelDisplay.java
type IPowerLevelDisplay (line 3) | public interface IPowerLevelDisplay {
method getChargeState (line 5) | int getChargeState();
method getDisplayPowerLevel (line 7) | int getDisplayPowerLevel();
method getMaxStorage (line 9) | int getMaxStorage();
method isHUDInvalid (line 11) | boolean isHUDInvalid();
method getBrand (line 13) | String getBrand();
FILE: common/logisticspipes/interfaces/IQueueCCEvent.java
type IQueueCCEvent (line 3) | public interface IQueueCCEvent {
method queueEvent (line 5) | void queueEvent(String event, Object[] arguments);
FILE: common/logisticspipes/interfaces/IRequestWatcher.java
type IRequestWatcher (line 6) | public interface IRequestWatcher {
method handleOrderList (line 8) | void handleOrderList(IResource stack, LinkedLogisticsOrderList orders);
method handleClientSideListInfo (line 10) | void handleClientSideListInfo(int id, IResource stack, LinkedLogistics...
method handleClientSideRemove (line 12) | void handleClientSideRemove(int id);
FILE: common/logisticspipes/interfaces/IRotationProvider.java
type IRotationProvider (line 5) | public interface IRotationProvider {
method getRotation (line 7) | @Deprecated
method getFacing (line 10) | default EnumFacing getFacing() {
method setRotation (line 24) | @Deprecated
method setFacing (line 27) | default void setFacing(EnumFacing facing) {
FILE: common/logisticspipes/interfaces/IRoutingDebugAdapter.java
type IRoutingDebugAdapter (line 13) | public interface IRoutingDebugAdapter {
method start (line 15) | void start(PriorityQueue<ExitRoute> candidatesCost, ArrayList<EnumSet<...
method nextPipe (line 17) | void nextPipe(ExitRoute lowestCostNode);
method handledPipe (line 19) | void handledPipe();
method newCanidate (line 21) | void newCanidate(ExitRoute next);
method stepOneDone (line 23) | void stepOneDone();
method stepTwoDone (line 25) | void stepTwoDone();
method done (line 27) | void done();
method init (line 29) | void init();
method newFlagsForPipe (line 31) | void newFlagsForPipe(EnumSet<PipeRoutingConnectionType> newFlags);
method filterList (line 33) | void filterList(EnumMap<PipeRoutingConnectionType, List<List<IFilter>>...
method independent (line 35) | boolean independent();
method isDebug (line 37) | boolean isDebug();
FILE: common/logisticspipes/interfaces/ISecurityProvider.java
type ISecurityProvider (line 3) | public interface ISecurityProvider {
method getAllowCC (line 5) | boolean getAllowCC(int id);
method canAutomatedDestroy (line 7) | boolean canAutomatedDestroy();
FILE: common/logisticspipes/interfaces/ISecurityStationManager.java
type ISecurityStationManager (line 12) | public interface ISecurityStationManager {
method add (line 14) | void add(LogisticsSecurityTileEntity tile);
method getStation (line 16) | @Nullable
method remove (line 19) | void remove(LogisticsSecurityTileEntity tile);
method deauthorizeUUID (line 21) | void deauthorizeUUID(UUID id);
method authorizeUUID (line 23) | void authorizeUUID(UUID id);
method isAuthorized (line 25) | boolean isAuthorized(UUID id);
method isAuthorized (line 27) | boolean isAuthorized(String id);
method sendClientAuthorizationList (line 29) | void sendClientAuthorizationList();
method sendClientAuthorizationList (line 31) | void sendClientAuthorizationList(EntityPlayer player);
method setClientAuthorizationList (line 33) | void setClientAuthorizationList(List<String> list);
FILE: common/logisticspipes/interfaces/ISendQueueContentRecieiver.java
type ISendQueueContentRecieiver (line 7) | public interface ISendQueueContentRecieiver {
method handleSendQueueItemIdentifierList (line 9) | void handleSendQueueItemIdentifierList(Collection<ItemIdentifierStack>...
FILE: common/logisticspipes/interfaces/ISendRoutedItem.java
type ISendRoutedItem (line 15) | public interface ISendRoutedItem {
method getSourceID (line 17) | int getSourceID();
method getRouter (line 19) | @Nonnull
method sendStack (line 22) | IRoutedItem sendStack(@Nonnull ItemStack stack, Pair<Integer, SinkRepl...
method sendStack (line 24) | IRoutedItem sendStack(@Nonnull ItemStack stack, int destination, ItemS...
method sendStack (line 26) | default IRoutedItem sendStack(@Nonnull ItemStack stack, int destRouter...
FILE: common/logisticspipes/interfaces/ISlotCheck.java
type ISlotCheck (line 7) | public interface ISlotCheck {
method isStackAllowed (line 9) | boolean isStackAllowed(@Nonnull ItemStack itemStack);
FILE: common/logisticspipes/interfaces/ISlotClick.java
type ISlotClick (line 7) | public interface ISlotClick {
method getResultForClick (line 9) | @Nonnull
FILE: common/logisticspipes/interfaces/ISlotUpgradeManager.java
type ISlotUpgradeManager (line 9) | public interface ISlotUpgradeManager {
method hasPatternUpgrade (line 11) | boolean hasPatternUpgrade();
method isAdvancedSatelliteCrafter (line 13) | boolean isAdvancedSatelliteCrafter();
method hasByproductExtractor (line 15) | boolean hasByproductExtractor();
method getFluidCrafter (line 17) | int getFluidCrafter();
method isFuzzyUpgrade (line 19) | boolean isFuzzyUpgrade();
method getCrafterCleanup (line 21) | int getCrafterCleanup();
method hasSneakyUpgrade (line 23) | boolean hasSneakyUpgrade();
method getSneakyOrientation (line 25) | EnumFacing getSneakyOrientation();
method hasOwnSneakyUpgrade (line 27) | boolean hasOwnSneakyUpgrade();
method getInv (line 29) | IInventory getInv();
method getUpgrade (line 31) | IPipeUpgrade getUpgrade(int slot);
method getPipePosition (line 33) | DoubleCoordinates getPipePosition();
method getActionSpeedUpgrade (line 35) | int getActionSpeedUpgrade();
method getItemExtractionUpgrade (line 37) | int getItemExtractionUpgrade();
method getItemStackExtractionUpgrade (line 39) | int getItemStackExtractionUpgrade();
FILE: common/logisticspipes/interfaces/ISpawnParticles.java
type ISpawnParticles (line 8) | public interface ISpawnParticles {
class ParticleCount (line 10) | @RequiredArgsConstructor
method spawnParticle (line 19) | void spawnParticle(Particles particle, int amount);
FILE: common/logisticspipes/interfaces/ISpecialInsertion.java
type ISpecialInsertion (line 7) | public interface ISpecialInsertion {
method addToSlot (line 9) | int addToSlot(@Nonnull ItemStack stack, int i);
FILE: common/logisticspipes/interfaces/ISpecialItemRenderer.java
type ISpecialItemRenderer (line 5) | public interface ISpecialItemRenderer {
method specialItemRendering (line 7) | void specialItemRendering(ItemIdentifier item, int x, int y);
FILE: common/logisticspipes/interfaces/ISpecialTankAccessHandler.java
type ISpecialTankAccessHandler (line 11) | public interface ISpecialTankAccessHandler extends ISpecialTankHandler {
method getAvailableLiquid (line 13) | Map<FluidIdentifier, Long> getAvailableLiquid(TileEntity tile);
method drainFrom (line 15) | FluidStack drainFrom(TileEntity tile, FluidIdentifier ident, Integer a...
FILE: common/logisticspipes/interfaces/ISpecialTankHandler.java
type ISpecialTankHandler (line 7) | public interface ISpecialTankHandler {
method init (line 9) | boolean init();
method isType (line 11) | boolean isType(TileEntity tile);
method getBaseTilesFor (line 13) | List<TileEntity> getBaseTilesFor(TileEntity tile);
FILE: common/logisticspipes/interfaces/ISpecialTankUtil.java
type ISpecialTankUtil (line 5) | public interface ISpecialTankUtil extends ITankUtil {
method getTileEntity (line 7) | TileEntity getTileEntity();
method getSpecialHandler (line 9) | ISpecialTankAccessHandler getSpecialHandler();
FILE: common/logisticspipes/interfaces/IStringBasedModule.java
type IStringBasedModule (line 8) | public interface IStringBasedModule {
method stringListProperty (line 10) | StringListProperty stringListProperty();
method getStringForItem (line 12) | String getStringForItem(ItemIdentifier ident);
method listChanged (line 14) | void listChanged();
method readFromNBT (line 16) | void readFromNBT(NBTTagCompound nbt);
FILE: common/logisticspipes/interfaces/ISubSystemPowerProvider.java
type ISubSystemPowerProvider (line 3) | public interface ISubSystemPowerProvider {
method getPowerLevel (line 5) | double getPowerLevel();
method requestPower (line 7) | void requestPower(int destination, double amount);
method usePaused (line 9) | boolean usePaused();
method getBrand (line 11) | String getBrand();
FILE: common/logisticspipes/interfaces/ITankUtil.java
type ITankUtil (line 10) | public interface ITankUtil {
method containsTanks (line 12) | boolean containsTanks();
method fill (line 14) | int fill(FluidIdentifierStack stack, boolean doFill);
method drain (line 16) | FluidIdentifierStack drain(FluidIdentifierStack stack, boolean doDrain);
method drain (line 18) | FluidIdentifierStack drain(int amount, boolean doDrain);
method tanks (line 20) | Stream<IFluidTankProperties> tanks();
method canDrain (line 25) | boolean canDrain(FluidIdentifier fluid);
method getFreeSpaceInsideTank (line 27) | int getFreeSpaceInsideTank(FluidIdentifier type);
FILE: common/logisticspipes/interfaces/ITileEntityPart.java
type ITileEntityPart (line 3) | public interface ITileEntityPart {
method updateEntity (line 5) | void updateEntity();
FILE: common/logisticspipes/interfaces/ITubeOrientation.java
type ITubeOrientation (line 7) | public interface ITubeOrientation {
method getRenderOrientation (line 9) | ITubeRenderOrientation getRenderOrientation();
method rotatePositions (line 11) | void rotatePositions(IPositionRotateble set);
method getOffset (line 13) | DoubleCoordinates getOffset();
method setOnPipe (line 15) | void setOnPipe(CoreMultiBlockPipe pipe);
FILE: common/logisticspipes/interfaces/ITubeRenderOrientation.java
type ITubeRenderOrientation (line 3) | public interface ITubeRenderOrientation {
FILE: common/logisticspipes/interfaces/IWatchingHandler.java
type IWatchingHandler (line 5) | public interface IWatchingHandler {
method playerStartWatching (line 7) | void playerStartWatching(EntityPlayer player, int mode);
method playerStopWatching (line 9) | void playerStopWatching(EntityPlayer player, int mode);
FILE: common/logisticspipes/interfaces/IWorldProvider.java
type IWorldProvider (line 5) | public interface IWorldProvider {
method getWorld (line 7) | World getWorld();
FILE: common/logisticspipes/interfaces/PlayerListReciver.java
type PlayerListReciver (line 5) | public interface PlayerListReciver {
method receivePlayerList (line 7) | void receivePlayerList(List<String> list);
FILE: common/logisticspipes/interfaces/routing/IAdditionalTargetInformation.java
type IAdditionalTargetInformation (line 3) | public interface IAdditionalTargetInformation {
FILE: common/logisticspipes/interfaces/routing/IChannelConnectionManager.java
type IChannelConnectionManager (line 9) | public interface IChannelConnectionManager {
method hasChannelConnection (line 11) | boolean hasChannelConnection(IRouter router);
method addChannelConnection (line 13) | boolean addChannelConnection(UUID ident, IRouter router);
method getConnectedPipes (line 15) | List<CoreRoutedPipe> getConnectedPipes(IRouter router);
method removeChannelConnection (line 17) | void removeChannelConnection(IRouter router);
FILE: common/logisticspipes/interfaces/routing/IChannelManager.java
type IChannelManager (line 11) | public interface IChannelManager {
method getChannels (line 13) | List<ChannelInformation> getChannels();
method getAllowedChannels (line 15) | List<ChannelInformation> getAllowedChannels(EntityPlayer playerIdentif...
method createNewChannel (line 17) | ChannelInformation createNewChannel(String name, PlayerIdentifier owne...
method updateChannelName (line 19) | void updateChannelName(UUID channelIdentifier, String newName);
method updateChannelRights (line 21) | void updateChannelRights(UUID channelIdentifier, ChannelInformation.Ac...
method removeChannel (line 23) | void removeChannel(UUID channelIdentifier);
FILE: common/logisticspipes/interfaces/routing/IChannelManagerProvider.java
type IChannelManagerProvider (line 5) | public interface IChannelManagerProvider {
method getChannelManager (line 7) | IChannelManager getChannelManager(World world);
FILE: common/logisticspipes/interfaces/routing/IChannelRoutingConnection.java
type IChannelRoutingConnection (line 5) | public interface IChannelRoutingConnection {
method getConnectionResistance (line 7) | int getConnectionResistance();
method addItem (line 9) | void addItem(ItemRoutingInformation info);
FILE: common/logisticspipes/interfaces/routing/ICraft.java
type ICraft (line 7) | public interface ICraft extends IProvide {
method registerExtras (line 9) | void registerExtras(IPromise promise);
method addCrafting (line 11) | ICraftingTemplate addCrafting(IResource type);
method canCraft (line 13) | boolean canCraft(IResource toCraft);
method getTodo (line 15) | int getTodo();
FILE: common/logisticspipes/interfaces/routing/ICraftItems.java
type ICraftItems (line 14) | public interface ICraftItems extends ICraft, IProvideItems, IItemSpaceCo...
method getCraftedItems (line 26) | @Deprecated
FILE: common/logisticspipes/interfaces/routing/IFilter.java
type IFilter (line 7) | public interface IFilter {
method isBlocked (line 9) | boolean isBlocked();
method isFilteredItem (line 11) | boolean isFilteredItem(ItemIdentifier item);
method isFilteredItem (line 13) | boolean isFilteredItem(IResource resultItem);
method blockProvider (line 15) | boolean blockProvider();
method blockCrafting (line 17) | boolean blockCrafting();
method blockRouting (line 19) | boolean blockRouting();
method blockPower (line 21) | boolean blockPower();
method getLPPosition (line 23) | DoubleCoordinates getLPPosition();
FILE: common/logisticspipes/interfaces/routing/IFilteringPipe.java
type IFilteringPipe (line 8) | public interface IFilteringPipe {
method getRouters (line 10) | List<ExitRoute> getRouters(IRouter router);
method getFilter (line 12) | IFilter getFilter();
FILE: common/logisticspipes/interfaces/routing/IFluidSink.java
type IFluidSink (line 8) | public interface IFluidSink {
method sinkAmount (line 10) | @Nullable
FILE: common/logisticspipes/interfaces/routing/IItemSpaceControl.java
type IItemSpaceControl (line 3) | public interface IItemSpaceControl extends IRequestItems {
FILE: common/logisticspipes/interfaces/routing/IProvide.java
type IProvide (line 10) | public interface IProvide {
method canProvide (line 12) | void canProvide(RequestTreeNode tree, RequestTree root, List<IFilter> ...
method getRouter (line 14) | @Nonnull
FILE: common/logisticspipes/interfaces/routing/IProvideFluids.java
type IProvideFluids (line 10) | public interface IProvideFluids extends IProvide {
method getAvailableFluids (line 12) | Map<FluidIdentifier, Integer> getAvailableFluids();
method fullFill (line 14) | IOrderInfoProvider fullFill(FluidLogisticsPromise promise, IRequestFlu...
FILE: common/logisticspipes/interfaces/routing/IProvideItems.java
type IProvideItems (line 17) | public interface IProvideItems extends IProvide {
method fullFill (line 19) | LogisticsOrder fullFill(LogisticsPromise promise, IRequestItems destin...
method getAllItems (line 21) | void getAllItems(Map<ItemIdentifier, Integer> list, List<IFilter> filt...
FILE: common/logisticspipes/interfaces/routing/IRequest.java
type IRequest (line 7) | public interface IRequest {
method getRouter (line 9) | @Nonnull
method getID (line 12) | int getID();
FILE: common/logisticspipes/interfaces/routing/IRequestFluid.java
type IRequestFluid (line 5) | public interface IRequestFluid extends IRequest {
method sendFailed (line 7) | void sendFailed(FluidIdentifier value1, Integer value2);
FILE: common/logisticspipes/interfaces/routing/IRequestItems.java
type IRequestItems (line 14) | public interface IRequestItems extends Comparable<IRequestItems>, IReque...
method itemCouldNotBeSend (line 16) | void itemCouldNotBeSend(ItemIdentifierStack item, IAdditionalTargetInf...
method compareTo (line 18) | @Override
FILE: common/logisticspipes/interfaces/routing/IRequireReliableFluidTransport.java
type IRequireReliableFluidTransport (line 5) | public interface IRequireReliableFluidTransport {
method liquidLost (line 7) | void liquidLost(FluidIdentifier item, int amount);
method liquidNotInserted (line 9) | void liquidNotInserted(FluidIdentifier item, int amount);
method liquidArrived (line 11) | void liquidArrived(FluidIdentifier item, int amount);
FILE: common/logisticspipes/interfaces/routing/IRequireReliableTransport.java
type IRequireReliableTransport (line 12) | public interface IRequireReliableTransport {
method itemLost (line 14) | void itemLost(ItemIdentifierStack item, IAdditionalTargetInformation i...
method itemArrived (line 16) | void itemArrived(ItemIdentifierStack item, IAdditionalTargetInformatio...
FILE: common/logisticspipes/interfaces/routing/ISpecialPipedConnection.java
type ISpecialPipedConnection (line 12) | public interface ISpecialPipedConnection {
method init (line 14) | boolean init();
method isType (line 16) | boolean isType(IPipeInformationProvider startPipe);
method getConnections (line 18) | List<ConnectionInformation> getConnections(IPipeInformationProvider st...
FILE: common/logisticspipes/interfaces/routing/ISpecialTileConnection.java
type ISpecialTileConnection (line 9) | public interface ISpecialTileConnection {
method init (line 11) | boolean init();
method isType (line 13) | boolean isType(TileEntity tile);
method getConnections (line 15) | Collection<TileEntity> getConnections(TileEntity tile);
method needsInformationTransition (line 17) | boolean needsInformationTransition();
method transmit (line 19) | void transmit(TileEntity tile, IRoutedItem arrivingItem);
FILE: common/logisticspipes/interfaces/routing/ITargetSlotInformation.java
type ITargetSlotInformation (line 3) | public interface ITargetSlotInformation {
method getTargetSlot (line 5) | int getTargetSlot();
method getAmount (line 7) | int getAmount();
method isLimited (line 9) | boolean isLimited();
FILE: common/logisticspipes/items/ItemBlankModule.java
class ItemBlankModule (line 3) | public class ItemBlankModule extends LogisticsItem {
method ItemBlankModule (line 5) | public ItemBlankModule() {
method getModelSubdir (line 9) | @Override
FILE: common/logisticspipes/items/ItemDisk.java
class ItemDisk (line 13) | public class ItemDisk extends LogisticsItem {
method getItemStackLimit (line 15) | @Override
method addInformation (line 20) | @Override
FILE: common/logisticspipes/items/ItemHUDArmor.java
class ItemHUDArmor (line 29) | public class ItemHUDArmor extends ItemArmor implements ISpecialArmor, IH...
method ItemHUDArmor (line 31) | public ItemHUDArmor() {
method getProperties (line 35) | @Override
method getArmorDisplay (line 40) | @Override
method damageArmor (line 45) | @Override
method getShareTag (line 50) | @Override
method onItemRightClick (line 55) | @Nonnull
method onItemUse (line 66) | @Nonnull
method useItem (line 76) | private void useItem(EntityPlayer player, World world) {
method getCreativeTabs (line 80) | @Nonnull
method isEnabled (line 87) | @Override
method getArmorTexture (line 92) | @Override
method getItemStackDisplayName (line 97) | @Nonnull
FILE: common/logisticspipes/items/ItemLogisticsChips.java
class ItemLogisticsChips (line 3) | public class ItemLogisticsChips extends LogisticsItem {
method ItemLogisticsChips (line 12) | public ItemLogisticsChips(int subItem) {
method getModelSubdir (line 16) | @Override
FILE: common/logisticspipes/items/ItemLogisticsPipe.java
class ItemLogisticsPipe (line 48) | public class ItemLogisticsPipe extends LogisticsItem {
method ItemLogisticsPipe (line 55) | public ItemLogisticsPipe() {
method onItemUse (line 59) | @Nonnull
method setPipesIcons (line 172) | @SideOnly(Side.CLIENT)
method setPipeIconIndex (line 176) | public void setPipeIconIndex(int index, int newIndex) {
method getNewPipeIconIndex (line 180) | public int getNewPipeIconIndex() {
method getNewPipeRenderList (line 184) | public int getNewPipeRenderList() {
method setNewPipeRenderList (line 188) | public void setNewPipeRenderList(int list) {
method setDummyPipe (line 195) | public void setDummyPipe(CoreUnroutedPipe pipe) {
FILE: common/logisticspipes/items/ItemLogisticsProgrammer.java
class ItemLogisticsProgrammer (line 19) | public class ItemLogisticsProgrammer extends LogisticsItem {
method ItemLogisticsProgrammer (line 23) | public ItemLogisticsProgrammer() {
method getContainerItem (line 29) | @Nonnull
method addInformation (line 37) | @Override
FILE: common/logisticspipes/items/ItemModule.java
class ItemModule (line 62) | public class ItemModule extends LogisticsItem {
class Module (line 64) | private static class Module {
method Module (line 69) | private Module(Supplier<? extends LogisticsModule> moduleConstructor) {
method getILogisticsModule (line 74) | private LogisticsModule getILogisticsModule() {
method getILogisticsModuleClass (line 81) | private Class<? extends LogisticsModule> getILogisticsModuleClass() {
method ItemModule (line 89) | public ItemModule(Module moduleType) {
method loadModules (line 95) | public static void loadModules(IForgeRegistry<Item> registry) {
method registerModule (line 115) | public static void registerModule(IForgeRegistry<Item> registry, Strin...
method registerModule (line 120) | public static void registerModule(IForgeRegistry<Item> registry, Strin...
method getLogisticsModule (line 128) | @Nullable
method openConfigGui (line 141) | private void openConfigGui(@Nonnull ItemStack stack, EntityPlayer play...
method hasEffect (line 150) | @Override
method onItemRightClick (line 161) | @Override
method onItemUse (line 171) | @Override
method getModule (line 192) | @Nullable
method getModuleForItem (line 211) | @Nullable
method getModelSubdir (line 228) | @Override
method addInformation (line 233) | @Override
FILE: common/logisticspipes/items/ItemParts.java
class ItemParts (line 9) | public class ItemParts extends LogisticsItem {
method ItemParts (line 11) | public ItemParts() {
method getModelCount (line 16) | @Override
method getModelSubdir (line 21) | @Override
method getSubItems (line 26) | @Override
FILE: common/logisticspipes/items/ItemPipeController.java
class ItemPipeController (line 18) | public class ItemPipeController extends LogisticsItem {
method ItemPipeController (line 20) | public ItemPipeController() {
method onItemRightClick (line 24) | @Nonnull
method onItemUse (line 35) | @Nonnull
method useItem (line 45) | private void useItem(EntityPlayer player, World world) {
FILE: common/logisticspipes/items/ItemPipeManager.java
class ItemPipeManager (line 13) | public class ItemPipeManager extends LogisticsItem implements ILPPipeCon...
method ItemPipeManager (line 15) | public ItemPipeManager() {
method canWrench (line 19) | @Override
method wrenchUsed (line 24) | @Override
method doesSneakBypassUse (line 27) | @Override
FILE: common/logisticspipes/items/ItemPipeSignCreator.java
class ItemPipeSignCreator (line 27) | public class ItemPipeSignCreator extends LogisticsItem {
method ItemPipeSignCreator (line 33) | public ItemPipeSignCreator() {
method isEnchantable (line 40) | @Override
method canApplyAtEnchantingTable (line 45) | @Override
method onItemUse (line 50) | @Nonnull
method getMetadata (line 114) | @Override
method getModelCount (line 121) | @Override
method onItemRightClick (line 126) | @Nonnull
method registerPipeSignTypes (line 152) | public static void registerPipeSignTypes() {
FILE: common/logisticspipes/items/ItemUpgrade.java
class ItemUpgrade (line 53) | public class ItemUpgrade extends LogisticsItem {
class Upgrade (line 61) | private static class Upgrade {
method Upgrade (line 66) | private Upgrade(Supplier<? extends IPipeUpgrade> moduleConstructor) {
method getIPipeUpgrade (line 71) | private IPipeUpgrade getIPipeUpgrade() {
method getIPipeUpgradeClass (line 78) | private Class<? extends IPipeUpgrade> getIPipeUpgradeClass() {
method ItemUpgrade (line 85) | public ItemUpgrade(Upgrade upgradeType) {
method loadUpgrades (line 91) | public static void loadUpgrades(IForgeRegistry<Item> registry) {
method getAndCheckUpgrade (line 120) | @Nonnull
method registerUpgrade (line 126) | public static void registerUpgrade(IForgeRegistry<Item> registry, Stri...
method getUpgradeForItem (line 132) | public IPipeUpgrade getUpgradeForItem(@Nonnull ItemStack itemStack, IP...
method getModelSubdir (line 154) | @Override
method addInformation (line 161) | @Override
method join (line 196) | @SideOnly(Side.CLIENT)
FILE: common/logisticspipes/items/LogisticsBrokenItem.java
class LogisticsBrokenItem (line 9) | public class LogisticsBrokenItem extends LogisticsItem implements IItemA...
method canExistInNormalInventory (line 13) | @Override
method canExistInWorld (line 18) | @Override
FILE: common/logisticspipes/items/LogisticsFluidContainer.java
class LogisticsFluidContainer (line 24) | public class LogisticsFluidContainer extends LogisticsItem implements II...
method LogisticsFluidContainer (line 28) | public LogisticsFluidContainer() {
method canExistInNormalInventory (line 32) | @Override
method canExistInWorld (line 37) | @Override
method getTranslationKey (line 42) | @Override
method getItemStackDisplayName (line 55) | @Override
method addInformation (line 63) | @Override
method getSubItems (line 76) | @Override
FILE: common/logisticspipes/items/LogisticsItem.java
class LogisticsItem (line 30) | public class LogisticsItem extends Item implements ILogisticsItem {
method LogisticsItem (line 32) | public LogisticsItem() {
method getModelPath (line 36) | @Override
method getModelSubdir (line 49) | public String getModelSubdir() {
method getModelCount (line 53) | public int getModelCount() {
method getTranslationKey (line 57) | @Nonnull
method addInformation (line 72) | @Override
method addShiftInfo (line 81) | public boolean addShiftInfo() {
method getItemStackDisplayName (line 85) | @Nonnull
FILE: common/logisticspipes/items/LogisticsItemCard.java
class LogisticsItemCard (line 23) | public class LogisticsItemCard extends LogisticsItem implements IItemAdv...
method LogisticsItemCard (line 28) | public LogisticsItemCard() {
method addInformation (line 32) | @Override
method getShareTag (line 57) | @Override
method getItemStackLimit (line 62) | @Override
method canExistInNormalInventory (line 67) | @Override
method canExistInWorld (line 72) | @Override
FILE: common/logisticspipes/items/LogisticsSolidBlockItem.java
class LogisticsSolidBlockItem (line 16) | public class LogisticsSolidBlockItem extends ItemBlock implements ILogis...
method LogisticsSolidBlockItem (line 21) | public LogisticsSolidBlockItem(LogisticsSolidBlock block) {
method getItemStackDisplayName (line 28) | @Nonnull
FILE: common/logisticspipes/items/RemoteOrderer.java
class RemoteOrderer (line 32) | public class RemoteOrderer extends LogisticsItem {
method getModelSubdir (line 34) | @Override
method getModelCount (line 39) | @Override
method getShareTag (line 44) | @Override
method addInformation (line 49) | @Override
method onItemRightClick (line 58) | @Nonnull
method connectToPipe (line 82) | public static void connectToPipe(@Nonnull ItemStack stack, PipeItemsRe...
method getPipe (line 98) | public static PipeItemsRemoteOrdererLogistics getPipe(@Nonnull ItemSta...
method getSubItems (line 125) | @Override
FILE: common/logisticspipes/logic/BaseLogicConnection.java
class BaseLogicConnection (line 6) | public abstract class BaseLogicConnection {
method BaseLogicConnection (line 23) | public BaseLogicConnection(BaseLogicTask source, int sourceIndex, Base...
FILE: common/logisticspipes/logic/BaseLogicTask.java
class BaseLogicTask (line 10) | public abstract class BaseLogicTask {
method BaseLogicTask (line 26) | public BaseLogicTask(NBTTagCompound nbt) {
method BaseLogicTask (line 34) | public BaseLogicTask(int posX, int posY) {
method getNBTTagCompound (line 40) | public final NBTTagCompound getNBTTagCompound() {
method addToNBT (line 46) | protected void addToNBT(NBTTagCompound nbt) {
method getAmountOfInput (line 54) | public abstract int getAmountOfInput();
method getAmountOfOutput (line 56) | public abstract int getAmountOfOutput();
method getInputParameterType (line 58) | public abstract LogicParameterType getInputParameterType(int i);
method getOutputParameterType (line 60) | public abstract LogicParameterType getOutputParameterType(int i);
method setInputParameter (line 62) | public abstract void setInputParameter(int i, Object value);
method isCalculated (line 64) | public abstract boolean isCalculated();
method getResult (line 66) | public abstract Object getResult(int i);
method resetState (line 68) | public abstract void resetState();
method getTypeName (line 70) | public abstract String getTypeName();
method syncTick (line 72) | public abstract void syncTick(TileEntity tile);
FILE: common/logisticspipes/logic/LogicController.java
class LogicController (line 14) | public class LogicController {
method calculate (line 25) | public void calculate(TileEntity tile) {
method writeToNBT (line 83) | public void writeToNBT(NBTTagCompound nbt) {
method readFromNBT (line 88) | public void readFromNBT(NBTTagCompound nbt) {
FILE: common/logisticspipes/logic/LogicParameterType.java
type LogicParameterType (line 7) | public enum LogicParameterType {
method LogicParameterType (line 16) | LogicParameterType(Class<?> clazz) {
FILE: common/logisticspipes/logic/gui/LogicLayoutGui.java
class LogicLayoutGui (line 27) | public class LogicLayoutGui extends LogisticsBaseGuiScreen {
type ZOOM_LEVEL (line 29) | private enum ZOOM_LEVEL {
method ZOOM_LEVEL (line 34) | ZOOM_LEVEL(float zoom, int bottom, int right, int line, int moveY) {
method next (line 48) | ZOOM_LEVEL next() {
method prev (line 57) | ZOOM_LEVEL prev() {
method LogicLayoutGui (line 80) | public LogicLayoutGui(LogicController controller, EntityPlayer player) {
method initGui (line 89) | @Override
method actionPerformed (line 98) | @Override
method drawScreen (line 101) | @Override
method drawGuiContainerBackgroundLayer (line 138) | @Override
method drawTransparentBack (line 147) | private void drawTransparentBack() {
method drawMap (line 152) | private void drawMap(int par1, int par2) {
method renderLinkedOrderListItems (line 251) | private void renderLinkedOrderListItems(LinkedLogisticsOrderList list,...
method renderLinkedOrderListLines (line 294) | private void renderLinkedOrderListLines(LinkedLogisticsOrderList list,...
method drawPointFor (line 335) | private void drawPointFor(LinkedLogisticsOrderList list, int xPos, int...
method drawProgressPoint (line 370) | protected void drawProgressPoint(int x, int y, int color) {
FILE: common/logisticspipes/logic/interfaces/ILogicControllerTile.java
type ILogicControllerTile (line 5) | public interface ILogicControllerTile {
method getLogicController (line 7) | LogicController getLogicController();
FILE: common/logisticspipes/logistics/ILogisticsFluidManager.java
type ILogisticsFluidManager (line 14) | public interface ILogisticsFluidManager {
method getBestReply (line 16) | @Nullable
method getFluidContainer (line 19) | ItemIdentifierStack getFluidContainer(FluidIdentifierStack stack);
method getFluidFromContainer (line 21) | FluidIdentifierStack getFluidFromContainer(ItemIdentifierStack stack);
method getAvailableFluid (line 23) | TreeSet<FluidIdentifierStack> getAvailableFluid(List<ExitRoute> list);
FILE: common/logisticspipes/logistics/ILogisticsManager.java
type ILogisticsManager (line 19) | public interface ILogisticsManager {
method assignDestinationFor (line 21) | IRoutedItem assignDestinationFor(IRoutedItem item, int sourceRouterint...
method getCraftableItems (line 23) | LinkedList<ItemIdentifier> getCraftableItems(List<ExitRoute> list);
method getAvailableItems (line 25) | Map<ItemIdentifier, Integer> getAvailableItems(List<ExitRoute> list);
method getBetterRouterName (line 27) | String getBetterRouterName(IRouter r);
method getAmountFor (line 29) | int getAmountFor(ItemIdentifier item, List<ExitRoute> validDestinations);
FILE: common/logisticspipes/logistics/LogisticsFluidManager.java
class LogisticsFluidManager (line 34) | public class LogisticsFluidManager implements ILogisticsFluidManager {
method getBestReply (line 36) | @Override
method getFluidContainer (line 60) | @Override
method getFluidFromContainer (line 69) | @Override
method getAvailableFluid (line 78) | @Override
FILE: common/logisticspipes/logistics/LogisticsManager.java
class LogisticsManager (line 48) | public class LogisticsManager implements ILogisticsManager {
method getBestReply (line 50) | private Triplet<Integer, SinkReply, List<IFilter>> getBestReply(@Nonnu...
method canSink (line 112) | public static SinkReply canSink(@Nonnull ItemStack stack, @Nonnull IRo...
method canSink (line 116) | public static SinkReply canSink(@Nonnull ItemStack stack, @Nonnull IRo...
method assignDestinationFor (line 161) | @Override
method getBetterRouterName (line 225) | @Override
method getAvailableItems (line 260) | @Override
method getCraftableItems (line 303) | @Override
method getAmountFor (line 346) | @Override
FILE: common/logisticspipes/logisticspipes/ChassisTransportLayer.java
class ChassisTransportLayer (line 10) | public class ChassisTransportLayer extends TransportLayer {
method ChassisTransportLayer (line 14) | public ChassisTransportLayer(PipeLogisticsChassis chassisPipe) {
method itemArrived (line 18) | @Override
method stillWantItem (line 26) | @Override
FILE: common/logisticspipes/logisticspipes/IRoutedItem.java
type IRoutedItem (line 26) | public interface IRoutedItem {
type TransportMode (line 28) | enum TransportMode {
method getDestination (line 35) | int getDestination();
method getDestinationUUID (line 37) | UUID getDestinationUUID();
method setDestination (line 39) | void setDestination(int destination);
method clearDestination (line 41) | void clearDestination();
method setTransportMode (line 43) | void setTransportMode(TransportMode transportMode);
method getTransportMode (line 45) | TransportMode getTransportMode();
method setAdditionalTargetInformation (line 47) | void setAdditionalTargetInformation(IAdditionalTargetInformation info);
method getAdditionalTargetInformation (line 49) | IAdditionalTargetInformation getAdditionalTargetInformation();
method setDoNotBuffer (line 51) | void setDoNotBuffer(boolean doNotBuffer);
method getDoNotBuffer (line 53) | boolean getDoNotBuffer();
method getBufferCounter (line 55) | int getBufferCounter();
method setBufferCounter (line 57) | void setBufferCounter(int counter);
method setArrived (line 59) | void setArrived(boolean flag);
method getArrived (line 61) | boolean getArrived();
method addToJamList (line 63) | void addToJamList(IRouter router);
method getJamList (line 65) | List<Integer> getJamList();
method checkIDFromUUID (line 67) | void checkIDFromUUID();
method getItemIdentifierStack (line 69) | ItemIdentifierStack getItemIdentifierStack();
method readFromNBT (line 71) | void readFromNBT(NBTTagCompound data);
method writeToNBT (line 73) | void writeToNBT(NBTTagCompound tagEntityItem);
method setDistanceTracker (line 75) | void setDistanceTracker(IDistanceTracker tracker);
method getDistanceTracker (line 77) | IDistanceTracker getDistanceTracker();
method getInfo (line 79) | ItemRoutingInformation getInfo();
method split (line 81) | void split(int itemsToTake, EnumFacing orientation);
FILE: common/logisticspipes/logisticspipes/ITrackStatistics.java
type ITrackStatistics (line 8) | public interface ITrackStatistics {
method receivedItem (line 10) | void receivedItem(int count);
method relayedItem (line 12) | void relayedItem(int count);
FILE: common/logisticspipes/logisticspipes/ItemModuleInformationManager.java
class ItemModuleInformationManager (line 17) | public class ItemModuleInformationManager {
method saveInformation (line 19) | public static void saveInformation(@Nonnull ItemStack stack, Logistics...
method readInformation (line 60) | public static void readInformation(@Nonnull ItemStack stack, Logistics...
FILE: common/logisticspipes/logisticspipes/PipeTransportLayer.java
class PipeTransportLayer (line 19) | public class PipeTransportLayer extends TransportLayer {
method PipeTransportLayer (line 25) | public PipeTransportLayer(CoreRoutedPipe routedPipe, ITrackStatistics ...
method itemArrived (line 31) | @Override
method stillWantItem (line 77) | @Override
FILE: common/logisticspipes/logisticspipes/RouteLayer.java
class RouteLayer (line 23) | public class RouteLayer {
method RouteLayer (line 29) | public RouteLayer(@Nonnull IRouter router, TransportLayer transportLay...
method getOrientationForItem (line 35) | public EnumFacing getOrientationForItem(IRoutedItem item, EnumFacing b...
FILE: common/logisticspipes/logisticspipes/TransportLayer.java
class TransportLayer (line 17) | public abstract class TransportLayer {
method stillWantItem (line 19) | public abstract boolean stillWantItem(IRoutedItem item);
method itemArrived (line 21) | public abstract EnumFacing itemArrived(IRoutedItem item, EnumFacing de...
method handleItem (line 23) | public void handleItem(IRoutedItem item) {}
FILE: common/logisticspipes/modplugins/jei/AdvancedGuiHandler.java
class AdvancedGuiHandler (line 13) | public class AdvancedGuiHandler implements IAdvancedGuiHandler<Logistics...
method getGuiContainerClass (line 15) | @Override
method getGuiExtraAreas (line 20) | @Nullable
FILE: common/logisticspipes/modplugins/jei/GhostIngredientHandler.java
class GhostIngredientHandler (line 24) | public class GhostIngredientHandler implements IGhostIngredientHandler<L...
method getTargets (line 26) | @Nonnull
method onComplete (line 92) | @Override
FILE: common/logisticspipes/modplugins/jei/JEIPluginLoader.java
class JEIPluginLoader (line 22) | @JEIPlugin
method register (line 27) | @Override
method onRuntimeAvailable (line 36) | @Override
method showRecipe (line 41) | @SideOnly(Side.CLIENT)
FILE: common/logisticspipes/modplugins/jei/RecipeTransferHandler.java
class RecipeTransferHandler (line 34) | public class RecipeTransferHandler implements IRecipeTransferHandler<Dum...
method RecipeTransferHandler (line 38) | public RecipeTransferHandler(IRecipeTransferHandlerHelper recipeTransf...
method getContainerClass (line 42) | @Nonnull
method transferRecipe (line 48) | @Nullable
FILE: common/logisticspipes/modplugins/mcmp/LPMCMPAddon.java
class LPMCMPAddon (line 26) | @MCMPAddon
method registerParts (line 31) | @Override
method attachCapability (line 37) | @SubscribeEvent
FILE: common/logisticspipes/modplugins/mcmp/LPMultipartTile.java
class LPMultipartTile (line 24) | public class LPMultipartTile implements IMultipartTile {
method LPMultipartTile (line 28) | public LPMultipartTile(LogisticsTileGenericPipe tile) {
method getTileEntity (line 32) | @Override
method isTickable (line 37) | public boolean isTickable() {
method getTickable (line 41) | public ITickable getTickable() {
method setPartInfo (line 45) | public void setPartInfo(IPartInfo info) {}
method getPartWorld (line 47) | public World getPartWorld() {
method setPartWorld (line 51) | public void setPartWorld(World world) {}
method hasPartWorld (line 53) | public boolean hasPartWorld() {
method getPartPos (line 57) | public BlockPos getPartPos() {
method setPartPos (line 61) | public void setPartPos(BlockPos pos) {}
method readPartFromNBT (line 63) | public void readPartFromNBT(NBTTagCompound compound) {}
method writePartToNBT (line 65) | public NBTTagCompound writePartToNBT(NBTTagCompound compound) {
method markPartDirty (line 69) | public void markPartDirty() {}
method getMaxPartRenderDistanceSquared (line 71) | public double getMaxPartRenderDistanceSquared() {
method isPartInvalid (line 75) | public boolean isPartInvalid() {
method invalidatePart (line 79) | public void invalidatePart() {}
method validatePart (line 81) | public void validatePart() {}
method updatePartContainerInfo (line 83) | public void updatePartContainerInfo() {}
method rotatePart (line 85) | public void rotatePart(Rotation rotation) {}
method mirrorPart (line 87) | public void mirrorPart(Mirror mirror) {}
method getPartUpdatePacket (line 89) | public SPacketUpdateTileEntity getPartUpdatePacket() {
method onPartDataPacket (line 93) | public void onPartDataPacket(NetworkManager net, SPacketUpdateTileEnti...
method getPartUpdateTag (line 95) | public NBTTagCompound getPartUpdateTag() {
method handlePartUpdateTag (line 99) | public void handlePartUpdateTag(NBTTagCompound tag) {}
method onPartChunkUnload (line 101) | public void onPartChunkUnload() {}
method shouldRefreshPart (line 103) | public boolean shouldRefreshPart(World world, BlockPos pos, IBlockStat...
method shouldRenderPartInPass (line 107) | public boolean shouldRenderPartInPass(int pass) {
method getPartRenderBoundingBox (line 111) | public AxisAlignedBB getPartRenderBoundingBox() {
method canPartRenderBreaking (line 115) | public boolean canPartRenderBreaking() {
method onPartLoad (line 119) | public void onPartLoad() {}
method hasFastPartRenderer (line 121) | public boolean hasFastPartRenderer() {
method hasPartCapability (line 125) | public boolean hasPartCapability(Capability<?> capability, EnumFacing ...
method getPartCapability (line 129) | public <T> T getPartCapability(Capability<T> capability, EnumFacing fa...
method onlyOpsCanSetPartNbt (line 133) | public boolean onlyOpsCanSetPartNbt() {
FILE: common/logisticspipes/modplugins/mcmp/LPPipeMultipart.java
class LPPipeMultipart (line 45) | public class LPPipeMultipart implements IMultipart {
method getSlotForPlacement (line 47) | @Override
method getSlotFromWorld (line 52) | @Override
method getBlock (line 57) | @Override
method getOcclusionBoxes (line 62) | @Override
method getExtendedState (line 67) | @Override
method collisionRayTrace (line 72) | @Override
method loadMultipartTile (line 77) | @Override
method convertToMultipartTile (line 82) | @Override
method shouldWrapWorld (line 87) | @Override
method testIntersection (line 92) | public boolean testIntersection(IPartInfo self, IPartInfo otherPart) {
method getActualState (line 96) | public IBlockState getActualState(IBlockAccess world, BlockPos pos, IP...
method canRenderInLayer (line 100) | public boolean canRenderInLayer(IBlockAccess world, BlockPos pos, IPar...
method onPartPlacedBy (line 104) | public void onPartPlacedBy(IPartInfo part, EntityLivingBase placer, @N...
method isSideSolid (line 106) | public boolean isSideSolid(IBlockAccess world, BlockPos pos, IPartInfo...
method randomDisplayTick (line 110) | public void randomDisplayTick(IPartInfo part, Random rand) {}
method addDestroyEffects (line 112) | public boolean addDestroyEffects(IPartInfo part, ParticleManager manag...
method addHitEffects (line 116) | public boolean addHitEffects(IPartInfo part, RayTraceResult hit, Parti...
method getRenderType (line 120) | public EnumBlockRenderType getRenderType(IPartInfo part) {
method getBoundingBox (line 126) | public AxisAlignedBB getBoundingBox(IPartInfo part) {
method canConnectRedstone (line 130) | public boolean canConnectRedstone(IBlockAccess world, BlockPos pos, IP...
method getWeakPower (line 134) | public int getWeakPower(IBlockAccess world, BlockPos pos, IPartInfo pa...
method getStrongPower (line 138) | public int getStrongPower(IBlockAccess world, BlockPos pos, IPartInfo ...
method canCreatureSpawn (line 142) | public boolean canCreatureSpawn(IBlockAccess world, BlockPos pos, IPar...
method canSustainLeaves (line 146) | public boolean canSustainLeaves(IBlockAccess world, BlockPos pos, IPar...
method canSustainPlant (line 150) | public boolean canSustainPlant(IBlockAccess world, BlockPos pos, IPart...
method fillWithRain (line 154) | public void fillWithRain(IPartInfo part) {}
method getComparatorInputOverride (line 156) | public int getComparatorInputOverride(IPartInfo part) {
method getDrops (line 160) | public List<ItemStack> getDrops(IBlockAccess world, BlockPos pos, IPar...
method getExplosionResistance (line 164) | public float getExplosionResistance(IPartInfo part, Entity exploder, E...
method getEnchantPowerBonus (line 168) | public float getEnchantPowerBonus(IPartInfo part) {
method getLightOpacity (line 172) | public int getLightOpacity(IBlockAccess world, BlockPos pos, IPartInfo...
method getLightOpacity (line 176) | public int getLightOpacity(IBlockState state) {
method getLightValue (line 180) | public int getLightValue(IBlockAccess world, BlockPos pos, IPartInfo p...
method getLightValue (line 184) | public int getLightValue(IBlockState state) {
method getPickPart (line 188) | @Nonnull
method getPlayerRelativePartHardness (line 193) | public float getPlayerRelativePartHardness(IPartInfo part, RayTraceRes...
method isAABBInsideMaterial (line 197) | public Boolean isAABBInsideMaterial(IPartInfo part, AxisAlignedBB boun...
method isBeaconBase (line 201) | public boolean isBeaconBase(IBlockAccess world, BlockPos pos, IPartInf...
method isBurning (line 205) | public boolean isBurning(IBlockAccess world, BlockPos pos, IPartInfo p...
method isEntityInsideMaterial (line 209) | public Boolean isEntityInsideMaterial(IBlockAccess world, BlockPos pos...
method isFertile (line 213) | public boolean isFertile(IPartInfo part) {
method isFireSource (line 217) | public boolean isFireSource(IPartInfo part, EnumFacing side) {
method isFlammable (line 221) | public boolean isFlammable(IBlockAccess world, BlockPos pos, IPartInfo...
method isFoliage (line 225) | public boolean isFoliage(IBlockAccess world, BlockPos pos, IPartInfo p...
method isLadder (line 229) | public boolean isLadder(IBlockAccess world, BlockPos pos, IPartInfo pa...
method isLeaves (line 233) | public boolean isLeaves(IBlockAccess world, BlockPos pos, IPartInfo pa...
method isPassable (line 237) | public boolean isPassable(IBlockAccess world, BlockPos pos, IPartInfo ...
method isWood (line 241) | public boolean isWood(IBlockAccess world, BlockPos pos, IPartInfo part) {
method onPartClicked (line 245) | public void onPartClicked(IPartInfo part, EntityPlayer player, RayTrac...
method neighborChanged (line 247) | public void neighborChanged(IPartInfo part, Block neighborBlock, Block...
method onNeighborChange (line 250) | public void onNeighborChange(IPartInfo part, BlockPos neighbor) {
method onPartActivated (line 253) | public boolean onPartActivated(IPartInfo part, EntityPlayer player, En...
method onPlantGrow (line 257) | public void onPlantGrow(IPartInfo part, BlockPos source) {}
method canPlayerDestroy (line 259) | public boolean canPlayerDestroy(IPartInfo part, EntityPlayer player) {
method onPartHarvested (line 263) | public void onPartHarvested(IPartInfo part, EntityPlayer player) {}
method randomTick (line 265) | public void randomTick(IPartInfo part, Random random) {}
method getPartFaceShape (line 267) | public BlockFaceShape getPartFaceShape(IPartInfo part, EnumFacing face) {
method canPlacePartAt (line 271) | public boolean canPlacePartAt(World world, BlockPos pos) {
method breakPart (line 275) | public void breakPart(IPartInfo part) {
method updateTick (line 279) | public void updateTick(IPartInfo part, Random rand) {}
method addCollisionBoxToList (line 281) | public void addCollisionBoxToList(IPartInfo part, AxisAlignedBB entity...
method getCollisionBoundingBox (line 283) | public AxisAlignedBB getCollisionBoundingBox(World world, BlockPos pos...
method getSelectedBoundingBox (line 287) | public AxisAlignedBB getSelectedBoundingBox(IPartInfo part) {
method onEntityCollidedWithPart (line 291) | public void onEntityCollidedWithPart(IPartInfo part, Entity entity) {}
method dropPartAsItem (line 293) | public void dropPartAsItem(IPartInfo part, int fortune) {}
FILE: common/logisticspipes/modplugins/nei/DebugHelper.java
class DebugHelper (line 33) | public class DebugHelper implements IContainerTooltipHandler {
method handleTooltip (line 37) | @Override
method handleItemDisplayName (line 40) | @Override
method addNBTToTree (line 79) | private void addNBTToTree(NBTBase nbt, DefaultMutableTreeNode node) th...
FILE: common/logisticspipes/modplugins/nei/DrawHandler.java
class DrawHandler (line 15) | @SideOnly(Side.CLIENT)
method renderObjects (line 18) | @Override
method postRenderObjects (line 21) | @Override
method renderSlotOverlay (line 41) | @Override
FILE: common/logisticspipes/modplugins/nei/LoadingHelper.java
class LoadingHelper (line 9) | public class LoadingHelper {
method LoadNeiNBTDebugHelper (line 11) | public static void LoadNeiNBTDebugHelper() {
FILE: common/logisticspipes/modplugins/nei/NEILogisticsPipesConfig.java
class NEILogisticsPipesConfig (line 12) | @NEIPlugin
method loadConfig (line 17) | @Override
method getName (line 58) | @Override
method getVersion (line 63) | @Override
FILE: common/logisticspipes/modules/ChassisModule.java
class ChassisModule (line 35) | public class ChassisModule extends LogisticsModule implements Gui {
method ChassisModule (line 41) | public ChassisModule(int moduleCount, PipeLogisticsChassis parentChass...
method getLPName (line 48) | @Nonnull
method getProperties (line 54) | @Nonnull
method installModule (line 63) | public void installModule(int slot, LogisticsModule module) {
method removeModule (line 67) | public void removeModule(int slot) {
method getModule (line 71) | @Nullable
method hasModule (line 76) | public boolean hasModule(int slot) {
method getModules (line 80) | public Stream<LogisticsModule> getModules() {
method slottedModules (line 86) | public Stream<SlottedModule> slottedModules() {
method sinksItem (line 90) | @Override
method readFromNBT (line 141) | @Override
method tick (line 156) | @Override
method finishInit (line 167) | @Override
method hasGenericInterests (line 173) | @Override
method interestedInAttachedInventory (line 178) | @Override
method interestedInUndamagedID (line 183) | @Override
method receivePassive (line 188) | @Override
method queueCCSinkEvent (line 199) | @Override
method getPipeGuiProvider (line 211) | @Nonnull
method getInHandGuiProvider (line 218) | @Nonnull
method getModuleUpgradeManager (line 224) | @Nonnull
FILE: common/logisticspipes/modules/LogisticsModule.java
class LogisticsModule (line 34) | @CCType(name = "LogisticsModule")
method registerHandler (line 52) | public void registerHandler(IWorldProvider world, IPipeServiceProvider...
method getLPName (line 61) | @Nonnull
method getProperties (line 64) | @Nonnull
method registerPosition (line 73) | public void registerPosition(@Nonnull ModulePositionType slot, int pos...
method getBlockPos (line 78) | @Nonnull
method getWorld (line 96) | @Nullable
method getSlot (line 103) | public ModulePositionType getSlot() {
method getPositionInt (line 107) | public int getPositionInt() {
method readFromNBT (line 111) | @Override
method writeToNBT (line 116) | @Override
method sinksItem (line 134) | public SinkReply sinksItem(@Nonnull ItemStack stack, ItemIdentifier it...
method tick (line 142) | public abstract void tick();
method hasGenericInterests (line 150) | public abstract boolean hasGenericInterests();
method collectSpecificInterests (line 158) | public void collectSpecificInterests(@Nonnull Collection<ItemIdentifie...
method interestedInAttachedInventory (line 161) | public abstract boolean interestedInAttachedInventory();
method interestedInUndamagedID (line 167) | public abstract boolean interestedInUndamagedID();
method receivePassive (line 172) | public abstract boolean receivePassive();
method hasEffect (line 180) | public boolean hasEffect() {
method queueCCSinkEvent (line 184) | public List<CCSinkResponder> queueCCSinkEvent(ItemIdentifierStack item) {
method hasGui (line 188) | @CCCommand(description = "Returns true if the Pipe has a gui")
method getModule (line 193) | @Nonnull
method getUpgradeManager (line 198) | @Nonnull
method toString (line 204) | @Override
method getTypeHolder (line 217) | @Override
method finishInit (line 222) | public void finishInit() {
type ModulePositionType (line 244) | public enum ModulePositionType {
method ModulePositionType (line 250) | ModulePositionType(boolean inWorld) {
FILE: common/logisticspipes/modules/ModuleActiveSupplier.java
class ModuleActiveSupplier (line 63) | public class ModuleActiveSupplier extends LogisticsModule
method ModuleActiveSupplier (line 94) | public ModuleActiveSupplier() {
method getName (line 99) | public static String getName() {
method getLPName (line 103) | @Nonnull
method getProperties (line 109) | @NotNull
method getClientInformation (line 115) | @Override
method startHUDWatching (line 125) | @Override
method stopHUDWatching (line 130) | @Override
method startWatching (line 135) | @Override
method stopWatching (line 144) | @Override
method getHUDRenderer (line 149) | @Override
method handleInvContent (line 155) | @Override
method InventoryChanged (line 160) | @Override
method hasGenericInterests (line 170) | @Override
method interestedInAttachedInventory (line 175) | @Override
method interestedInUndamagedID (line 180) | @Override
method receivePassive (line 185) | @Override
method isRequestFailed (line 191) | public boolean isRequestFailed() {
method setRequestFailed (line 195) | public void setRequestFailed(boolean value) {
method tick (line 199) | @Override
method createPatternRequest (line 220) | private void createPatternRequest(IInventoryUtil invUtil) {
method createSupplyRequest (line 306) | private void createSupplyRequest(IInventoryUtil invUtil) {
method readFromNBT (line 406) | @Override
method decreaseRequested (line 421) | private void decreaseRequested(ItemIdentifierStack item) {
method itemLost (line 461) | @Override
method itemArrived (line 468) | @Override
method addStatusInformation (line 475) | public void addStatusInformation(List<StatusEntry> status) {
method getPipeGuiProvider (line 487) | @Nonnull
method getInHandGuiProvider (line 498) | @Nonnull
method getRouter (line 504) | @Override
method itemCouldNotBeSend (line 511) | @Override
method compareTo (line 516) | @Override
method getID (line 521) | @Override
method hasPatternUpgrade (line 526) | public boolean hasPatternUpgrade() {
type SupplyMode (line 530) | public enum SupplyMode {
type PatternMode (line 538) | public enum PatternMode {
class PatternSupplierTargetInformation (line 545) | public class PatternSupplierTargetInformation extends SupplierTargetIn...
method PatternSupplierTargetInformation (line 550) | public PatternSupplierTargetInformation(int targetSlot, int amount) {
method getTargetSlot (line 557) | @Override
method getAmount (line 562) | @Override
method isLimited (line 567) | @Override
class SupplierTargetInformation (line 574) | public class SupplierTargetInformation extends ChassiTargetInformation {
method SupplierTargetInformation (line 576) | public SupplierTargetInformation() {
FILE: common/logisticspipes/modules/ModuleCrafter.java
class ModuleCrafter (line 124) | public class ModuleCrafter extends LogisticsModule
method ModuleCrafter (line 171) | public ModuleCrafter() {
method getName (line 177) | public static String getName() {
method getLPName (line 181) | @Nonnull
method getProperties (line 187) | @Nonnull
method registerHandler (line 196) | @Override
method registerPosition (line 202) | @Override
method sinksItem (line 209) | @Override
method spaceFor (line 225) | protected int spaceFor(@Nonnull ItemStack stack, ItemIdentifier item, ...
method getUUIDForSatelliteName (line 251) | private UUID getUUIDForSatelliteName(String name) {
method getUUIDForFluidSatelliteName (line 260) | private UUID getUUIDForFluidSatelliteName(String name) {
method tick (line 269) | @Override
method itemArrived (line 359) | @Override
method itemLost (line 363) | @Override
method hasGenericInterests (line 368) | @Override
method collectSpecificInterests (line 373) | @Override
method interestedInAttachedInventory (line 391) | @Override
method interestedInUndamagedID (line 397) | @Override
method receivePassive (line 402) | @Override
method canProvide (line 407) | @Override
method fullFill (line 453) | @Override
method getAllItems (line 476) | @Override
method getRouter (line 480) | @Override
method itemCouldNotBeSend (line 486) | @Override
method compareTo (line 491) | @Override
method getID (line 496) | @Override
method registerExtras (line 503) | @Override
method addCrafting (line 515) | @Override
method isSatelliteConnected (line 623) | public boolean isSatelliteConnected() {
method canCraft (line 659) | @Override
method getCraftedItems (line 670) | @Deprecated
method getCraftedItem (line 680) | @Nullable
method getTodo (line 685) | @Override
method getSatelliteRouter (line 692) | private IRouter getSatelliteRouter(int x) {
method readFromNBT (line 698) | @Override
method outputFuzzy (line 744) | public IBitSet outputFuzzy() {
method inputFuzzy (line 749) | public IBitSet inputFuzzy(int slot) {
method getCPipePacket (line 754) | public ModernPacket getCPipePacket() {
method getSatelliteNameForUUID (line 763) | private String getSatelliteNameForUUID(UUID uuid) {
method getSatelliteNamesForUUIDs (line 780) | private String[] getSatelliteNamesForUUIDs(UUIDListProperty list) {
method handleCraftingUpdatePacket (line 784) | public void handleCraftingUpdatePacket(CraftingPipeUpdatePacket packet) {
method getPipeGuiProvider (line 797) | @Nonnull
method getInHandGuiProvider (line 810) | @Nonnull
method importFromCraftingTable (line 817) | public void importFromCraftingTable(@Nullable EntityPlayer player) {
method getByproductItem (line 847) | public ItemIdentifierStack getByproductItem() {
method getFluidMaterial (line 851) | public FluidIdentifier getFluidMaterial(int slotnr) {
method changeFluidAmount (line 859) | public void changeFluidAmount(int change, int slot, EntityPlayer playe...
method getFluidSatelliteRouter (line 874) | private IRouter getFluidSatelliteRouter(int x) {
method openAttachedGui (line 885) | public boolean openAttachedGui(EntityPlayer player) {
method enabledUpdateEntity (line 949) | public void enabledUpdateEntity() {
method isExtractedMismatch (line 1091) | private boolean isExtractedMismatch(LogisticsItemOrder nextOrder, Item...
method areAllOrderesToBuffer (line 1097) | public boolean areAllOrderesToBuffer() {
method cacheAreAllOrderesToBuffer (line 1101) | public void cacheAreAllOrderesToBuffer() {
method extract (line 1122) | @Nonnull
method extractFiltered (line 1133) | @Nonnull
method extractFromInventory (line 1141) | @Nonnull
method extractFromInventoryFiltered (line 1174) | @Nonnull
method isFiltered (line 1201) | private boolean isFiltered(IItemIdentifierInventory filter, int filter...
method extractFromLogisticsCraftingTable (line 1216) | @Nonnull
method neededEnergy (line 1265) | protected int neededEnergy() {
method itemsToExtract (line 1270) | protected int itemsToExtract() {
method stacksToExtract (line 1274) | protected int stacksToExtract() {
method importCleanup (line 1278) | public void importCleanup() {
method startHUDWatching (line 1295) | @Override
method stopHUDWatching (line 1300) | @Override
method startWatching (line 1305) | @Override
method stopWatching (line 1310) | @Override
method getHUDRenderer (line 1315) | @Override
method updateSatellitesOnClient (line 1321) | private void updateSatellitesOnClient() {
method setSatelliteUUID (line 1325) | public void setSatelliteUUID(@Nullable UUID pipeID) {
method setAdvancedSatelliteUUID (line 1335) | public void setAdvancedSatelliteUUID(int i, @Nullable UUID pipeID) {
method setFluidSatelliteUUID (line 1345) | public void setFluidSatelliteUUID(@Nullable UUID pipeID) {
method setAdvancedFluidSatelliteUUID (line 1355) | public void setAdvancedFluidSatelliteUUID(int i, @Nullable UUID pipeID) {
method guiOpenedByPlayer (line 1365) | @Override
method guiClosedByPlayer (line 1370) | @Override
class CraftingChassisInformation (line 1375) | public static class CraftingChassisInformation extends ChassiTargetInf...
method CraftingChassisInformation (line 1380) | public CraftingChassisInformation(int craftingSlot, int moduleSlot) {
class UpgradeSatelliteFromIDs (line 1387) | private static class UpgradeSatelliteFromIDs {
class ClientSideSatelliteNames (line 1395) | public static class ClientSideSatelliteNames {
method hasByproductUpgrade (line 1407) | public boolean hasByproductUpgrade() {
method hasFuzzyUpgrade (line 1411) | public boolean hasFuzzyUpgrade() { return getUpgradeManager().isFuzzyU...
FILE: common/logisticspipes/modules/ModuleCreativeTabBasedItemSink.java
class ModuleCreativeTabBasedItemSink (line 39) | public class ModuleCreativeTabBasedItemSink extends LogisticsModule
method getName (line 50) | public static String getName() {
method getLPName (line 54) | @Nonnull
method getProperties (line 60) | @Nonnull
method registerPosition (line 66) | @Override
method sinksItem (line 73) | @Override
method readFromNBT (line 90) | @Override
method tick (line 103) | @Override
method getClientInformation (line 106) | @Override
method startHUDWatching (line 115) | @Override
method stopHUDWatching (line 120) | @Override
method startWatching (line 125) | @Override
method stopWatching (line 134) | @Override
method listChanged (line 139) | @Override
method getHUDRenderer (line 157) | @Override
method hasGenericInterests (line 162) | @Override
method interestedInAttachedInventory (line 167) | @Override
method interestedInUndamagedID (line 172) | @Override
method receivePassive (line 177) | @Override
method stringListProperty (line 182) | @Override
method getStringForItem (line 187) | @Override
method getPipeGuiProvider (line 192) | @Nonnull
method getInHandGuiProvider (line 200) | @Nonnull
FILE: common/logisticspipes/modules/ModuleEnchantmentSink.java
class ModuleEnchantmentSink (line 17) | public class ModuleEnchantmentSink extends LogisticsModule {
method getName (line 21) | public static String getName() {
method getLPName (line 25) | @Nonnull
method getProperties (line 31) | @NotNull
method registerPosition (line 37) | @Override
method sinksItem (line 49) | @Override
method tick (line 66) | @Override
method hasGenericInterests (line 69) | @Override
method interestedInAttachedInventory (line 78) | @Override
method interestedInUndamagedID (line 83) | @Override
method receivePassive (line 88) | @Override
method hasEffect (line 93) | @Override
FILE: common/logisticspipes/modules/ModuleEnchantmentSinkMK2.java
class ModuleEnchantmentSinkMK2 (line 43) | @CCType(name = "EnchantmentSink Module MK2")
method ModuleEnchantmentSinkMK2 (line 55) | public ModuleEnchantmentSinkMK2() {
method getName (line 59) | public static String getName() {
method getLPName (line 63) | @Nonnull
method getProperties (line 69) | @Nonnull
method getFilterInventory (line 75) | @Override
method registerPosition (line 82) | @Override
method sinksItem (line 89) | @Override
method tick (line 105) | @Override
method getClientInformation (line 108) | @Override
method startHUDWatching (line 118) | @Override
method stopHUDWatching (line 123) | @Override
method startWatching (line 128) | @Override
method stopWatching (line 135) | @Override
method InventoryChanged (line 140) | @Override
method getHUDRenderer (line 152) | @Override
method handleInvContent (line 157) | @Override
method hasGenericInterests (line 162) | @Override
method collectSpecificInterests (line 172) | @Override
method interestedInAttachedInventory (line 182) | @Override
method interestedInUndamagedID (line 187) | @Override
method receivePassive (line 192) | @Override
method hasEffect (line 197) | @Override
method getPipeGuiProvider (line 202) | @Nonnull
method getInHandGuiProvider (line 208) | @Nonnull
FILE: common/logisticspipes/modules/ModuleFluidSupplier.java
class ModuleFluidSupplier (line 27) | public class ModuleFluidSupplier extends LogisticsModule implements ICli...
method getLPName (line 34) | @Nonnull
method getProperties (line 40) | @Nonnull
method getFilterInventory (line 46) | @Nonnull
method registerPosition (line 51) | @Override
method sinksItem (line 63) | @Override
method tick (line 80) | @Override
method getClientInformation (line 83) | @Override
method hasGenericInterests (line 93) | @Override
method interestedInAttachedInventory (line 98) | @Override
method interestedInUndamagedID (line 103) | @Override
method receivePassive (line 108) | @Override
method getPipeGuiProvider (line 113) | @Nonnull
method getInHandGuiProvider (line 119) | @Nonnull
FILE: common/logisticspipes/modules/ModuleItemSink.java
class ModuleItemSink (line 62) | @CCType(name = "ItemSink Module")
method ModuleItemSink (line 85) | public ModuleItemSink() {
method getName (line 89) | public static String getName() {
method getLPName (line 93) | @Nonnull
method getProperties (line 99) | @Nonnull
method getFilterInventory (line 105) | @Override
method isDefaultRoute (line 112) | @CCCommand(description = "Returns true if the module is a default route")
method setDefaultRoute (line 117) | @CCCommand(description = "Sets the default route status of this module")
method registerPosition (line 127) | @Override
method getAdjacentInventoriesItems (line 136) | public Stream<ItemIdentifier> getAdjacentInventoriesItems() {
method sinksItem (line 147) | @Override
method tick (line 207) | @Override
method getClientInformation (line 210) | @Override
method startHUDWatching (line 221) | @Override
method stopHUDWatching (line 226) | @Override
method startWatching (line 231) | @Override
method stopWatching (line 240) | @Override
method InventoryChanged (line 245) | @Override
method getHUDRenderer (line 257) | @Override
method handleInvContent (line 262) | @Override
method hasGenericInterests (line 267) | @Override
method collectSpecificInterests (line 272) | @Override
method interestedInAttachedInventory (line 300) | @Override
method interestedInUndamagedID (line 306) | @Override
method receivePassive (line 311) | @Override
method setFuzzyFlags (line 316) | public void setFuzzyFlags(BitSet fuzzyFlags) {
method getPipeGuiProvider (line 320) | @Nonnull
method getInHandGuiProvider (line 327) | @Nonnull
method getSlotFuzzyFlags (line 333) | public IBitSet getSlotFuzzyFlags(int slotId) {
method readFromNBT (line 338) | @Override
FILE: common/logisticspipes/modules/ModuleModBasedItemSink.java
class ModuleModBasedItemSink (line 39) | public class ModuleModBasedItemSink extends LogisticsModule
method getName (line 50) | public static String getName() {
method getLPName (line 54) | @Nonnull
method getProperties (line 60) | @Nonnull
method registerPosition (line 66) | @Override
method sinksItem (line 73) | @Override
method readFromNBT (line 90) | @Override
method tick (line 103) | @Override
method getClientInformation (line 106) | @Override
method startHUDWatching (line 115) | @Override
method stopHUDWatching (line 120) | @Override
method startWatching (line 125) | @Override
method stopWatching (line 134) | @Override
method listChanged (line 139) | @Override
method getHUDRenderer (line 157) | @Override
method hasGenericInterests (line 162) | @Override
method interestedInAttachedInventory (line 167) | @Override
method interestedInUndamagedID (line 172) | @Override
method receivePassive (line 177) | @Override
method stringListProperty (line 182) | @Override
method getStringForItem (line 187) | @Override
method getPipeGuiProvider (line 192) | @Nonnull
method getInHandGuiProvider (line 200) | @Nonnull
FILE: common/logisticspipes/modules/ModuleOreDictItemSink.java
class ModuleOreDictItemSink (line 45) | public class ModuleOreDictItemSink extends LogisticsModule
method getName (line 60) | public static String getName() {
method getLPName (line 64) | @Nonnull
method getProperties (line 70) | @Nonnull
method registerPosition (line 76) | @Override
method sinksItem (line 88) | @Override
method getHudItemList (line 106) | public List<ItemIdentifierStack> getHudItemList() {
method buildOreItemIdMap (line 113) | private void buildOreItemIdMap() {
method readFromNBT (line 148) | @Override
method tick (line 162) | @Override
method getClientInformation (line 165) | @Override
method startHUDWatching (line 173) | @Override
method stopHUDWatching (line 178) | @Override
method startWatching (line 183) | @Override
method stopWatching (line 191) | @Override
method OreListChanged (line 196) | public void OreListChanged() {
method getHUDRenderer (line 208) | @Override
method hasGenericInterests (line 213) | @Override
method interestedInAttachedInventory (line 218) | @Override
method interestedInUndamagedID (line 223) | @Override
method receivePassive (line 228) | @Override
method getPipeGuiProvider (line 233) | @Nonnull
method getInHandGuiProvider (line 241) | @Nonnull
FILE: common/logisticspipes/modules/ModulePassiveSupplier.java
class ModulePassiveSupplier (line 43) | public class ModulePassiveSupplier extends LogisticsModule
method ModulePassiveSupplier (line 54) | public ModulePassiveSupplier() {
method getName (line 58) | public static String getName() {
method getLPName (line 62) | @Nonnull
method getProperties (line 68) | @Nonnull
method getFilterInventory (line 74) | @Override
method registerPosition (line 80) | @Override
method sinksItem (line 87) | @Override
method tick (line 120) | @Override
method getClientInformation (line 123) | @Override
method startHUDWatching (line 133) | @Override
method stopHUDWatching (line 138) | @Override
method startWatching (line 143) | @Override
method stopWatching (line 150) | @Override
method getHUDRenderer (line 155) | @Override
method handleInvContent (line 160) | @Override
method InventoryChanged (line 165) | @Override
method hasGenericInterests (line 177) | @Override
method collectSpecificInterests (line 182) | @Override
method interestedInAttachedInventory (line 187) | @Override
method interestedInUndamagedID (line 192) | @Override
method receivePassive (line 197) | @Override
method getPipeGuiProvider (line 202) | @Nonnull
method getInHandGuiProvider (line 208) | @Nonnull
FILE: common/logisticspipes/modules/ModulePolymorphicItemSink.java
class ModulePolymorphicItemSink (line 21) | public class ModulePolymorphicItemSink extends LogisticsModule {
method getName (line 25) | public static String getName() {
method getLPName (line 29) | @Nonnull
method getProperties (line 35) | @NotNull
method registerPosition (line 41) | @Override
method sinksItem (line 53) | @Override
method tick (line 79) | @Override
method hasGenericInterests (line 82) | @Override
method interestedInAttachedInventory (line 87) | @Override
method interestedInUndamagedID (line 92) | @Override
method receivePassive (line 97) | @Override
FILE: common/logisticspipes/modules/ModuleProvider.java
class ModuleProvider (line 79) | @CCType(name = "Provider Module")
method ModuleProvider (line 104) | public ModuleProvider() {}
method getName (line 106) | public static String getName() {
method getLPName (line 110) | @Nonnull
method getProperties (line 119) | @Nonnull
method getSneakyDirection (line 125) | @Override
method setSneakyDirection (line 130) | @Override
method neededEnergy (line 143) | protected int neededEnergy() {
method itemsToExtract (line 148) | protected int itemsToExtract() {
method stacksToExtract (line 152) | protected int stacksToExtract() {
method itemSendMode (line 156) | public ItemSendMode itemSendMode() {
method sinksItem (line 160) | @Override
method tick (line 166) | @Override
method filterBlocksItem (line 194) | public boolean filterBlocksItem(ItemIdentifier item) {
method onBlockRemoval (line 202) | @Override
method inventoriesWithMode (line 211) | @Nonnull
method canProvide (line 220) | @Override
method fullFill (line 247) | @Override
method getAvailableItemCount (line 258) | private int getAvailableItemCount(ItemIdentifier item) {
method getAllItems (line 264) | @Override
method sendStack (line 294) | public int sendStack(ItemIdentifierStack stack, int maxCount, int dest...
method getTotalItemCount (line 355) | public int getTotalItemCount(final ItemIdentifier item) {
method getFilterInventory (line 362) | @CCCommand(description = "Returns the FilterInventory of this Module")
method getClientInformation (line 367) | @Override
method checkUpdate (line 379) | private void checkUpdate(EntityPlayer player) {
method startHUDWatching (line 404) | @Override
method stopHUDWatching (line 409) | @Override
method startWatching (line 414) | @Override
method stopWatching (line 420) | @Override
method getHUDRenderer (line 425) | @Override
method handleInvContent (line 430) | @Override
method hasGenericInterests (line 436) | @Override
method collectSpecificInterests (line 441) | @Override
method interestedInAttachedInventory (line 450) | @Override
method interestedInUndamagedID (line 457) | @Override
method receivePassive (line 462) | @Override
method getPipeGuiProvider (line 467) | @Nonnull
method getInHandGuiProvider (line 474) | @Nonnull
method getInventoryUtilWithMode (line 480) | private IInventoryUtil getInventoryUtilWithMode(NeighborTileEntity<Til...
FILE: common/logisticspipes/modules/ModuleSatellite.java
class ModuleSatellite (line 19) | public class ModuleSatellite extends LogisticsModule {
method getLPName (line 23) | @Nonnull
method getProperties (line 29) | @NotNull
method sinksItem (line 35) | @Override
method spaceFor (line 50) | private int spaceFor(@Nonnull ItemStack stack, ItemIdentifier item, bo...
method tick (line 64) | @Override
method hasGenericInterests (line 67) | @Override
method interestedInAttachedInventory (line 72) | @Override
method interestedInUndamagedID (line 78) | @Override
method receivePassive (line 83) | @Override
FILE: common/logisticspipes/modules/ModuleTerminus.java
class ModuleTerminus (line 44) | @CCType(name = "Terminus Module")
method ModuleTerminus (line 56) | public ModuleTerminus() {
method getName (line 60) | public static String getName() {
method getLPName (line 64) | @Nonnull
method getProperties (line 68) | @Nonnull
method getFilterInventory (line 74) | @Override
method registerPosition (line 81) | @Override
method sinksItem (line 88) | @Override
method tick (line 106) | @Override
method getClientInformation (line 109) | @Override
method startHUDWatching (line 119) | @Override
method stopHUDWatching (line 124) | @Override
method getHUDRenderer (line 129) | @Override
method startWatching (line 134) | @Override
method stopWatching (line 142) | @Override
method InventoryChanged (line 147) | @Override
method handleInvContent (line 159) | @Override
method hasGenericInterests (line 164) | @Override
method collectSpecificInterests (line 169) | @Override
method interestedInAttachedInventory (line 176) | @Override
method interestedInUndamagedID (line 181) | @Override
method receivePassive (line 186) | @Override
method getPipeGuiProvider (line 191) | @Nonnull
method getInHandGuiProvider (line 197) | @Nonnull
FILE: common/logisticspipes/network/GuiHandler.java
class GuiHandler (line 46) | public class GuiHandler implements IGuiHandler {
method getServerGuiElement (line 48) | @Override
method getClientGuiElement (line 251) | @Override
FILE: common/logisticspipes/network/GuiIDs.java
class GuiIDs (line 3) | public class GuiIDs {
FILE: common/logisticspipes/network/IReadListObject.java
type IReadListObject (line 5) | public interface IReadListObject<T> {
method readObject (line 7) | T readObject(LPDataInput input);
FILE: common/logisticspipes/network/IWriteListObject.java
type IWriteListObject (line 5) | public interface IWriteListObject<T> {
method writeObject (line 7) | void writeObject(LPDataOutput output, T object);
FILE: common/logisticspipes/network/NewGuiHandler.java
class NewGuiHandler (line 32) | public class NewGuiHandler {
method NewGuiHandler (line 37) | private NewGuiHandler() { }
method getGui (line 39) | @SuppressWarnings("unchecked") // Suppressed because this cast should ...
method initialize (line 44) | public static void initialize() {
method loadGuiProviders (line 54) | private static void loadGuiProviders(Set<Class<? extends GuiProvider>>...
method openGui (line 75) | public static void openGui(GuiProvider guiProvider, EntityPlayer oPlay...
method openGui (line 107) | @SideOnly(Side.CLIENT)
FILE: common/logisticspipes/network/PacketHandler.java
class PacketHandler (line 41) | @Sharable
method getPacket (line 50) | @SuppressWarnings("unchecked") // Suppressed because this cast should ...
method initialize (line 67) | public static void initialize() {
method loadPackets (line 77) | private static void loadPackets(Set<Class<? extends ModernPacket>> cla...
method toFMLPacket (line 99) | public static FMLProxyPacket toFMLPacket(ModernPacket msg) {
method toFMLPacket (line 103) | private static FMLProxyPacket toFMLPacket(ModernPacket msg, String cha...
method fillByteBuf (line 110) | public static void fillByteBuf(ModernPacket msg, ByteBuf buffer) {
method addPacketToNBT (line 117) | public static void addPacketToNBT(ModernPacket packet, NBTTagCompound ...
method queueAndRemovePacketFromNBT (line 128) | @SideOnly(Side.CLIENT)
method onPacketData (line 145) | public static void onPacketData(final LPDataInput data, final EntityPl
Condensed preview — 1401 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,579K chars).
[
{
"path": ".editorconfig",
"chars": 1089,
"preview": "root = true\n\n[*]\nend_of_line = lf\ninsert_final_newline = true\n\n[*.gradle]\nindent_size = 4\nindent_style = space\n\n[*.yml]\n"
},
{
"path": ".gitattributes",
"chars": 75,
"preview": "*.bat text eol=crlf\n*.bdf binary\n*.jar filter=lfs diff=lfs merge=lfs -text\n"
},
{
"path": ".gitignore",
"chars": 2398,
"preview": "# IDEA project output path\n/classes\n/logs\n\n# IDEA run configurations\n.idea/runConfigurations\n\n# Created by https://www.g"
},
{
"path": ".idea/.name",
"chars": 14,
"preview": "LogisticsPipes"
},
{
"path": ".idea/codeInsightSettings.xml",
"chars": 206,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"JavaProjectCodeInsightSettings\">\n <ex"
},
{
"path": ".idea/codeStyles/Project.xml",
"chars": 4024,
"preview": "<component name=\"ProjectCodeStyleConfiguration\">\n <code_scheme name=\"Project\" version=\"173\">\n <option name=\"LINE_SEP"
},
{
"path": ".idea/codeStyles/codeStyleConfig.xml",
"chars": 151,
"preview": "<component name=\"ProjectCodeStyleConfiguration\">\n <state>\n <option name=\"PREFERRED_PROJECT_CODE_STYLE\" value=\"LP For"
},
{
"path": ".idea/copyright/RS485_Dual_MIT_MMPL.xml",
"chars": 2181,
"preview": "<component name=\"CopyrightManager\">\n <copyright>\n <option name=\"keyword\" value=\"This MIT license was reworded to onl"
},
{
"path": ".idea/copyright/profiles_settings.xml",
"chars": 203,
"preview": "<component name=\"CopyrightManager\">\n <settings>\n <module2copyright>\n <element module=\"network.rs485 package\" co"
},
{
"path": ".idea/encodings.xml",
"chars": 135,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"Encoding\" addBOMForNewFiles=\"with NO BOM"
},
{
"path": ".idea/externalAnnotations/net/minecraft/block/state/annotations.xml",
"chars": 323,
"preview": "<root>\n <item name='net.minecraft.block.state.IBlockProperties net.minecraft.util.math.RayTraceResult collisionRayTra"
},
{
"path": ".idea/externalAnnotations/net/minecraft/client/gui/inventory/annotations.xml",
"chars": 247,
"preview": "<root>\n <item name='net.minecraft.client.gui.inventory.GuiContainer void handleMouseClick(net.minecraft.inventory.Slo"
},
{
"path": ".idea/externalAnnotations/net/minecraft/item/annotations.xml",
"chars": 901,
"preview": "<root>\n <item name='net.minecraft.item.Item net.minecraft.item.ItemStack onItemUseFinish(net.minecraft.item.ItemStack"
},
{
"path": ".idea/externalAnnotations/net/minecraft/world/annotations.xml",
"chars": 190,
"preview": "<root>\n <item name='net.minecraft.world.IWorldNameable net.minecraft.util.text.ITextComponent getDisplayName()'>\n "
},
{
"path": ".idea/inspectionProfiles/Project_Default.xml",
"chars": 491,
"preview": "<component name=\"InspectionProjectProfileManager\">\n <profile version=\"1.0\">\n <option name=\"myName\" value=\"Project De"
},
{
"path": ".idea/kotlinc.xml",
"chars": 176,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"KotlinJpsPluginSettings\">\n <option na"
},
{
"path": ".idea/libraries-with-intellij-classes.xml",
"chars": 2885,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"libraries-with-intellij-classes\">\n <o"
},
{
"path": ".idea/scopes/network_rs485_package.xml",
"chars": 127,
"preview": "<component name=\"DependencyValidationManager\">\n <scope name=\"network.rs485 package\" pattern=\"network.rs485..*\" />\n</com"
},
{
"path": ".travis.yml",
"chars": 562,
"preview": "language: java\njobs:\n include:\n - stage: build\n name: \"Build and install\"\n script: ./gradlew install -xtes"
},
{
"path": "BUILDING.md",
"chars": 3672,
"preview": "# Building Logistics Pipes\n\nIf you are familiar with Minecraft Forge and Gradle or you are a Java developer\nyou should n"
},
{
"path": "LICENSE.md",
"chars": 3112,
"preview": "Minecraft Mod Public License\n============================\n\nVersion 1.0.1\n\n0. Definitions\n--------------\n\nMinecraft: Deno"
},
{
"path": "README.md",
"chars": 1526,
"preview": "# LogisticsPipes\n\n[\n maven {\n url = \"https://maven.removeco.de/\"\n "
},
{
"path": "common/logisticspipes/LPBlocks.java",
"chars": 1804,
"preview": "package logisticspipes;\n\nimport net.minecraftforge.fml.common.registry.GameRegistry;\n\nimport logisticspipes.blocks.Block"
},
{
"path": "common/logisticspipes/LPConstants.java",
"chars": 1464,
"preview": "package logisticspipes;\n\npublic class LPConstants {\n\n\tprivate LPConstants() {}\n\n\tpublic static final String LP_MOD_ID = "
},
{
"path": "common/logisticspipes/LPItems.java",
"chars": 5076,
"preview": "package logisticspipes;\n\nimport net.minecraft.item.Item;\nimport net.minecraft.util.ResourceLocation;\n\nimport net.minecra"
},
{
"path": "common/logisticspipes/LogisticsEventListener.java",
"chars": 13891,
"preview": "package logisticspipes;\n\nimport java.lang.ref.WeakReference;\nimport java.util.HashMap;\nimport java.util.LinkedList;\nimpo"
},
{
"path": "common/logisticspipes/LogisticsPipes.java",
"chars": 37396,
"preview": "/*\n * Copyright (c) Krapht, 2011\n * \"LogisticsPipes\" is distributed under the terms of the Minecraft Mod Public\n * Licen"
},
{
"path": "common/logisticspipes/api/IHUDArmor.java",
"chars": 178,
"preview": "package logisticspipes.api;\n\nimport javax.annotation.Nonnull;\n\nimport net.minecraft.item.ItemStack;\n\npublic interface IH"
},
{
"path": "common/logisticspipes/api/ILPPipe.java",
"chars": 227,
"preview": "package logisticspipes.api;\n\n/**\n * Public interface implemented by LP's internal Pipe logic\n */\npublic interface ILPPip"
},
{
"path": "common/logisticspipes/api/ILPPipeConfigTool.java",
"chars": 530,
"preview": "package logisticspipes.api;\n\nimport javax.annotation.Nonnull;\n\nimport net.minecraft.entity.player.EntityPlayer;\nimport n"
},
{
"path": "common/logisticspipes/api/ILPPipeTile.java",
"chars": 354,
"preview": "package logisticspipes.api;\n\nimport net.minecraft.util.math.BlockPos;\n\n/**\n * Public interface implemented by LP's Pipe "
},
{
"path": "common/logisticspipes/api/ILogisticsPowerProvider.java",
"chars": 362,
"preview": "package logisticspipes.api;\n\n/**\n * things which directly provide power to the logsitics network implement this.\n * list"
},
{
"path": "common/logisticspipes/api/IProgressProvider.java",
"chars": 416,
"preview": "package logisticspipes.api;\n\n/**\n * Implemented by an TileEntity this will allow LP to access the current\n * progress of"
},
{
"path": "common/logisticspipes/api/IRoutedPowerProvider.java",
"chars": 1044,
"preview": "package logisticspipes.api;\n\nimport java.util.List;\n\n/**\n * things implementing this interface are capable of providing "
},
{
"path": "common/logisticspipes/asm/ClientSideOnlyMethodContent.java",
"chars": 306,
"preview": "package logisticspipes.asm;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java"
},
{
"path": "common/logisticspipes/asm/IgnoreDisabledProxy.java",
"chars": 298,
"preview": "package logisticspipes.asm;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java"
},
{
"path": "common/logisticspipes/asm/LogisticsASMHookClass.java",
"chars": 826,
"preview": "package logisticspipes.asm;\n\nimport net.minecraft.tileentity.TileEntity;\n\nimport lombok.SneakyThrows;\n\nimport logisticsp"
},
{
"path": "common/logisticspipes/asm/LogisticsClassTransformer.java",
"chars": 30118,
"preview": "package logisticspipes.asm;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.lang.reflect.Field;\nimp"
},
{
"path": "common/logisticspipes/asm/LogisticsPipesClassInjector.java",
"chars": 3359,
"preview": "package logisticspipes.asm;\n\nimport java.lang.reflect.Field;\nimport java.util.Map;\nimport java.util.Set;\nimport java.uti"
},
{
"path": "common/logisticspipes/asm/LogisticsPipesCoreLoader.java",
"chars": 1315,
"preview": "package logisticspipes.asm;\n\nimport java.util.Map;\n\nimport net.minecraft.launchwrapper.Launch;\n\nimport net.minecraftforg"
},
{
"path": "common/logisticspipes/asm/ModAccessTransformerRemapper.java",
"chars": 6194,
"preview": "package logisticspipes.asm;\n\nimport java.lang.reflect.Field;\nimport java.util.Map;\nimport java.util.Objects;\nimport java"
},
{
"path": "common/logisticspipes/asm/ModDependentField.java",
"chars": 312,
"preview": "package logisticspipes.asm;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java"
},
{
"path": "common/logisticspipes/asm/ModDependentInterface.java",
"chars": 345,
"preview": "package logisticspipes.asm;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java"
},
{
"path": "common/logisticspipes/asm/ModDependentMethod.java",
"chars": 314,
"preview": "package logisticspipes.asm;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java"
},
{
"path": "common/logisticspipes/asm/ModDependentMethodName.java",
"chars": 358,
"preview": "package logisticspipes.asm;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java"
},
{
"path": "common/logisticspipes/asm/ModVersionedClass.java",
"chars": 520,
"preview": "package logisticspipes.asm;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java"
},
{
"path": "common/logisticspipes/asm/ParamProfiler.java",
"chars": 7718,
"preview": "package logisticspipes.asm;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.ut"
},
{
"path": "common/logisticspipes/asm/addinfo/IAddInfo.java",
"chars": 67,
"preview": "package logisticspipes.asm.addinfo;\n\npublic interface IAddInfo {\n}\n"
},
{
"path": "common/logisticspipes/asm/addinfo/IAddInfoProvider.java",
"chars": 190,
"preview": "package logisticspipes.asm.addinfo;\n\npublic interface IAddInfoProvider {\n\n\t<T extends IAddInfo> T getLogisticsPipesAddIn"
},
{
"path": "common/logisticspipes/asm/mcmp/ClassBlockMultipartContainerHandler.java",
"chars": 2851,
"preview": "package logisticspipes.asm.mcmp;\n\nimport net.minecraft.launchwrapper.Launch;\n\nimport net.minecraftforge.fml.common.FMLCo"
},
{
"path": "common/logisticspipes/asm/mcmp/MCMPHooks.java",
"chars": 493,
"preview": "package logisticspipes.asm.mcmp;\n\nimport net.minecraft.tileentity.TileEntity;\nimport net.minecraft.util.math.BlockPos;\ni"
},
{
"path": "common/logisticspipes/asm/td/ClassRenderDuctItemsHandler.java",
"chars": 2511,
"preview": "package logisticspipes.asm.td;\n\nimport net.minecraftforge.fml.common.FMLCommonHandler;\n\nimport org.objectweb.asm.ClassRe"
},
{
"path": "common/logisticspipes/asm/td/ClassTravelingItemHandler.java",
"chars": 6402,
"preview": "package logisticspipes.asm.td;\n\nimport net.minecraftforge.fml.common.FMLCommonHandler;\n\nimport org.objectweb.asm.ClassRe"
},
{
"path": "common/logisticspipes/asm/td/ILPTravelingItemInfo.java",
"chars": 157,
"preview": "package logisticspipes.asm.td;\n\npublic interface ILPTravelingItemInfo {\n\n\tObject getLPRoutingInfoAddition();\n\n\tvoid setL"
},
{
"path": "common/logisticspipes/asm/td/ThermalDynamicsHooks.java",
"chars": 1982,
"preview": "package logisticspipes.asm.td;\n\nimport net.minecraft.item.ItemStack;\nimport net.minecraft.nbt.NBTTagCompound;\n\nimport co"
},
{
"path": "common/logisticspipes/asm/te/ILPTEInformation.java",
"chars": 173,
"preview": "package logisticspipes.asm.te;\n\npublic interface ILPTEInformation {\n\n\tLPTileEntityObject getLPTileEntityObject();\n\n\tvoid"
},
{
"path": "common/logisticspipes/asm/te/ITileEntityChangeListener.java",
"chars": 282,
"preview": "package logisticspipes.asm.te;\n\nimport net.minecraft.util.EnumFacing;\n\nimport network.rs485.logisticspipes.world.DoubleC"
},
{
"path": "common/logisticspipes/asm/te/LPTileEntityObject.java",
"chars": 603,
"preview": "package logisticspipes.asm.te;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport logisticspipes.utils.CacheHol"
},
{
"path": "common/logisticspipes/asm/util/ASMHelper.java",
"chars": 8403,
"preview": "package logisticspipes.asm.util;\n\nimport java.io.BufferedReader;\nimport java.io.IOException;\nimport java.io.PrintWriter;"
},
{
"path": "common/logisticspipes/asm/wrapper/AbstractSubWrapper.java",
"chars": 1151,
"preview": "package logisticspipes.asm.wrapper;\n\nimport java.util.List;\n\npublic abstract class AbstractSubWrapper extends AbstractWr"
},
{
"path": "common/logisticspipes/asm/wrapper/AbstractWrapper.java",
"chars": 1570,
"preview": "package logisticspipes.asm.wrapper;\n\nimport java.util.List;\n\nimport lombok.AccessLevel;\nimport lombok.Getter;\nimport lom"
},
{
"path": "common/logisticspipes/asm/wrapper/CraftingRecipeProviderWrapper.java",
"chars": 1159,
"preview": "package logisticspipes.asm.wrapper;\n\nimport net.minecraft.tileentity.TileEntity;\n\nimport logisticspipes.proxy.interfaces"
},
{
"path": "common/logisticspipes/asm/wrapper/GenericLPPipeConfigToolWrapper.java",
"chars": 1940,
"preview": "package logisticspipes.asm.wrapper;\n\nimport javax.annotation.Nonnull;\n\nimport net.minecraft.entity.player.EntityPlayer;\n"
},
{
"path": "common/logisticspipes/asm/wrapper/GenericProgressProviderWrapper.java",
"chars": 1038,
"preview": "package logisticspipes.asm.wrapper;\n\nimport net.minecraft.tileentity.TileEntity;\n\nimport logisticspipes.proxy.interfaces"
},
{
"path": "common/logisticspipes/asm/wrapper/LogisticsWrapperHandler.java",
"chars": 26540,
"preview": "package logisticspipes.asm.wrapper;\n\nimport java.io.File;\nimport java.io.FileOutputStream;\nimport java.io.IOException;\ni"
},
{
"path": "common/logisticspipes/asm/wrapper/WrapperState.java",
"chars": 100,
"preview": "package logisticspipes.asm.wrapper;\n\npublic enum WrapperState {\n\tEnabled,\n\tModMissing,\n\tException\n}\n"
},
{
"path": "common/logisticspipes/blocks/BlockDummy.java",
"chars": 1571,
"preview": "package logisticspipes.blocks;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport javax.annotation.Nonnull;\n\nimport"
},
{
"path": "common/logisticspipes/blocks/LogisticsProgramCompilerTileEntity.java",
"chars": 8041,
"preview": "package logisticspipes.blocks;\n\nimport java.util.HashSet;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\nimport j"
},
{
"path": "common/logisticspipes/blocks/LogisticsSecurityTileEntity.java",
"chars": 12070,
"preview": "package logisticspipes.blocks;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.HashMap;\nimpo"
},
{
"path": "common/logisticspipes/blocks/LogisticsSolidBlock.java",
"chars": 6941,
"preview": "package logisticspipes.blocks;\n\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.util.function.Supplier;\nimpor"
},
{
"path": "common/logisticspipes/blocks/LogisticsSolidTileEntity.java",
"chars": 6811,
"preview": "package logisticspipes.blocks;\n\nimport javax.annotation.Nonnull;\n\nimport net.minecraft.block.state.IBlockState;\nimport n"
},
{
"path": "common/logisticspipes/blocks/crafting/AutoCraftingInventory.java",
"chars": 739,
"preview": "package logisticspipes.blocks.crafting;\n\nimport javax.annotation.Nonnull;\n\nimport net.minecraft.entity.player.EntityPlay"
},
{
"path": "common/logisticspipes/blocks/crafting/LogisticsCraftingTableTileEntity.java",
"chars": 16766,
"preview": "package logisticspipes.blocks.crafting;\n\nimport java.util.ArrayList;\nimport java.util.BitSet;\nimport java.util.List;\nimp"
},
{
"path": "common/logisticspipes/blocks/powertile/LogisticsIC2PowerProviderTileEntity.java",
"chars": 3811,
"preview": "package logisticspipes.blocks.powertile;\n\nimport net.minecraft.nbt.NBTTagCompound;\nimport net.minecraft.util.EnumFacing;"
},
{
"path": "common/logisticspipes/blocks/powertile/LogisticsPowerJunctionTileEntity.java",
"chars": 12600,
"preview": "package logisticspipes.blocks.powertile;\n\nimport java.util.List;\nimport javax.annotation.Nonnull;\nimport javax.annotatio"
},
{
"path": "common/logisticspipes/blocks/powertile/LogisticsPowerProviderTileEntity.java",
"chars": 12321,
"preview": "package logisticspipes.blocks.powertile;\n\nimport java.util.BitSet;\nimport java.util.HashMap;\nimport java.util.LinkedList"
},
{
"path": "common/logisticspipes/blocks/powertile/LogisticsRFPowerProviderTileEntity.java",
"chars": 3738,
"preview": "package logisticspipes.blocks.powertile;\n\nimport javax.annotation.Nonnull;\nimport javax.annotation.Nullable;\n\nimport net"
},
{
"path": "common/logisticspipes/blocks/stats/LogisticsStatisticsTileEntity.java",
"chars": 2641,
"preview": "package logisticspipes.blocks.stats;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport net.minecraft.nbt.NBTTa"
},
{
"path": "common/logisticspipes/blocks/stats/TrackingTask.java",
"chars": 2282,
"preview": "package logisticspipes.blocks.stats;\n\nimport net.minecraft.nbt.NBTTagCompound;\n\nimport logisticspipes.pipes.basic.CoreRo"
},
{
"path": "common/logisticspipes/commands/LogisticsPipesCommand.java",
"chars": 2357,
"preview": "package logisticspipes.commands;\n\nimport java.util.Arrays;\nimport java.util.Locale;\nimport javax.annotation.Nonnull;\n\nim"
},
{
"path": "common/logisticspipes/commands/MainCommandHandler.java",
"chars": 1941,
"preview": "package logisticspipes.commands;\n\nimport net.minecraft.command.ICommandSender;\n\nimport logisticspipes.LogisticsPipes;\nim"
},
{
"path": "common/logisticspipes/commands/abstracts/ICommandHandler.java",
"chars": 292,
"preview": "package logisticspipes.commands.abstracts;\n\nimport net.minecraft.command.ICommandSender;\n\npublic interface ICommandHandl"
},
{
"path": "common/logisticspipes/commands/abstracts/SubCommandHandler.java",
"chars": 2989,
"preview": "package logisticspipes.commands.abstracts;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n"
},
{
"path": "common/logisticspipes/commands/chathelper/LPChatListener.java",
"chars": 7112,
"preview": "package logisticspipes.commands.chathelper;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List"
},
{
"path": "common/logisticspipes/commands/chathelper/MorePageDisplay.java",
"chars": 10242,
"preview": "package logisticspipes.commands.chathelper;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\nimport net.minecraft."
},
{
"path": "common/logisticspipes/commands/commands/BypassCommand.java",
"chars": 1236,
"preview": "package logisticspipes.commands.commands;\n\nimport net.minecraft.command.ICommandSender;\nimport net.minecraft.entity.play"
},
{
"path": "common/logisticspipes/commands/commands/ChangelogCommand.java",
"chars": 1565,
"preview": "package logisticspipes.commands.commands;\n\nimport net.minecraft.command.ICommandSender;\nimport net.minecraft.util.text.T"
},
{
"path": "common/logisticspipes/commands/commands/ClearCommand.java",
"chars": 1138,
"preview": "package logisticspipes.commands.commands;\n\nimport net.minecraft.command.ICommandSender;\nimport net.minecraft.util.text.T"
},
{
"path": "common/logisticspipes/commands/commands/DebugCommand.java",
"chars": 1296,
"preview": "package logisticspipes.commands.commands;\n\nimport java.util.Arrays;\n\nimport net.minecraft.command.ICommandSender;\n\nimpor"
},
{
"path": "common/logisticspipes/commands/commands/DummyCommand.java",
"chars": 569,
"preview": "package logisticspipes.commands.commands;\n\nimport net.minecraft.command.ICommandSender;\n\nimport logisticspipes.commands."
},
{
"path": "common/logisticspipes/commands/commands/DumpCommand.java",
"chars": 788,
"preview": "package logisticspipes.commands.commands;\n\nimport net.minecraft.command.ICommandSender;\nimport net.minecraft.util.text.T"
},
{
"path": "common/logisticspipes/commands/commands/NBTDebugCommand.java",
"chars": 1174,
"preview": "package logisticspipes.commands.commands;\n\nimport net.minecraft.command.ICommandSender;\nimport net.minecraft.entity.play"
},
{
"path": "common/logisticspipes/commands/commands/NameLookupCommand.java",
"chars": 1186,
"preview": "package logisticspipes.commands.commands;\n\nimport net.minecraft.command.ICommandSender;\nimport net.minecraft.item.Item;\n"
},
{
"path": "common/logisticspipes/commands/commands/RoutingThreadCommand.java",
"chars": 959,
"preview": "package logisticspipes.commands.commands;\n\nimport net.minecraft.command.ICommandSender;\nimport net.minecraft.util.text.T"
},
{
"path": "common/logisticspipes/commands/commands/TestCommand.java",
"chars": 1980,
"preview": "package logisticspipes.commands.commands;\n\nimport java.lang.reflect.Method;\n\nimport net.minecraft.command.ICommandSender"
},
{
"path": "common/logisticspipes/commands/commands/TransferNamesCommand.java",
"chars": 1258,
"preview": "package logisticspipes.commands.commands;\n\nimport net.minecraft.command.ICommandSender;\nimport net.minecraft.entity.play"
},
{
"path": "common/logisticspipes/commands/commands/VersionCommand.java",
"chars": 1199,
"preview": "package logisticspipes.commands.commands;\n\nimport net.minecraft.command.ICommandSender;\nimport net.minecraft.util.text.T"
},
{
"path": "common/logisticspipes/commands/commands/WrapperCommand.java",
"chars": 846,
"preview": "package logisticspipes.commands.commands;\n\nimport net.minecraft.command.ICommandSender;\n\nimport logisticspipes.commands."
},
{
"path": "common/logisticspipes/commands/commands/debug/DebugGuiController.java",
"chars": 5808,
"preview": "package logisticspipes.commands.commands.debug;\n\nimport java.lang.reflect.Array;\nimport java.util.HashMap;\nimport java.u"
},
{
"path": "common/logisticspipes/commands/commands/debug/HandCommand.java",
"chars": 1042,
"preview": "package logisticspipes.commands.commands.debug;\n\nimport net.minecraft.command.ICommandSender;\nimport net.minecraft.entit"
},
{
"path": "common/logisticspipes/commands/commands/debug/MeCommand.java",
"chars": 859,
"preview": "package logisticspipes.commands.commands.debug;\n\nimport net.minecraft.command.ICommandSender;\nimport net.minecraft.entit"
},
{
"path": "common/logisticspipes/commands/commands/debug/PipeCommand.java",
"chars": 2074,
"preview": "package logisticspipes.commands.commands.debug;\n\nimport net.minecraft.command.ICommandSender;\nimport net.minecraft.entit"
},
{
"path": "common/logisticspipes/commands/commands/debug/RoutingTableCommand.java",
"chars": 1116,
"preview": "package logisticspipes.commands.commands.debug;\n\nimport net.minecraft.command.ICommandSender;\nimport net.minecraft.entit"
},
{
"path": "common/logisticspipes/commands/commands/debug/TargetCommand.java",
"chars": 1088,
"preview": "package logisticspipes.commands.commands.debug;\n\nimport net.minecraft.command.ICommandSender;\nimport net.minecraft.entit"
},
{
"path": "common/logisticspipes/commands/commands/wrapper/EnableCommand.java",
"chars": 1995,
"preview": "package logisticspipes.commands.commands.wrapper;\n\nimport java.util.ArrayList;\nimport java.util.Iterator;\nimport java.ut"
},
{
"path": "common/logisticspipes/commands/commands/wrapper/ListCommand.java",
"chars": 1845,
"preview": "package logisticspipes.commands.commands.wrapper;\n\nimport net.minecraft.command.ICommandSender;\n\nimport logisticspipes.a"
},
{
"path": "common/logisticspipes/commands/commands/wrapper/ShowCommand.java",
"chars": 2434,
"preview": "package logisticspipes.commands.commands.wrapper;\n\nimport java.util.ArrayList;\nimport java.util.Iterator;\nimport java.ut"
},
{
"path": "common/logisticspipes/commands/exception/CommandNotFoundException.java",
"chars": 183,
"preview": "package logisticspipes.commands.exception;\n\npublic class CommandNotFoundException extends LPCommandException {\n\n\tprivate"
},
{
"path": "common/logisticspipes/commands/exception/DuplicatedCommandException.java",
"chars": 185,
"preview": "package logisticspipes.commands.exception;\n\npublic class DuplicatedCommandException extends LPCommandException {\n\n\tpriva"
},
{
"path": "common/logisticspipes/commands/exception/LPCommandException.java",
"chars": 175,
"preview": "package logisticspipes.commands.exception;\n\npublic class LPCommandException extends RuntimeException {\n\n\tprivate static "
},
{
"path": "common/logisticspipes/commands/exception/MissingArgumentException.java",
"chars": 184,
"preview": "package logisticspipes.commands.exception;\n\npublic class MissingArgumentException extends LPCommandException {\n\n\tprivate"
},
{
"path": "common/logisticspipes/commands/exception/PermissionDeniedException.java",
"chars": 166,
"preview": "package logisticspipes.commands.exception;\n\npublic class PermissionDeniedException extends LPCommandException {\n\n\tprivat"
},
{
"path": "common/logisticspipes/config/Configs.java",
"chars": 12263,
"preview": "package logisticspipes.config;\n\nimport java.io.File;\nimport java.util.Arrays;\n\nimport net.minecraftforge.common.config.C"
},
{
"path": "common/logisticspipes/datafixer/DataFixerSolidBlockItems.java",
"chars": 932,
"preview": "package logisticspipes.datafixer;\n\nimport javax.annotation.Nonnull;\n\nimport net.minecraft.nbt.NBTTagCompound;\nimport net"
},
{
"path": "common/logisticspipes/datafixer/DataFixerTE.java",
"chars": 1953,
"preview": "package logisticspipes.datafixer;\n\nimport java.util.Map;\nimport javax.annotation.Nonnull;\n\nimport net.minecraft.nbt.NBTT"
},
{
"path": "common/logisticspipes/datafixer/LPDataFixer.java",
"chars": 707,
"preview": "package logisticspipes.datafixer;\n\nimport net.minecraftforge.common.MinecraftForge;\nimport net.minecraftforge.common.uti"
},
{
"path": "common/logisticspipes/datafixer/MissingMappingHandler.java",
"chars": 8017,
"preview": "package logisticspipes.datafixer;\n\nimport java.util.Arrays;\nimport java.util.List;\nimport java.util.Map;\n\nimport net.min"
},
{
"path": "common/logisticspipes/entity/FakeNetServerHandler.java",
"chars": 7097,
"preview": "package logisticspipes.entity;\n\nimport java.net.SocketAddress;\nimport java.util.Set;\nimport javax.annotation.Nonnull;\nim"
},
{
"path": "common/logisticspipes/entity/FakePlayerLP.java",
"chars": 1393,
"preview": "package logisticspipes.entity;\n\nimport java.util.List;\nimport java.util.UUID;\nimport javax.annotation.Nonnull;\n\nimport n"
},
{
"path": "common/logisticspipes/gui/GuiCardManager.java",
"chars": 2379,
"preview": "package logisticspipes.gui;\n\nimport net.minecraft.entity.player.EntityPlayer;\n\nimport logisticspipes.LPItems;\nimport log"
},
{
"path": "common/logisticspipes/gui/GuiChassisPipe.java",
"chars": 7228,
"preview": "/*\n * Copyright (c) Krapht, 2011\n * \"LogisticsPipes\" is distributed under the terms of the Minecraft Mod Public\n * Licen"
},
{
"path": "common/logisticspipes/gui/GuiCraftingPipe.java",
"chars": 25783,
"preview": "/*\n * Copyright (c) Krapht, 2011\n * \"LogisticsPipes\" is distributed under the terms of the Minecraft Mod Public\n * Licen"
},
{
"path": "common/logisticspipes/gui/GuiFirewall.java",
"chars": 3705,
"preview": "package logisticspipes.gui;\n\nimport net.minecraft.client.gui.GuiButton;\nimport net.minecraft.entity.player.EntityPlayer;"
},
{
"path": "common/logisticspipes/gui/GuiFluidBasic.java",
"chars": 1529,
"preview": "package logisticspipes.gui;\n\nimport net.minecraft.entity.player.EntityPlayer;\nimport net.minecraft.inventory.IInventory;"
},
{
"path": "common/logisticspipes/gui/GuiFluidSupplierMk2Pipe.java",
"chars": 6036,
"preview": "/**\n * \"LogisticsPipes\" is distributed under the terms of the Minecraft Mod Public\n * License 1.0, or MMPL. Please check"
},
{
"path": "common/logisticspipes/gui/GuiFluidSupplierPipe.java",
"chars": 3458,
"preview": "/**\n * \"LogisticsPipes\" is distributed under the terms of the Minecraft Mod Public\n * License 1.0, or MMPL. Please check"
},
{
"path": "common/logisticspipes/gui/GuiFluidTerminus.java",
"chars": 2685,
"preview": "package logisticspipes.gui;\n\nimport net.minecraft.entity.player.EntityPlayer;\nimport net.minecraft.util.math.BlockPos;\n\n"
},
{
"path": "common/logisticspipes/gui/GuiFreqCardContent.java",
"chars": 1166,
"preview": "package logisticspipes.gui;\n\nimport net.minecraft.entity.player.EntityPlayer;\nimport net.minecraft.inventory.IInventory;"
},
{
"path": "common/logisticspipes/gui/GuiInvSysConnector.java",
"chars": 8232,
"preview": "package logisticspipes.gui;\n\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport"
},
{
"path": "common/logisticspipes/gui/GuiLogisticsCraftingTable.java",
"chars": 4266,
"preview": "package logisticspipes.gui;\n\nimport java.util.Arrays;\n\nimport net.minecraft.client.gui.Gui;\nimport net.minecraft.client."
},
{
"path": "common/logisticspipes/gui/GuiLogisticsSettings.java",
"chars": 4883,
"preview": "package logisticspipes.gui;\n\nimport net.minecraft.client.gui.GuiButton;\nimport net.minecraft.client.renderer.OpenGlHelpe"
},
{
"path": "common/logisticspipes/gui/GuiPipeController.java",
"chars": 15636,
"preview": "package logisticspipes.gui;\n\nimport java.util.ArrayList;\nimport java.util.LinkedList;\nimport java.util.List;\nimport java"
},
{
"path": "common/logisticspipes/gui/GuiPowerJunction.java",
"chars": 3222,
"preview": "package logisticspipes.gui;\n\nimport java.io.IOException;\n\nimport net.minecraft.client.gui.GuiButton;\nimport net.minecraf"
},
{
"path": "common/logisticspipes/gui/GuiPowerProvider.java",
"chars": 2121,
"preview": "package logisticspipes.gui;\n\nimport net.minecraft.entity.player.EntityPlayer;\nimport net.minecraft.util.ResourceLocation"
},
{
"path": "common/logisticspipes/gui/GuiProgramCompiler.java",
"chars": 13552,
"preview": "package logisticspipes.gui;\n\nimport java.io.IOException;\nimport java.util.Comparator;\nimport java.util.List;\nimport java"
},
{
"path": "common/logisticspipes/gui/GuiSatellitePipe.java",
"chars": 3678,
"preview": "/**\n * Copyright (c) Krapht, 2011\n * \"LogisticsPipes\" is distributed under the terms of the Minecraft Mod Public\n * Lice"
},
{
"path": "common/logisticspipes/gui/GuiSecurityStation.java",
"chars": 10123,
"preview": "package logisticspipes.gui;\n\nimport java.io.IOException;\nimport java.util.LinkedList;\nimport java.util.List;\n\nimport net"
},
{
"path": "common/logisticspipes/gui/GuiStatistics.java",
"chars": 18446,
"preview": "package logisticspipes.gui;\n\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport jav"
},
{
"path": "common/logisticspipes/gui/GuiSupplierPipe.java",
"chars": 7502,
"preview": "/*\n * Copyright (c) Krapht, 2011\n * \"LogisticsPipes\" is distributed under the terms of the Minecraft Mod Public\n * Licen"
},
{
"path": "common/logisticspipes/gui/ItemAmountSignCreationGui.java",
"chars": 1143,
"preview": "package logisticspipes.gui;\n\nimport net.minecraft.entity.player.EntityPlayer;\nimport net.minecraft.util.EnumFacing;\n\nimp"
},
{
"path": "common/logisticspipes/gui/hud/BasicHUDGui.java",
"chars": 1569,
"preview": "package logisticspipes.gui.hud;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport net.minecraft.client.Minecra"
},
{
"path": "common/logisticspipes/gui/hud/GuiHUDSettings.java",
"chars": 3320,
"preview": "package logisticspipes.gui.hud;\n\nimport java.io.IOException;\n\nimport net.minecraft.client.gui.GuiButton;\nimport net.mine"
},
{
"path": "common/logisticspipes/gui/hud/HUDCrafting.java",
"chars": 2824,
"preview": "package logisticspipes.gui.hud;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport net.minecraft.client.Minecra"
},
{
"path": "common/logisticspipes/gui/hud/HUDInvSysConnector.java",
"chars": 1893,
"preview": "package logisticspipes.gui.hud;\n\nimport net.minecraft.client.Minecraft;\n\nimport org.lwjgl.opengl.GL11;\n\nimport logistics"
},
{
"path": "common/logisticspipes/gui/hud/HUDPowerLevel.java",
"chars": 3223,
"preview": "package logisticspipes.gui.hud;\n\nimport net.minecraft.client.Minecraft;\nimport net.minecraft.client.renderer.BufferBuild"
},
{
"path": "common/logisticspipes/gui/hud/HUDProvider.java",
"chars": 4044,
"preview": "package logisticspipes.gui.hud;\n\nimport net.minecraft.client.Minecraft;\n\nimport org.lwjgl.opengl.GL11;\n\nimport logistics"
},
{
"path": "common/logisticspipes/gui/hud/HUDSatellite.java",
"chars": 3947,
"preview": "package logisticspipes.gui.hud;\n\nimport javax.annotation.Nonnull;\n\nimport net.minecraft.client.Minecraft;\n\nimport org.lw"
},
{
"path": "common/logisticspipes/gui/hud/HudChassisPipe.java",
"chars": 8967,
"preview": "package logisticspipes.gui.hud;\n\nimport net.minecraft.client.Minecraft;\n\nimport net.minecraftforge.fml.client.FMLClientH"
},
{
"path": "common/logisticspipes/gui/hud/modules/HUDAdvancedExtractor.java",
"chars": 4046,
"preview": "package logisticspipes.gui.hud.modules;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport net.minecraft.client"
},
{
"path": "common/logisticspipes/gui/hud/modules/HUDItemSink.java",
"chars": 1359,
"preview": "package logisticspipes.gui.hud.modules;\n\nimport java.util.List;\n\nimport net.minecraft.client.Minecraft;\n\nimport net.mine"
},
{
"path": "common/logisticspipes/gui/hud/modules/HUDOreDictItemSink.java",
"chars": 1096,
"preview": "package logisticspipes.gui.hud.modules;\n\nimport java.util.List;\n\nimport net.minecraft.client.Minecraft;\n\nimport net.mine"
},
{
"path": "common/logisticspipes/gui/hud/modules/HUDProviderModule.java",
"chars": 1961,
"preview": "package logisticspipes.gui.hud.modules;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport net.minecraft.client"
},
{
"path": "common/logisticspipes/gui/hud/modules/HUDSimpleFilterModule.java",
"chars": 1037,
"preview": "package logisticspipes.gui.hud.modules;\n\nimport java.util.List;\n\nimport org.lwjgl.opengl.GL11;\n\nimport logisticspipes.in"
},
{
"path": "common/logisticspipes/gui/hud/modules/HUDStringBasedItemSink.java",
"chars": 1830,
"preview": "package logisticspipes.gui.hud.modules;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport net.minecraft.client"
},
{
"path": "common/logisticspipes/gui/modules/GuiAdvancedExtractor.java",
"chars": 3559,
"preview": "/*\n * Copyright (c) Krapht, 2011\n * \"LogisticsPipes\" is distributed under the terms of the Minecraft Mod Public\n * Licen"
},
{
"path": "common/logisticspipes/gui/modules/GuiFluidSupplier.java",
"chars": 1719,
"preview": "/*\n * Copyright (c) Krapht, 2011\n * \"LogisticsPipes\" is distributed under the terms of the Minecraft Mod Public\n * Licen"
},
{
"path": "common/logisticspipes/gui/modules/GuiOreDictItemSink.java",
"chars": 6761,
"preview": "package logisticspipes.gui.modules;\n\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimpo"
},
{
"path": "common/logisticspipes/gui/modules/GuiSimpleFilter.java",
"chars": 1871,
"preview": "/*\n * Copyright (c) Krapht, 2011\n * \"LogisticsPipes\" is distributed under the terms of the Minecraft Mod Public\n * Licen"
},
{
"path": "common/logisticspipes/gui/modules/GuiSneakyConfigurator.java",
"chars": 3699,
"preview": "/*\n * Copyright (c) Krapht, 2012\n * \"LogisticsPipes\" is distributed under the terms of the Minecraft Mod Public\n * Licen"
},
{
"path": "common/logisticspipes/gui/modules/GuiStringBasedItemSink.java",
"chars": 6357,
"preview": "package logisticspipes.gui.modules;\n\nimport java.io.IOException;\nimport java.util.Collections;\nimport java.util.List;\n\ni"
},
{
"path": "common/logisticspipes/gui/modules/ModuleBaseGui.java",
"chars": 1112,
"preview": "package logisticspipes.gui.modules;\n\nimport java.io.IOException;\n\nimport net.minecraft.inventory.Container;\n\nimport lomb"
},
{
"path": "common/logisticspipes/gui/orderer/FluidGuiOrderer.java",
"chars": 2190,
"preview": "package logisticspipes.gui.orderer;\n\nimport java.io.IOException;\n\nimport net.minecraft.client.gui.GuiButton;\nimport net."
},
{
"path": "common/logisticspipes/gui/orderer/GuiOrderer.java",
"chars": 9948,
"preview": "/**\n * Copyright (c) Krapht, 2011\n * \"LogisticsPipes\" is distributed under the terms of the Minecraft Mod Public\n * Lice"
},
{
"path": "common/logisticspipes/gui/orderer/GuiRequestTable.java",
"chars": 26622,
"preview": "package logisticspipes.gui.orderer;\n\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.BitSet;\nim"
},
{
"path": "common/logisticspipes/gui/orderer/NormalGuiOrderer.java",
"chars": 2227,
"preview": "package logisticspipes.gui.orderer;\n\nimport java.io.IOException;\n\nimport net.minecraft.client.gui.GuiButton;\nimport net."
},
{
"path": "common/logisticspipes/gui/orderer/NormalMk2GuiOrderer.java",
"chars": 3529,
"preview": "package logisticspipes.gui.orderer;\n\nimport java.io.IOException;\nimport javax.annotation.Nonnull;\n\nimport net.minecraft."
},
{
"path": "common/logisticspipes/gui/popup/ActionChoicePopup.java",
"chars": 2653,
"preview": "package logisticspipes.gui.popup;\n\nimport net.minecraft.client.Minecraft;\nimport net.minecraft.client.gui.GuiButton;\n\nim"
},
{
"path": "common/logisticspipes/gui/popup/DisconnectionConfigurationPopup.java",
"chars": 3215,
"preview": "package logisticspipes.gui.popup;\n\nimport java.awt.Rectangle;\nimport java.io.IOException;\n\nimport net.minecraft.client.M"
},
{
"path": "common/logisticspipes/gui/popup/GuiAddChannelPopup.java",
"chars": 5050,
"preview": "package logisticspipes.gui.popup;\n\nimport java.io.IOException;\nimport java.util.UUID;\n\nimport net.minecraft.client.Minec"
},
{
"path": "common/logisticspipes/gui/popup/GuiAddMacro.java",
"chars": 18076,
"preview": "package logisticspipes.gui.popup;\n\nimport java.io.IOException;\nimport java.util.LinkedList;\nimport java.util.List;\nimpor"
},
{
"path": "common/logisticspipes/gui/popup/GuiAddTracking.java",
"chars": 6562,
"preview": "package logisticspipes.gui.popup;\n\nimport java.io.IOException;\nimport java.util.List;\nimport java.util.Locale;\nimport ja"
},
{
"path": "common/logisticspipes/gui/popup/GuiDiskPopup.java",
"chars": 9473,
"preview": "package logisticspipes.gui.popup;\n\nimport java.io.IOException;\n\nimport net.minecraft.client.gui.Gui;\nimport net.minecraf"
},
{
"path": "common/logisticspipes/gui/popup/GuiEditCCAccessTable.java",
"chars": 9233,
"preview": "package logisticspipes.gui.popup;\n\nimport java.io.IOException;\nimport java.util.Collections;\n\nimport net.minecraft.clien"
},
{
"path": "common/logisticspipes/gui/popup/GuiEditChannelPopup.java",
"chars": 2977,
"preview": "package logisticspipes.gui.popup;\n\nimport java.io.IOException;\nimport java.util.UUID;\n\nimport net.minecraft.client.gui.G"
},
{
"path": "common/logisticspipes/gui/popup/GuiManageChannelPopup.java",
"chars": 5102,
"preview": "package logisticspipes.gui.popup;\n\nimport java.io.IOException;\nimport java.util.List;\n\nimport net.minecraft.client.gui.G"
},
{
"path": "common/logisticspipes/gui/popup/GuiMessagePopup.java",
"chars": 1737,
"preview": "package logisticspipes.gui.popup;\n\nimport net.minecraft.client.gui.GuiButton;\n\nimport logisticspipes.utils.gui.GuiGraphi"
},
{
"path": "common/logisticspipes/gui/popup/GuiRecipeImport.java",
"chars": 7832,
"preview": "package logisticspipes.gui.popup;\n\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport"
},
{
"path": "common/logisticspipes/gui/popup/GuiRequestPopup.java",
"chars": 2745,
"preview": "package logisticspipes.gui.popup;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.List;\n\nimpo"
},
{
"path": "common/logisticspipes/gui/popup/GuiSecurityStationPopup.java",
"chars": 5609,
"preview": "package logisticspipes.gui.popup;\n\nimport java.io.IOException;\n\nimport net.minecraft.client.gui.GuiButton;\nimport net.mi"
},
{
"path": "common/logisticspipes/gui/popup/GuiSelectChannelPopup.java",
"chars": 1552,
"preview": "package logisticspipes.gui.popup;\n\nimport java.io.IOException;\nimport java.util.List;\nimport java.util.function.Consumer"
},
{
"path": "common/logisticspipes/gui/popup/GuiSelectSatellitePopup.java",
"chars": 3799,
"preview": "package logisticspipes.gui.popup;\n\nimport java.io.IOException;\nimport java.util.Collections;\nimport java.util.List;\nimpo"
},
{
"path": "common/logisticspipes/gui/popup/RequestMonitorPopup.java",
"chars": 21456,
"preview": "package logisticspipes.gui.popup;\n\nimport java.awt.image.BufferedImage;\nimport java.io.File;\nimport java.io.IOException;"
},
{
"path": "common/logisticspipes/gui/popup/SelectItemOutOfList.java",
"chars": 5000,
"preview": "package logisticspipes.gui.popup;\n\nimport java.io.IOException;\nimport java.util.List;\nimport java.util.Locale;\nimport ja"
},
{
"path": "common/logisticspipes/gui/popup/SneakyConfigurationPopup.java",
"chars": 3143,
"preview": "package logisticspipes.gui.popup;\n\nimport java.awt.Rectangle;\nimport java.io.IOException;\nimport java.util.List;\n\nimport"
},
{
"path": "common/logisticspipes/hud/HUDConfig.java",
"chars": 2052,
"preview": "package logisticspipes.hud;\n\nimport javax.annotation.Nonnull;\n\nimport net.minecraft.item.ItemStack;\nimport net.minecraft"
},
{
"path": "common/logisticspipes/interfaces/IBlockWatchingHandler.java",
"chars": 226,
"preview": "package logisticspipes.interfaces;\n\nimport net.minecraft.entity.player.EntityPlayer;\n\npublic interface IBlockWatchingHan"
},
{
"path": "common/logisticspipes/interfaces/IBufferItems.java",
"chars": 501,
"preview": "package logisticspipes.interfaces;\n\nimport logisticspipes.interfaces.routing.IAdditionalTargetInformation;\nimport logist"
},
{
"path": "common/logisticspipes/interfaces/IChainAddList.java",
"chars": 135,
"preview": "package logisticspipes.interfaces;\n\nimport java.util.List;\n\npublic interface IChainAddList<T> extends List<T> {\n\n\tT addC"
},
{
"path": "common/logisticspipes/interfaces/IChangeListener.java",
"chars": 99,
"preview": "package logisticspipes.interfaces;\n\npublic interface IChangeListener {\n\n\tvoid listenedChanged();\n}\n"
},
{
"path": "common/logisticspipes/interfaces/IChestContentReceiver.java",
"chars": 240,
"preview": "package logisticspipes.interfaces;\n\nimport java.util.Collection;\n\nimport logisticspipes.utils.item.ItemIdentifierStack;\n"
},
{
"path": "common/logisticspipes/interfaces/IClientInformationProvider.java",
"chars": 191,
"preview": "package logisticspipes.interfaces;\n\nimport java.util.List;\nimport javax.annotation.Nonnull;\n\npublic interface IClientInf"
},
{
"path": "common/logisticspipes/interfaces/IClientState.java",
"chars": 255,
"preview": "package logisticspipes.interfaces;\n\nimport network.rs485.logisticspipes.util.LPDataInput;\nimport network.rs485.logistics"
},
{
"path": "common/logisticspipes/interfaces/IDebugHUDProvider.java",
"chars": 149,
"preview": "package logisticspipes.interfaces;\n\nimport java.util.List;\n\npublic interface IDebugHUDProvider {\n\n\tList<IHeadUpDisplayRe"
},
{
"path": "common/logisticspipes/interfaces/IDiskProvider.java",
"chars": 296,
"preview": "package logisticspipes.interfaces;\n\nimport javax.annotation.Nonnull;\n\nimport net.minecraft.item.ItemStack;\n\nimport logis"
},
{
"path": "common/logisticspipes/interfaces/IFuzzySlot.java",
"chars": 197,
"preview": "package logisticspipes.interfaces;\n\nimport network.rs485.logisticspipes.property.IBitSet;\n\npublic interface IFuzzySlot {"
},
{
"path": "common/logisticspipes/interfaces/IGUIChannelInformationReceiver.java",
"chars": 223,
"preview": "package logisticspipes.interfaces;\n\nimport logisticspipes.routing.channels.ChannelInformation;\n\npublic interface IGUICha"
},
{
"path": "common/logisticspipes/interfaces/IGuiOpenControler.java",
"chars": 219,
"preview": "package logisticspipes.interfaces;\n\nimport net.minecraft.entity.player.EntityPlayer;\n\npublic interface IGuiOpenControler"
},
{
"path": "common/logisticspipes/interfaces/IGuiTileEntity.java",
"chars": 183,
"preview": "package logisticspipes.interfaces;\n\nimport logisticspipes.network.abstractguis.CoordinatesGuiProvider;\n\npublic interface"
},
{
"path": "common/logisticspipes/interfaces/IHUDButton.java",
"chars": 450,
"preview": "package logisticspipes.interfaces;\n\npublic interface IHUDButton {\n\n\tint getX();\n\n\tint getY();\n\n\tint sizeX();\n\n\tint sizeY"
}
]
// ... and 1201 more files (download for full content)
About this extraction
This page contains the full source code of the RS485/LogisticsPipes GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1401 files (4.8 MB), approximately 1.4M tokens, and a symbol index with 9216 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.