Compare commits

...

146 Commits

Author SHA1 Message Date
Sebastian Hartte e256a4f664 Post-Merge fixes. 2020-08-23 21:20:51 +02:00
Sebastian Hartte 73cc3f8998 Merge remote-tracking branch 'origin/master' into fabric/master
# Conflicts:
#	gradle.properties
#	src/main/java/appeng/core/api/definitions/ApiItems.java
2020-08-23 21:08:47 +02:00
Sebastian Hartte 874f46ed4d Fixes #4633: Storage buses cannot see attached inventories. 2020-08-23 11:23:35 +02:00
Sebastian Hartte d82c713112 Delay registration of various client settings until the client is fully initialized. 2020-08-21 00:00:03 +02:00
Sebastian Hartte 45cbc40177 Fix wrench interaction with part hosts. 2020-08-20 22:58:49 +02:00
Sebastian Hartte 0e7e9313ee Fixes wrenches not working on tile entities.
This is a temporary hack for now.
2020-08-19 01:53:51 +02:00
Sebastian Hartte 2bba843313 Remove unused code in Condenser. 2020-08-19 01:34:15 +02:00
Sebastian Hartte a0949297d5 Added AE tools to fabric tool tags to fix breaking speed. 2020-08-19 01:34:08 +02:00
Sebastian Hartte 420fb272b4 Bump LBA version to fix filter bugs. 2020-08-19 01:33:34 +02:00
Sebastian Hartte debd2de42e Fix Maven publication. 2020-08-18 20:12:09 +02:00
Sebastian Hartte 3fb813a81b Remove Hopper Mixins now merged into LBA. 2020-08-18 19:46:03 +02:00
Sebastian Hartte ab05f5fec9 Updated LBA 2020-08-18 17:34:29 +02:00
Sebastian Hartte 9e4f51db6e Merge remote-tracking branch 'origin/master' into fabric/master
# Conflicts:
#	src/main/java/appeng/entity/TinyTNTPrimedEntity.java
2020-08-18 01:37:21 +02:00
Sebastian Hartte 74480502b1 Merge remote-tracking branch 'origin/master' into fabric/master
# Conflicts:
#	.github/workflows/release.yml
2020-08-18 00:20:46 +02:00
Sebastian Hartte 739277ab64 Removed unused tunnel types and files.
Added more tags, moved ender pearl dust to convention tag.
Added compatibility with TechReborn's chargers.
2020-08-17 19:00:32 +02:00
Sebastian Hartte cf656e1540 Added initial TechReborn compatibility to the EnergyAcceptor. 2020-08-16 18:14:57 +02:00
Sebastian Hartte ab6f46077b Now really fix the encoded pattern not showing the tooltip with spaces. 2020-08-16 14:26:37 +02:00
Sebastian Hartte e9c7312e98 Merge fixes 2020-08-16 14:26:17 +02:00
Sebastian Hartte 006cf2f8c1 Fix missing spaces in encoded pattern item. 2020-08-16 14:06:31 +02:00
Sebastian Hartte 636dce66e3 Hide more Items in REI. 2020-08-16 14:06:22 +02:00
Sebastian Hartte 2787796cd3 Fix Text#toString use on the crafting screens. 2020-08-16 14:06:05 +02:00
Sebastian Hartte 506c516384 Enable publishing again 2020-08-15 18:54:07 +02:00
Sebastian Hartte 011455e327 Further testing tags 2020-08-15 18:42:20 +02:00
Sebastian Hartte 11d772a32b Fixed client-side only Text methods. 2020-08-15 17:44:28 +02:00
Sebastian Hartte f20f0e003e Merge remote-tracking branch 'origin/master' into fabric/master
# Conflicts:
#	gradle.properties
#	src/main/java/appeng/server/subcommands/SpatialStorageCommand.java
2020-08-15 17:34:54 +02:00
Sebastian Hartte 0f100341d3 Added experimental site export mod. 2020-08-15 17:33:59 +02:00
Sebastian Hartte b1feeca41c Fixup imports + formatting. 2020-08-15 03:18:23 +02:00
Sebastian Hartte 7d43d79682 Merge remote-tracking branch 'origin/master' into fabric/master 2020-08-15 03:16:03 +02:00
Sebastian Hartte 5cd148ab5a Added curseforge publishing. 2020-08-15 02:51:32 +02:00
Sebastian Hartte 6c544f2211 Reformatted, and ported back some enhancements from the Forge version. 2020-08-15 02:51:03 +02:00
Sebastian Hartte 0a2f03aa92 Moved Creative Tabs to Bootstrap. 2020-08-12 18:42:58 +02:00
Sebastian Hartte b03a249da3 Remove libstructure
Migrate to 1.16.2 final
2020-08-12 18:23:32 +02:00
Sebastian Hartte 6f0fc7d189 Fabric Snapshots 2020-08-11 20:08:07 +02:00
Sebastian Hartte fd8eecbe93 Fabric Snapshots 2020-08-11 20:04:43 +02:00
Sebastian Hartte 0a60b3ebb2 Fabric Snapshots 2020-08-11 20:01:50 +02:00
Sebastian Hartte 15522f5ce7 Fabric Snapshots 2020-08-11 19:51:34 +02:00
Sebastian Hartte 964559baa1 Merge remote-tracking branch 'origin/master' into fabric/master
# Conflicts:
#	src/main/java/appeng/client/gui/implementations/NumberEntryWidget.java
2020-08-11 16:35:05 +02:00
Sebastian Hartte 06f30b3daa Reformat 2020-08-11 16:21:05 +02:00
Sebastian Hartte 68a02ed64b Updated to 1.16.2-rc2 2020-08-11 16:20:31 +02:00
Sebastian Hartte c59a6e34eb Post-merge fixes 2020-08-11 02:12:26 +02:00
Sebastian Hartte 5b4f450fc3 Fix toLowerCase issues 2020-08-11 02:07:32 +02:00
Sebastian Hartte ff0d38d56a Merge fixes 2020-08-11 01:36:51 +02:00
Sebastian Hartte 89058448cf Merged most recent master. 2020-08-06 00:46:20 +02:00
Sebastian Hartte 3c737d8d1e Merge remote-tracking branch 'origin/master' into fabric/master
# Conflicts:
#	src/main/java/appeng/client/gui/AEBaseScreen.java
#	src/main/java/appeng/client/gui/widgets/CustomSlotWidget.java
#	src/main/java/appeng/client/gui/widgets/ITooltip.java
#	src/main/java/appeng/client/gui/widgets/IconButton.java
#	src/main/java/appeng/client/gui/widgets/ProgressBar.java
#	src/main/java/appeng/client/gui/widgets/SettingToggleButton.java
#	src/main/java/appeng/client/gui/widgets/ToggleButton.java
#	src/main/java/appeng/container/slot/PlayerInvSlot.java
#	src/main/java/appeng/fluids/client/gui/widgets/FluidSlotWidget.java
#	src/main/java/appeng/fluids/client/gui/widgets/FluidTankWidget.java
#	src/main/java/appeng/fluids/client/gui/widgets/OptionalFluidSlotWidget.java
#	src/main/java/appeng/fluids/parts/FluidAnnihilationPlanePart.java
#	src/main/java/appeng/parts/automation/AbstractFormationPlanePart.java
#	src/main/java/appeng/parts/automation/AnnihilationPlanePart.java
#	src/main/java/appeng/parts/automation/FormationPlanePart.java
#	src/main/java/appeng/parts/automation/IdentityAnnihilationPlanePart.java
#	src/main/java/appeng/parts/p2p/FluidP2PTunnelPart.java
2020-08-05 23:40:58 +02:00
Sebastian Hartte a807b4e3ad Updated LBA to fix crashbug. 2020-08-05 23:28:45 +02:00
Sebastian Hartte 8f740be431 Respect max amount per slot. 2020-08-05 23:15:04 +02:00
Sebastian Hartte 77e07e9b3b Remove shape logic in AEBaseInvBlockEntity and bring offering inventories in line with caps. 2020-08-05 23:12:39 +02:00
Sebastian Hartte d04cd2a001 Actually implement WrapperFilteredItemHandler. 2020-08-05 23:12:03 +02:00
Sebastian Hartte 8f2b7fe16b Forgot to add the hopper mixin. 2020-08-05 23:11:44 +02:00
Sebastian Hartte 239f8d027a Fix network status screen showing translation keys. 2020-08-05 23:11:31 +02:00
Sebastian Hartte c4c4d20303 Added Vanilla Hopper integration. 2020-08-05 23:06:56 +02:00
Sebastian Hartte e7c57c0f61 Update the nominal face after the cull face, since
updating the cull face will also force the nominal
face to the cull face.
2020-08-05 23:06:09 +02:00
Sebastian Hartte 184fe8c1fc Fix items being lost when trying to stack items in the player inventory. 2020-08-03 22:29:03 +02:00
Sebastian Hartte 6f4722b393 Preliminary fix for AO-enabled auto-rotated blocks using the wrong face for getting lighting values. 2020-08-03 22:28:15 +02:00
Sebastian Hartte 414b01bddb Merge branch 'master' into fabric/master
# Conflicts:
#	src/main/java/appeng/block/storage/SkyChestBlock.java
#	src/main/java/appeng/client/render/tesr/SkyChestTESR.java
#	src/main/java/appeng/core/api/ApiPart.java
#	src/main/java/appeng/core/api/definitions/ApiItems.java
#	src/main/java/appeng/core/sync/packets/PartPlacementPacket.java
#	src/main/java/appeng/parts/PartPlacement.java
#	src/unported/java/appeng/client/ClientHelper.java
#	src/unported/java/appeng/core/CommonHelper.java
#	src/unported/java/appeng/server/ServerHelper.java
2020-08-03 15:15:14 +02:00
Sebastian Hartte 63c251294e Added custom item entity support via mixin. 2020-08-03 15:10:41 +02:00
Sebastian Hartte 541f07a7e3 Fix output item stacking for condenser.
Fix exposed inventories for condenser.
2020-08-03 13:06:00 +02:00
Sebastian Hartte 1693271660 Fix recipe transfer for recipes that are not 3x3. 2020-08-03 13:05:34 +02:00
Sebastian Hartte 3a12fa4843 Minor cleanup. 2020-08-03 13:05:23 +02:00
Sebastian Hartte ba85da2c72 Fix SkyStone placement not immediately updating the compass. 2020-08-03 13:05:05 +02:00
Sebastian Hartte 469a1e205b Reactivated REI 2020-08-02 22:31:27 +02:00
Sebastian Hartte d238f6e8e4 Post-Merge fixes 2020-08-02 22:31:20 +02:00
Sebastian Hartte c0fa8ab2dc Merge remote-tracking branch 'origin/master' into fabric/master
# Conflicts:
#	src/main/java/appeng/client/me/SlotDisconnected.java
#	src/main/java/appeng/container/implementations/QuartzKnifeContainer.java
#	src/main/java/appeng/container/slot/AppEngCraftingSlot.java
#	src/main/java/appeng/container/slot/AppEngSlot.java
#	src/main/java/appeng/container/slot/CraftingMatrixSlot.java
#	src/main/java/appeng/container/slot/CraftingTermSlot.java
#	src/main/java/appeng/container/slot/DisabledSlot.java
#	src/main/java/appeng/container/slot/FakeBlacklistSlot.java
#	src/main/java/appeng/container/slot/FakeCraftingMatrixSlot.java
#	src/main/java/appeng/container/slot/FakeSlot.java
#	src/main/java/appeng/container/slot/FakeTypeOnlySlot.java
#	src/main/java/appeng/container/slot/InaccessibleSlot.java
#	src/main/java/appeng/container/slot/MolecularAssemblerPatternSlot.java
#	src/main/java/appeng/container/slot/NormalSlot.java
#	src/main/java/appeng/container/slot/OptionalFakeSlot.java
#	src/main/java/appeng/container/slot/OptionalNormalSlot.java
#	src/main/java/appeng/container/slot/OptionalRestrictedInputSlot.java
#	src/main/java/appeng/container/slot/OptionalTypeOnlyFakeSlot.java
#	src/main/java/appeng/container/slot/OutputSlot.java
#	src/main/java/appeng/container/slot/PatternOutputsSlot.java
#	src/main/java/appeng/container/slot/PlayerHotBarSlot.java
#	src/main/java/appeng/container/slot/PlayerInvSlot.java
#	src/main/java/appeng/container/slot/RestrictedInputSlot.java
2020-08-02 22:28:37 +02:00
Sebastian Hartte 3e5787be76 Fix internal inventory on the client not being updated. 2020-08-02 20:58:24 +02:00
Sebastian Hartte 52ec63413f Fix client-side particle effects. 2020-08-02 20:58:03 +02:00
Sebastian Hartte 62ac6a0052 Fix server-side problems. 2020-08-02 18:09:21 +02:00
Sebastian Hartte 7f7b794c0b Merge remote-tracking branch 'origin/master' into fabric/master
# Conflicts:
#	src/main/java/appeng/block/crafting/CraftingMonitorBlockRendering.java
2020-08-02 15:46:11 +02:00
Sebastian Hartte a97ebaf40d Server can at least begin to launch now. 2020-08-02 15:45:59 +02:00
Sebastian Hartte 80375c436d Merge remote-tracking branch 'origin/master' into fabric/master
# Conflicts:
#	src/main/java/appeng/core/api/definitions/ApiBlocks.java
2020-08-02 15:41:50 +02:00
Sebastian Hartte 9ce4a65203 Merge remote-tracking branch 'origin/master' into fabric/master
# Conflicts:
#	src/main/java/appeng/block/misc/ChargerBlock.java
#	src/main/java/appeng/core/api/definitions/ApiBlocks.java
2020-08-02 15:15:39 +02:00
Sebastian Hartte f5aee56a0b Remove unused imports. 2020-08-02 15:14:28 +02:00
Sebastian Hartte 2655620fd0 Merge remote-tracking branch 'origin/master' into fabric-1.16
# Conflicts:
#	src/api/java/appeng/api/parts/IPart.java
#	src/main/java/appeng/block/AEBaseBlockItemChargeable.java
#	src/main/java/appeng/block/qnb/QnbFormedModel.java
#	src/main/java/appeng/bootstrap/BlockDefinitionBuilder.java
#	src/main/java/appeng/bootstrap/ItemDefinitionBuilder.java
#	src/main/java/appeng/client/render/BakedModelUnwrapper.java
#	src/main/java/appeng/client/render/BasicUnbakedModel.java
#	src/main/java/appeng/client/render/FacadeItemModel.java
#	src/main/java/appeng/client/render/cablebus/CableBusModel.java
#	src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModel.java
#	src/main/java/appeng/client/render/crafting/CraftingCubeModel.java
#	src/main/java/appeng/client/render/model/AutoRotatingBakedModel.java
#	src/main/java/appeng/client/render/model/BiometricCardModel.java
#	src/main/java/appeng/client/render/model/ColorApplicatorModel.java
#	src/main/java/appeng/client/render/model/DriveBakedModel.java
#	src/main/java/appeng/client/render/model/DriveModel.java
#	src/main/java/appeng/client/render/model/GlassModel.java
#	src/main/java/appeng/client/render/model/MemoryCardModel.java
#	src/main/java/appeng/client/render/model/SkyCompassModel.java
#	src/main/java/appeng/client/render/spatial/SpatialPylonModel.java
#	src/main/java/appeng/client/render/tesr/ChestTileEntityRenderer.java
#	src/main/java/appeng/core/AERecipeType.java
#	src/main/java/appeng/core/AppEng.java
#	src/main/java/appeng/core/Registration.java
#	src/main/java/appeng/core/api/client/ApiCellModelRegistry.java
#	src/main/java/appeng/core/api/definitions/ApiItems.java
#	src/main/java/appeng/fluids/helper/DualityFluidInterface.java
#	src/main/java/appeng/items/misc/CrystalSeedItem.java
#	src/main/java/appeng/items/tools/powered/ColorApplicatorItem.java
#	src/main/java/appeng/parts/automation/PlaneModel.java
#	src/main/java/appeng/recipes/handlers/GrinderRecipe.java
#	src/main/java/appeng/recipes/handlers/GrinderRecipeSerializer.java
#	src/main/java/appeng/recipes/handlers/InscriberRecipe.java
#	src/main/java/appeng/recipes/handlers/InscriberRecipeSerializer.java
#	src/main/java/appeng/spatial/SpatialDimensionManager.java
#	src/main/java/appeng/tile/networking/CableBusBlockEntity.java
#	src/main/java/appeng/tile/storage/SkyChestBlockEntity.java
2020-08-02 14:37:29 +02:00
Sebastian Hartte 3c86f2eae4 Working on lifecycle. 2020-08-02 14:07:54 +02:00
Sebastian Hartte cdba0b04fb Change datagen task to use the source set outputs directly to avoid problems with modCompileOnly transitive dependencies. 2020-08-02 13:27:32 +02:00
Sebastian Hartte a6fb17b008 Formatting Fixes 2020-08-01 17:24:48 +02:00
Sebastian Hartte 1b31185cdb Ported to 1.16.2-pre 2020-08-01 17:14:12 +02:00
Sebastian Hartte 3d1a919e69 Removed unnecessary dependencies. 2020-07-31 01:02:38 +02:00
Sebastian Hartte 80710cc818 Simplify Git Workflow 2020-07-28 23:17:02 +02:00
Sebastian Hartte b8c63df11b Make build depend on generateData, and remove unmapped mods from its dependencies. 2020-07-28 23:16:08 +02:00
Sebastian Hartte 20fd760274 Switch to right task for data generation 2020-07-28 22:59:58 +02:00
Sebastian Hartte 27cdbfb7f3 Fix NPEs when the input isn't an item. 2020-07-28 22:56:03 +02:00
Sebastian Hartte 33d247fec8 Fix server startup, jar building and after-merge fixes. 2020-07-28 22:45:09 +02:00
Sebastian Hartte 75dd1d4bb6 Merge remote-tracking branch 'origin/master' into fabric-1.16
# Conflicts:
#	build.gradle
#	gradle.properties
#	src/api/java/appeng/api/config/Upgrades.java
#	src/api/java/appeng/api/features/IWorldGen.java
#	src/api/java/appeng/api/implementations/items/ISpatialStorageCell.java
#	src/api/java/appeng/api/storage/ISpatialDimension.java
#	src/api/java/appeng/api/util/DimensionalCoord.java
#	src/main/java/appeng/block/AEBaseBlockItemChargeable.java
#	src/main/java/appeng/block/AEBaseTileBlock.java
#	src/main/java/appeng/block/misc/TinyTNTBlock.java
#	src/main/java/appeng/block/networking/CableBusBlock.java
#	src/main/java/appeng/block/qnb/QnbFormedBakedModel.java
#	src/main/java/appeng/block/spatial/MatrixFrameBlock.java
#	src/main/java/appeng/block/storage/ChestBlock.java
#	src/main/java/appeng/client/gui/AEBaseMEScreen.java
#	src/main/java/appeng/client/gui/AEBaseScreen.java
#	src/main/java/appeng/client/gui/implementations/CellWorkbenchScreen.java
#	src/main/java/appeng/client/gui/implementations/ChestScreen.java
#	src/main/java/appeng/client/gui/implementations/CondenserScreen.java
#	src/main/java/appeng/client/gui/implementations/CraftAmountScreen.java
#	src/main/java/appeng/client/gui/implementations/CraftConfirmScreen.java
#	src/main/java/appeng/client/gui/implementations/CraftingCPUScreen.java
#	src/main/java/appeng/client/gui/implementations/DriveScreen.java
#	src/main/java/appeng/client/gui/implementations/FormationPlaneScreen.java
#	src/main/java/appeng/client/gui/implementations/GrinderScreen.java
#	src/main/java/appeng/client/gui/implementations/IOPortScreen.java
#	src/main/java/appeng/client/gui/implementations/InscriberScreen.java
#	src/main/java/appeng/client/gui/implementations/InterfaceScreen.java
#	src/main/java/appeng/client/gui/implementations/InterfaceTerminalScreen.java
#	src/main/java/appeng/client/gui/implementations/MEMonitorableScreen.java
#	src/main/java/appeng/client/gui/implementations/NetworkStatusScreen.java
#	src/main/java/appeng/client/gui/implementations/NetworkToolScreen.java
#	src/main/java/appeng/client/gui/implementations/PatternTermScreen.java
#	src/main/java/appeng/client/gui/implementations/QNBScreen.java
#	src/main/java/appeng/client/gui/implementations/QuartzKnifeScreen.java
#	src/main/java/appeng/client/gui/implementations/SecurityStationScreen.java
#	src/main/java/appeng/client/gui/implementations/SkyChestScreen.java
#	src/main/java/appeng/client/gui/implementations/SpatialIOPortScreen.java
#	src/main/java/appeng/client/gui/implementations/StorageBusScreen.java
#	src/main/java/appeng/client/gui/implementations/UpgradeableScreen.java
#	src/main/java/appeng/client/gui/implementations/VibrationChamberScreen.java
#	src/main/java/appeng/client/gui/implementations/WirelessScreen.java
#	src/main/java/appeng/client/gui/widgets/AETextField.java
#	src/main/java/appeng/client/gui/widgets/ActionButton.java
#	src/main/java/appeng/client/gui/widgets/CustomSlotWidget.java
#	src/main/java/appeng/client/gui/widgets/IconButton.java
#	src/main/java/appeng/client/gui/widgets/ProgressBar.java
#	src/main/java/appeng/client/gui/widgets/SettingToggleButton.java
#	src/main/java/appeng/client/gui/widgets/ToggleButton.java
#	src/main/java/appeng/client/render/ColorableTileBlockColor.java
#	src/main/java/appeng/client/render/FacadeDispatcherBakedModel.java
#	src/main/java/appeng/client/render/FacingToRotation.java
#	src/main/java/appeng/client/render/SpatialSkyRender.java
#	src/main/java/appeng/client/render/StaticBlockColor.java
#	src/main/java/appeng/client/render/cablebus/CableBuilder.java
#	src/main/java/appeng/client/render/crafting/CraftingCubeModel.java
#	src/main/java/appeng/client/render/crafting/EncodedPatternBakedModel.java
#	src/main/java/appeng/client/render/effects/ChargedOreFX.java
#	src/main/java/appeng/client/render/effects/CraftingFx.java
#	src/main/java/appeng/client/render/effects/LightningArcFX.java
#	src/main/java/appeng/client/render/effects/MatterCannonFX.java
#	src/main/java/appeng/client/render/effects/ParticleTypes.java
#	src/main/java/appeng/client/render/model/AutoRotatingBakedModel.java
#	src/main/java/appeng/client/render/model/BiometricCardBakedModel.java
#	src/main/java/appeng/client/render/model/ColorApplicatorBakedModel.java
#	src/main/java/appeng/client/render/model/MemoryCardBakedModel.java
#	src/main/java/appeng/client/render/model/MemoryCardModel.java
#	src/main/java/appeng/client/render/model/SkyCompassBakedModel.java
#	src/main/java/appeng/client/render/tesr/ChestTileEntityRenderer.java
#	src/main/java/appeng/client/render/tesr/CrankTESR.java
#	src/main/java/appeng/client/render/tesr/SkyCompassTESR.java
#	src/main/java/appeng/container/ContainerLocator.java
#	src/main/java/appeng/container/guisync/SyncData.java
#	src/main/java/appeng/container/implementations/CraftConfirmContainer.java
#	src/main/java/appeng/container/implementations/WirelessTermContainer.java
#	src/main/java/appeng/core/AEConfig.java
#	src/main/java/appeng/core/AppEng.java
#	src/main/java/appeng/core/Registration.java
#	src/main/java/appeng/core/api/ApiClientHelper.java
#	src/main/java/appeng/core/api/definitions/ApiBlocks.java
#	src/main/java/appeng/core/features/registries/WirelessRegistry.java
#	src/main/java/appeng/core/features/registries/WorldGenRegistry.java
#	src/main/java/appeng/core/localization/ButtonToolTips.java
#	src/main/java/appeng/core/localization/GuiText.java
#	src/main/java/appeng/core/stats/AppEngAdvancementTrigger.java
#	src/main/java/appeng/core/sync/network/NetworkHandler.java
#	src/main/java/appeng/core/sync/network/TargetPoint.java
#	src/main/java/appeng/core/worlddata/WorldData.java
#	src/main/java/appeng/debug/ChunkLoaderBlockEntity.java
#	src/main/java/appeng/debug/CubeGeneratorBlockEntity.java
#	src/main/java/appeng/debug/DebugCardItem.java
#	src/main/java/appeng/debug/DebugPartPlacerItem.java
#	src/main/java/appeng/debug/MeteoritePlacerItem.java
#	src/main/java/appeng/debug/ReplicatorCardItem.java
#	src/main/java/appeng/decorative/solid/SkyStoneBlock.java
#	src/main/java/appeng/entity/TinyTNTPrimedEntity.java
#	src/main/java/appeng/fluids/client/gui/FluidFormationPlaneScreen.java
#	src/main/java/appeng/fluids/client/gui/FluidInterfaceScreen.java
#	src/main/java/appeng/fluids/client/gui/FluidStorageBusScreen.java
#	src/main/java/appeng/fluids/client/gui/FluidTerminalScreen.java
#	src/main/java/appeng/fluids/client/gui/widgets/FluidSlotWidget.java
#	src/main/java/appeng/fluids/client/gui/widgets/FluidTankWidget.java
#	src/main/java/appeng/fluids/parts/FluidAnnihilationPlanePart.java
#	src/main/java/appeng/fluids/tile/FluidInterfaceBlockEntity.java
#	src/main/java/appeng/helpers/DualityInterface.java
#	src/main/java/appeng/helpers/InvalidPatternHelper.java
#	src/main/java/appeng/helpers/MetaRotation.java
#	src/main/java/appeng/hooks/DynamicDimensions.java
#	src/main/java/appeng/integration/modules/jei/CondenserCategory.java
#	src/main/java/appeng/integration/modules/jei/InscriberRecipeCategory.java
#	src/main/java/appeng/integration/modules/theoneprobe/TheOneProbeText.java
#	src/main/java/appeng/integration/modules/waila/part/PartStackWailaDataProvider.java
#	src/main/java/appeng/items/misc/CrystalSeedItem.java
#	src/main/java/appeng/items/misc/EncodedPatternItem.java
#	src/main/java/appeng/items/parts/FacadeItem.java
#	src/main/java/appeng/items/storage/SpatialStorageCellItem.java
#	src/main/java/appeng/items/tools/BiometricCardItem.java
#	src/main/java/appeng/items/tools/MemoryCardItem.java
#	src/main/java/appeng/items/tools/powered/ColorApplicatorItem.java
#	src/main/java/appeng/items/tools/powered/MatterCannonItem.java
#	src/main/java/appeng/items/tools/powered/powersink/AEBasePoweredItem.java
#	src/main/java/appeng/me/cluster/MBCalculator.java
#	src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java
#	src/main/java/appeng/me/cluster/implementations/QuantumCluster.java
#	src/main/java/appeng/mixins/DimensionTypeMixin.java
#	src/main/java/appeng/mixins/MinecraftServerMixin.java
#	src/main/java/appeng/mixins/SkyPropertiesMixin.java
#	src/main/java/appeng/mixins/SkyRenderMixin.java
#	src/main/java/appeng/mixins/ThreadedAnvilChunkStorageAccessor.java
#	src/main/java/appeng/parts/automation/AnnihilationPlanePart.java
#	src/main/java/appeng/parts/misc/CableAnchorPart.java
#	src/main/java/appeng/parts/reporting/AbstractMonitorPart.java
#	src/main/java/appeng/server/subcommands/TestMeteoritesCommand.java
#	src/main/java/appeng/server/subcommands/TestOreGenCommand.java
#	src/main/java/appeng/services/CompassService.java
#	src/main/java/appeng/spatial/CachedPlane.java
#	src/main/java/appeng/spatial/SpatialDimensionExtraData.java
#	src/main/java/appeng/spatial/SpatialDimensionManager.java
#	src/main/java/appeng/spatial/StorageCellBiome.java
#	src/main/java/appeng/spatial/StorageChunkGenerator.java
#	src/main/java/appeng/spatial/StorageHelper.java
#	src/main/java/appeng/tile/spatial/SpatialIOPortBlockEntity.java
#	src/main/java/appeng/tile/storage/SkyChestBlockEntity.java
#	src/main/java/appeng/util/Platform.java
#	src/main/java/appeng/worldgen/ChargedQuartzOreConfig.java
#	src/main/java/appeng/worldgen/ChargedQuartzOreFeature.java
#	src/main/java/appeng/worldgen/meteorite/MeteoriteStructure.java
#	src/main/java/appeng/worldgen/meteorite/MeteoriteStructurePiece.java
#	src/main/java/appeng/worldgen/meteorite/MeteoriteStructureStart.java
#	src/main/java/appeng/worldgen/meteorite/debug/MeteoriteSpawner.java
#	src/main/resources/appliedenergistics2.mixins.json
#	src/unported/java/appeng/client/ClientHelper.java
#	src/unported/resources/META-INF/accesstransformer.cfg
2020-07-28 22:08:09 +02:00
Sebastian Hartte a8e79826bd Fix fabric-api version 2020-07-28 21:54:10 +02:00
Sebastian Hartte b9ece3a18a Updated Gradle Wrapper 2020-07-28 21:44:50 +02:00
Sebastian Hartte 780f68952b Added spotless back and reformatted 2020-07-27 20:07:27 +02:00
Sebastian Hartte 49296915c9 Post merge fixes. 2020-07-27 19:12:16 +02:00
Sebastian Hartte 0fdc46b358 Merge remote-tracking branch 'origin/master' into fabric-1.16
# Conflicts:
#	gradle.properties
#	gradle/wrapper/gradle-wrapper.jar
#	gradle/wrapper/gradle-wrapper.properties
#	src/api/java/appeng/api/features/IWorldGen.java
#	src/api/java/appeng/api/implementations/items/ISpatialStorageCell.java
#	src/api/java/appeng/api/parts/IPart.java
#	src/api/java/appeng/api/storage/ISpatialDimension.java
#	src/api/java/appeng/api/util/DimensionalCoord.java
#	src/datagen/java/appeng/data/providers/IAE2DataProvider.java
#	src/main/java/appeng/block/AEBaseBlockItemChargeable.java
#	src/main/java/appeng/block/misc/ChargerBlock.java
#	src/main/java/appeng/block/misc/QuartzFixtureBlock.java
#	src/main/java/appeng/block/networking/CableBusBlock.java
#	src/main/java/appeng/block/networking/CableBusColor.java
#	src/main/java/appeng/block/networking/ControllerBlock.java
#	src/main/java/appeng/block/networking/WirelessBlock.java
#	src/main/java/appeng/block/paint/PaintSplotchesBakedModel.java
#	src/main/java/appeng/block/paint/PaintSplotchesModel.java
#	src/main/java/appeng/block/qnb/QnbFormedBakedModel.java
#	src/main/java/appeng/block/qnb/QnbFormedModel.java
#	src/main/java/appeng/block/spatial/MatrixFrameBlock.java
#	src/main/java/appeng/block/storage/ChestBlock.java
#	src/main/java/appeng/block/storage/DriveSlotState.java
#	src/main/java/appeng/client/gui/AEBaseMEScreen.java
#	src/main/java/appeng/client/gui/AEBaseScreen.java
#	src/main/java/appeng/client/gui/implementations/AESubScreen.java
#	src/main/java/appeng/client/gui/implementations/CellWorkbenchScreen.java
#	src/main/java/appeng/client/gui/implementations/ChestScreen.java
#	src/main/java/appeng/client/gui/implementations/CondenserScreen.java
#	src/main/java/appeng/client/gui/implementations/CraftAmountScreen.java
#	src/main/java/appeng/client/gui/implementations/CraftConfirmScreen.java
#	src/main/java/appeng/client/gui/implementations/CraftingCPUScreen.java
#	src/main/java/appeng/client/gui/implementations/CraftingStatusScreen.java
#	src/main/java/appeng/client/gui/implementations/CraftingTermScreen.java
#	src/main/java/appeng/client/gui/implementations/DriveScreen.java
#	src/main/java/appeng/client/gui/implementations/FormationPlaneScreen.java
#	src/main/java/appeng/client/gui/implementations/GrinderScreen.java
#	src/main/java/appeng/client/gui/implementations/IOPortScreen.java
#	src/main/java/appeng/client/gui/implementations/InscriberScreen.java
#	src/main/java/appeng/client/gui/implementations/InterfaceScreen.java
#	src/main/java/appeng/client/gui/implementations/InterfaceTerminalScreen.java
#	src/main/java/appeng/client/gui/implementations/LevelEmitterScreen.java
#	src/main/java/appeng/client/gui/implementations/MEMonitorableScreen.java
#	src/main/java/appeng/client/gui/implementations/MolecularAssemblerScreen.java
#	src/main/java/appeng/client/gui/implementations/NetworkStatusScreen.java
#	src/main/java/appeng/client/gui/implementations/NetworkToolScreen.java
#	src/main/java/appeng/client/gui/implementations/NumberEntryWidget.java
#	src/main/java/appeng/client/gui/implementations/PatternTermScreen.java
#	src/main/java/appeng/client/gui/implementations/PriorityScreen.java
#	src/main/java/appeng/client/gui/implementations/QNBScreen.java
#	src/main/java/appeng/client/gui/implementations/QuartzKnifeScreen.java
#	src/main/java/appeng/client/gui/implementations/SecurityStationScreen.java
#	src/main/java/appeng/client/gui/implementations/SkyChestScreen.java
#	src/main/java/appeng/client/gui/implementations/SpatialIOPortScreen.java
#	src/main/java/appeng/client/gui/implementations/StorageBusScreen.java
#	src/main/java/appeng/client/gui/implementations/UpgradeableScreen.java
#	src/main/java/appeng/client/gui/implementations/VibrationChamberScreen.java
#	src/main/java/appeng/client/gui/implementations/WirelessScreen.java
#	src/main/java/appeng/client/gui/widgets/AETextField.java
#	src/main/java/appeng/client/gui/widgets/CustomSlotWidget.java
#	src/main/java/appeng/client/gui/widgets/ITooltip.java
#	src/main/java/appeng/client/gui/widgets/IconButton.java
#	src/main/java/appeng/client/gui/widgets/NumberBox.java
#	src/main/java/appeng/client/gui/widgets/ProgressBar.java
#	src/main/java/appeng/client/gui/widgets/TabButton.java
#	src/main/java/appeng/client/gui/widgets/ToggleButton.java
#	src/main/java/appeng/client/render/ColorableTileBlockColor.java
#	src/main/java/appeng/client/render/DummyFluidDispatcherBakedModel.java
#	src/main/java/appeng/client/render/FacadeItemModel.java
#	src/main/java/appeng/client/render/FacingToRotation.java
#	src/main/java/appeng/client/render/SpatialSkyRender.java
#	src/main/java/appeng/client/render/StackSizeRenderer.java
#	src/main/java/appeng/client/render/StaticBlockColor.java
#	src/main/java/appeng/client/render/TesrRenderHelper.java
#	src/main/java/appeng/client/render/cablebus/CableBuilder.java
#	src/main/java/appeng/client/render/cablebus/CableBusBreakingParticle.java
#	src/main/java/appeng/client/render/cablebus/CableBusModel.java
#	src/main/java/appeng/client/render/cablebus/CableBusRenderState.java
#	src/main/java/appeng/client/render/cablebus/CableCoreType.java
#	src/main/java/appeng/client/render/cablebus/CubeBuilder.java
#	src/main/java/appeng/client/render/cablebus/FacadeBlockAccess.java
#	src/main/java/appeng/client/render/cablebus/FacadeBuilder.java
#	src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModel.java
#	src/main/java/appeng/client/render/cablebus/QuadRotator.java
#	src/main/java/appeng/client/render/cablebus/SmartCableTextures.java
#	src/main/java/appeng/client/render/crafting/CraftingCubeModel.java
#	src/main/java/appeng/client/render/crafting/EncodedPatternBakedModel.java
#	src/main/java/appeng/client/render/crafting/EncodedPatternModel.java
#	src/main/java/appeng/client/render/effects/CraftingFx.java
#	src/main/java/appeng/client/render/effects/EnergyFx.java
#	src/main/java/appeng/client/render/effects/LightningArcParticleData.java
#	src/main/java/appeng/client/render/effects/LightningFX.java
#	src/main/java/appeng/client/render/effects/MatterCannonFX.java
#	src/main/java/appeng/client/render/effects/VibrantFX.java
#	src/main/java/appeng/client/render/model/AutoRotatingBakedModel.java
#	src/main/java/appeng/client/render/model/BiometricCardModel.java
#	src/main/java/appeng/client/render/model/ColorApplicatorModel.java
#	src/main/java/appeng/client/render/model/DriveBakedModel.java
#	src/main/java/appeng/client/render/model/DriveModel.java
#	src/main/java/appeng/client/render/model/GlassBakedModel.java
#	src/main/java/appeng/client/render/model/GlassModel.java
#	src/main/java/appeng/client/render/model/MatrixVertexTransformer.java
#	src/main/java/appeng/client/render/model/MemoryCardModel.java
#	src/main/java/appeng/client/render/model/RenderHelper.java
#	src/main/java/appeng/client/render/model/SkyCompassBakedModel.java
#	src/main/java/appeng/client/render/model/SkyCompassModel.java
#	src/main/java/appeng/client/render/renderable/ItemRenderable.java
#	src/main/java/appeng/client/render/spatial/SpatialPylonModel.java
#	src/main/java/appeng/client/render/tesr/CellLedRenderer.java
#	src/main/java/appeng/client/render/tesr/CrankTESR.java
#	src/main/java/appeng/client/render/tesr/DriveLedTileEntityRenderer.java
#	src/main/java/appeng/client/render/tesr/InscriberTESR.java
#	src/main/java/appeng/client/render/tesr/SkyChestTESR.java
#	src/main/java/appeng/container/implementations/PatternTermContainer.java
#	src/main/java/appeng/core/AEConfig.java
#	src/main/java/appeng/core/AppEng.java
#	src/main/java/appeng/core/Registration.java
#	src/main/java/appeng/core/features/registries/MovableTileRegistry.java
#	src/main/java/appeng/core/features/registries/WorldGenRegistry.java
#	src/main/java/appeng/core/localization/GuiText.java
#	src/main/java/appeng/core/sync/BasePacket.java
#	src/main/java/appeng/core/sync/network/NetworkHandler.java
#	src/main/java/appeng/core/sync/network/TargetPoint.java
#	src/main/java/appeng/core/sync/packets/ClickPacket.java
#	src/main/java/appeng/core/sync/packets/ConfigValuePacket.java
#	src/main/java/appeng/core/worlddata/WorldData.java
#	src/main/java/appeng/crafting/CraftingTreeProcess.java
#	src/main/java/appeng/datagen/AE2DataGenerators.java
#	src/main/java/appeng/datagen/providers/IAE2DataProvider.java
#	src/main/java/appeng/datagen/providers/loot/BlockDropProvider.java
#	src/main/java/appeng/datagen/providers/recipes/SlabStairRecipes.java
#	src/main/java/appeng/debug/ChunkLoaderBlockEntity.java
#	src/main/java/appeng/debug/DebugPartPlacerItem.java
#	src/main/java/appeng/debug/ReplicatorCardItem.java
#	src/main/java/appeng/entity/TinyTNTPrimedEntity.java
#	src/main/java/appeng/entity/TinyTNTPrimedRenderer.java
#	src/main/java/appeng/fluids/client/gui/FluidFormationPlaneScreen.java
#	src/main/java/appeng/fluids/client/gui/FluidInterfaceScreen.java
#	src/main/java/appeng/fluids/client/gui/FluidLevelEmitterScreen.java
#	src/main/java/appeng/fluids/client/gui/FluidStorageBusScreen.java
#	src/main/java/appeng/fluids/client/gui/FluidTerminalScreen.java
#	src/main/java/appeng/fluids/client/gui/widgets/FluidSlotWidget.java
#	src/main/java/appeng/fluids/client/gui/widgets/FluidTankWidget.java
#	src/main/java/appeng/fluids/parts/FluidAnnihilationPlanePart.java
#	src/main/java/appeng/fluids/parts/FluidFormationPlanePart.java
#	src/main/java/appeng/fluids/parts/FluidInterfacePart.java
#	src/main/java/appeng/fluids/parts/FluidStorageBusPart.java
#	src/main/java/appeng/fluids/parts/SharedFluidBusPart.java
#	src/main/java/appeng/forge/data/providers/IAE2DataProvider.java
#	src/main/java/appeng/helpers/AEMaterials.java
#	src/main/java/appeng/helpers/CraftingPatternDetails.java
#	src/main/java/appeng/helpers/DualityInterface.java
#	src/main/java/appeng/helpers/Splotch.java
#	src/main/java/appeng/integration/modules/jei/CondenserCategory.java
#	src/main/java/appeng/integration/modules/theoneprobe/part/ChannelInfoProvider.java
#	src/main/java/appeng/integration/modules/theoneprobe/part/P2PStateInfoProvider.java
#	src/main/java/appeng/integration/modules/theoneprobe/part/PowerStateInfoProvider.java
#	src/main/java/appeng/integration/modules/theoneprobe/tile/ChargerInfoProvider.java
#	src/main/java/appeng/integration/modules/theoneprobe/tile/CraftingMonitorInfoProvider.java
#	src/main/java/appeng/integration/modules/theoneprobe/tile/PowerStorageInfoProvider.java
#	src/main/java/appeng/integration/modules/waila/part/PartAccessor.java
#	src/main/java/appeng/integration/modules/waila/part/PartStackWailaDataProvider.java
#	src/main/java/appeng/integration/modules/waila/part/StorageMonitorWailaDataProvider.java
#	src/main/java/appeng/integration/modules/waila/tile/PowerStateWailaDataProvider.java
#	src/main/java/appeng/items/misc/EncodedPatternItem.java
#	src/main/java/appeng/items/parts/FacadeItem.java
#	src/main/java/appeng/items/storage/SpatialStorageCellItem.java
#	src/main/java/appeng/items/tools/BiometricCardItem.java
#	src/main/java/appeng/items/tools/MemoryCardItem.java
#	src/main/java/appeng/items/tools/powered/ColorApplicatorItem.java
#	src/main/java/appeng/items/tools/powered/MatterCannonItem.java
#	src/main/java/appeng/items/tools/quartz/QuartzCuttingKnifeItem.java
#	src/main/java/appeng/items/tools/quartz/QuartzHoeItem.java
#	src/main/java/appeng/me/cluster/MBCalculator.java
#	src/main/java/appeng/me/cluster/implementations/QuantumCluster.java
#	src/main/java/appeng/parts/AEBasePart.java
#	src/main/java/appeng/parts/CableBusContainer.java
#	src/main/java/appeng/parts/ICableBusContainer.java
#	src/main/java/appeng/parts/NullCableBusContainer.java
#	src/main/java/appeng/parts/PartPlacement.java
#	src/main/java/appeng/parts/automation/AnnihilationPlanePart.java
#	src/main/java/appeng/parts/automation/ExportBusPart.java
#	src/main/java/appeng/parts/automation/FormationPlanePart.java
#	src/main/java/appeng/parts/automation/ImportBusPart.java
#	src/main/java/appeng/parts/automation/PlaneModel.java
#	src/main/java/appeng/parts/misc/CableAnchorPart.java
#	src/main/java/appeng/parts/misc/InterfacePart.java
#	src/main/java/appeng/parts/misc/StorageBusPart.java
#	src/main/java/appeng/parts/p2p/P2PTunnelPart.java
#	src/main/java/appeng/parts/reporting/AbstractMonitorPart.java
#	src/main/java/appeng/parts/reporting/AbstractReportingPart.java
#	src/main/java/appeng/parts/reporting/AbstractTerminalPart.java
#	src/main/java/appeng/parts/reporting/ConversionMonitorPart.java
#	src/main/java/appeng/parts/reporting/InterfaceTerminalPart.java
#	src/main/java/appeng/parts/reporting/PatternTerminalPart.java
#	src/main/java/appeng/recipes/handlers/GrinderRecipeSerializer.java
#	src/main/java/appeng/recipes/handlers/InscriberRecipeSerializer.java
#	src/main/java/appeng/server/subcommands/TestMeteoritesCommand.java
#	src/main/java/appeng/server/subcommands/TestOreGenCommand.java
#	src/main/java/appeng/services/CompassService.java
#	src/main/java/appeng/spatial/SpatialDimensionManager.java
#	src/main/java/appeng/spatial/StorageCellDimension.java
#	src/main/java/appeng/thirdparty/codechicken/lib/model/Quad.java
#	src/main/java/appeng/thirdparty/codechicken/lib/model/pipeline/transformers/QuadCornerKicker.java
#	src/main/java/appeng/thirdparty/codechicken/lib/model/pipeline/transformers/QuadMatrixTransformer.java
#	src/main/java/appeng/tile/AEBaseBlockEntity.java
#	src/main/java/appeng/tile/AEBaseInvTileEntity.java
#	src/main/java/appeng/tile/crafting/CraftingBlockEntity.java
#	src/main/java/appeng/tile/crafting/CraftingMonitorBlockEntity.java
#	src/main/java/appeng/tile/crafting/MolecularAssemblerBlockEntity.java
#	src/main/java/appeng/tile/grid/AENetworkBlockEntity.java
#	src/main/java/appeng/tile/grid/AENetworkInvBlockEntity.java
#	src/main/java/appeng/tile/grid/AENetworkPowerBlockEntity.java
#	src/main/java/appeng/tile/misc/CellWorkbenchBlockEntity.java
#	src/main/java/appeng/tile/misc/CondenserBlockEntity.java
#	src/main/java/appeng/tile/misc/InscriberBlockEntity.java
#	src/main/java/appeng/tile/misc/InterfaceBlockEntity.java
#	src/main/java/appeng/tile/misc/PaintSplotchesBlockEntity.java
#	src/main/java/appeng/tile/misc/SecurityStationBlockEntity.java
#	src/main/java/appeng/tile/misc/VibrationChamberBlockEntity.java
#	src/main/java/appeng/tile/networking/CableBusBlockEntity.java
#	src/main/java/appeng/tile/networking/EnergyCellBlockEntity.java
#	src/main/java/appeng/tile/powersink/AEBasePoweredBlockEntity.java
#	src/main/java/appeng/tile/spatial/SpatialIOPortBlockEntity.java
#	src/main/java/appeng/tile/storage/ChestBlockEntity.java
#	src/main/java/appeng/tile/storage/DriveBlockEntity.java
#	src/main/java/appeng/tile/storage/IOPortBlockEntity.java
#	src/main/java/appeng/util/Platform.java
#	src/main/java/appeng/worldgen/ChargedQuartzOreConfig.java
#	src/main/java/appeng/worldgen/ChargedQuartzOreFeature.java
#	src/main/java/appeng/worldgen/meteorite/MeteoriteStructure.java
#	src/main/java/appeng/worldgen/meteorite/MeteoriteStructureStart.java
#	src/main/java/appeng/worldgen/meteorite/debug/MeteoriteSpawner.java
#	src/unported/java/appeng/client/ClientHelper.java
#	src/unported/java/appeng/client/render/DummyFluidItemModel.java
#	src/unported/java/appeng/client/render/model/UVLModelLoader.java
2020-07-27 19:07:35 +02:00
Sebastian Hartte c7980907ed Facade Recipe integration and cleanups 2020-07-27 18:03:16 +02:00
Sebastian Hartte 8306f5bf0a Port more stuff 2020-07-25 02:24:36 +02:00
Sebastian Hartte 5bf05f6cb1 Port more stuff 2020-07-24 18:39:39 +02:00
Sebastian Hartte 9fcfbf31be Lots of fixes 2020-07-23 02:38:32 +02:00
Sebastian Hartte 1933b4b10d Merge remote-tracking branch 'origin/master' into fabric-1.16
# Conflicts:
#	src/main/java/appeng/block/crafting/AbstractCraftingUnitBlock.java
#	src/main/java/appeng/block/qnb/QnbFormedBakedModel.java
#	src/main/java/appeng/client/gui/AEBaseScreen.java
#	src/main/java/appeng/client/gui/implementations/CraftAmountScreen.java
#	src/main/java/appeng/client/gui/implementations/LevelEmitterScreen.java
#	src/main/java/appeng/client/gui/implementations/PriorityScreen.java
#	src/main/java/appeng/client/gui/widgets/NumberBox.java
#	src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModel.java
#	src/main/java/appeng/client/render/cablebus/SmartCableTextures.java
#	src/main/java/appeng/container/implementations/CraftingCPUContainer.java
#	src/main/java/appeng/container/implementations/LevelEmitterContainer.java
#	src/main/java/appeng/container/implementations/PriorityContainer.java
#	src/main/java/appeng/core/AEConfig.java
#	src/main/java/appeng/fluids/client/gui/FluidLevelEmitterScreen.java
#	src/main/java/appeng/fluids/container/FluidLevelEmitterContainer.java
#	src/main/java/appeng/me/cluster/MBCalculator.java
#	src/main/java/appeng/me/cluster/implementations/CraftingCPUCalculator.java
#	src/main/java/appeng/me/cluster/implementations/QuantumCalculator.java
#	src/main/java/appeng/me/cluster/implementations/QuantumCluster.java
#	src/main/java/appeng/me/cluster/implementations/SpatialPylonCalculator.java
#	src/main/java/appeng/tile/crafting/CraftingBlockEntity.java
#	src/main/java/appeng/tile/qnb/QuantumBridgeBlockEntity.java
#	src/main/java/appeng/tile/spatial/SpatialPylonBlockEntity.java
2020-07-20 20:19:42 +02:00
Sebastian Hartte 019f570331 Pattern Rendering and other Rendering 2020-07-20 20:13:20 +02:00
Sebastian Hartte d053c9b1bc Post-Merge Fixes 2020-07-19 01:09:06 +02:00
Sebastian Hartte be4fdfed85 Merge remote-tracking branch 'origin/master' into fabric-1.16
# Conflicts:
#	src/main/java/appeng/block/spatial/SpatialPylonBlock.java
#	src/main/java/appeng/client/render/spatial/SpatialPylonBakedModel.java
#	src/main/java/appeng/core/AppEng.java
#	src/main/java/appeng/hooks/TickHandler.java
#	src/main/java/appeng/me/cluster/MBCalculator.java
#	src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java
#	src/main/java/appeng/me/cluster/implementations/QuantumCluster.java
#	src/main/java/appeng/me/cluster/implementations/SpatialPylonCluster.java
#	src/main/java/appeng/me/helpers/AENetworkProxy.java
#	src/main/java/appeng/tile/networking/CableBusBlockEntity.java
#	src/main/java/appeng/tile/networking/DenseEnergyCellBlockEntity.java
#	src/main/java/appeng/tile/qnb/QuantumBridgeBlockEntity.java
#	src/main/java/appeng/tile/spatial/SpatialPylonBlockEntity.java
#	src/main/java/appeng/util/Platform.java
2020-07-19 01:05:14 +02:00
Sebastian Hartte 19802b96e8 Rendering/Model Fixes 2020-07-18 18:44:10 +02:00
Sebastian Hartte 1e20cd8c08 Merge remote-tracking branch 'origin/master' into fabric-1.16
# Conflicts:
#	build.gradle
#	gradle.properties
#	src/api/java/appeng/api/config/Upgrades.java
#	src/api/java/appeng/api/recipes/ResolverResult.java
#	src/main/java/appeng/block/AEBaseBlockItemChargeable.java
#	src/main/java/appeng/block/crafting/CraftingStorageItem.java
#	src/main/java/appeng/block/misc/ChargerBlock.java
#	src/main/java/appeng/block/networking/CableBusBlock.java
#	src/main/java/appeng/block/storage/ChestBlock.java
#	src/main/java/appeng/block/storage/DriveSlotCellType.java
#	src/main/java/appeng/capabilities/Capabilities.java
#	src/main/java/appeng/client/me/ItemRepo.java
#	src/main/java/appeng/client/render/cablebus/FacadeBuilder.java
#	src/main/java/appeng/client/render/effects/ChargedOreFX.java
#	src/main/java/appeng/client/render/effects/CraftingFx.java
#	src/main/java/appeng/client/render/effects/EnergyFx.java
#	src/main/java/appeng/client/render/effects/LightningArcFX.java
#	src/main/java/appeng/client/render/effects/LightningFX.java
#	src/main/java/appeng/client/render/effects/MatterCannonFX.java
#	src/main/java/appeng/client/render/effects/VibrantFX.java
#	src/main/java/appeng/client/render/spatial/SpatialPylonRendering.java
#	src/main/java/appeng/client/render/tesr/DriveLedTileEntityRenderer.java
#	src/main/java/appeng/container/AEBaseContainer.java
#	src/main/java/appeng/container/implementations/CellWorkbenchContainer.java
#	src/main/java/appeng/container/implementations/MolecularAssemblerContainer.java
#	src/main/java/appeng/container/implementations/PatternTermContainer.java
#	src/main/java/appeng/container/implementations/QuartzKnifeContainer.java
#	src/main/java/appeng/core/AEConfig.java
#	src/main/java/appeng/core/AEItemGroup.java
#	src/main/java/appeng/core/Api.java
#	src/main/java/appeng/core/AppEng.java
#	src/main/java/appeng/core/Registration.java
#	src/main/java/appeng/core/api/definitions/ApiBlocks.java
#	src/main/java/appeng/core/api/definitions/ApiParts.java
#	src/main/java/appeng/core/features/registries/MovableTileRegistry.java
#	src/main/java/appeng/core/features/registries/P2PTunnelRegistry.java
#	src/main/java/appeng/core/features/registries/WirelessRegistry.java
#	src/main/java/appeng/core/features/registries/WorldGenRegistry.java
#	src/main/java/appeng/core/features/registries/cell/BasicItemCellGuiHandler.java
#	src/main/java/appeng/core/sync/BasePacketHandler.java
#	src/main/java/appeng/core/sync/packets/ClickPacket.java
#	src/main/java/appeng/core/sync/packets/PatternSlotPacket.java
#	src/main/java/appeng/crafting/CraftingTreeProcess.java
#	src/main/java/appeng/debug/ReplicatorCardItem.java
#	src/main/java/appeng/entity/ChargedQuartzEntity.java
#	src/main/java/appeng/entity/SingularityEntity.java
#	src/main/java/appeng/entity/TinyTNTPrimedEntity.java
#	src/main/java/appeng/fluids/helper/DualityFluidInterface.java
#	src/main/java/appeng/fluids/helper/FluidCellConfig.java
#	src/main/java/appeng/fluids/parts/FluidFormationPlanePart.java
#	src/main/java/appeng/fluids/parts/FluidHandlerAdapter.java
#	src/main/java/appeng/forge/data/providers/IAE2DataProvider.java
#	src/main/java/appeng/forge/data/providers/recipes/SlabStairRecipes.java
#	src/main/java/appeng/helpers/CraftingPatternDetails.java
#	src/main/java/appeng/helpers/DualityInterface.java
#	src/main/java/appeng/helpers/WirelessTerminalGuiObject.java
#	src/main/java/appeng/hooks/IBlockTool.java
#	src/main/java/appeng/hooks/TickHandler.java
#	src/main/java/appeng/integration/modules/jei/CondenserCategory.java
#	src/main/java/appeng/integration/modules/jei/JEIPlugin.java
#	src/main/java/appeng/items/misc/EncodedPatternItem.java
#	src/main/java/appeng/items/parts/FacadeItem.java
#	src/main/java/appeng/items/parts/PartItem.java
#	src/main/java/appeng/items/storage/AbstractStorageCell.java
#	src/main/java/appeng/items/storage/CreativeStorageCellItem.java
#	src/main/java/appeng/items/tools/powered/ColorApplicatorItem.java
#	src/main/java/appeng/items/tools/powered/EntropyManipulatorItem.java
#	src/main/java/appeng/items/tools/powered/MatterCannonItem.java
#	src/main/java/appeng/items/tools/powered/WirelessTerminalItem.java
#	src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java
#	src/main/java/appeng/me/storage/MEMonitorIFluidHandler.java
#	src/main/java/appeng/parts/PartPlacement.java
#	src/main/java/appeng/parts/automation/FormationPlanePart.java
#	src/main/java/appeng/parts/p2p/FluidP2PTunnelPart.java
#	src/main/java/appeng/parts/reporting/PatternTerminalPart.java
#	src/main/java/appeng/spatial/CachedPlane.java
#	src/main/java/appeng/spatial/StorageChunkGenerator.java
#	src/main/java/appeng/spatial/StorageHelper.java
#	src/main/java/appeng/tile/crafting/CraftingBlockEntity.java
#	src/main/java/appeng/tile/crafting/CraftingStorageBlockEntity.java
#	src/main/java/appeng/tile/crafting/MolecularAssemblerBlockEntity.java
#	src/main/java/appeng/tile/inventory/AppEngInternalAEInventory.java
#	src/main/java/appeng/tile/misc/ChargerBlockEntity.java
#	src/main/java/appeng/tile/misc/CondenserBlockEntity.java
#	src/main/java/appeng/tile/misc/InscriberBlockEntity.java
#	src/main/java/appeng/tile/misc/InscriberRecipes.java
#	src/main/java/appeng/tile/qnb/QuantumBridgeBlockEntity.java
#	src/main/java/appeng/tile/storage/ChestBlockEntity.java
#	src/main/java/appeng/tile/storage/DriveBlockEntity.java
#	src/main/java/appeng/util/Platform.java
#	src/main/java/team/chisel/ctm/api/IFacade.java
#	src/main/resources/assets/appliedenergistics2/models/block/chest/base.json
#	src/unported/java/appeng/client/render/FacadeItemModel.java
#	src/unported/java/appeng/client/render/model/DriveBakedModel.java
#	src/unported/java/appeng/client/render/model/DriveModel.java
#	src/unported/java/appeng/core/PluginLoader.java
2020-07-18 01:45:43 +02:00
Sebastian Hartte 15d4583c56 Working on Spatial Stuff. 2020-07-17 22:38:27 +02:00
Sebastian Hartte 0c5c23e9ff Restored more P2P 2020-07-14 00:12:27 +02:00
Sebastian Hartte 832d4bb527 REI search integration. 2020-07-13 13:11:32 +02:00
Sebastian Hartte 62b02d3faf REI integration 2020-07-13 13:02:11 +02:00
Sebastian Hartte 006316603d Tags 2020-07-12 16:54:39 +02:00
Sebastian Hartte 1bd4bd00a8 Worldgen, Configs 2020-07-09 23:56:54 +02:00
Sebastian Hartte 2944873431 First Working Worldgen of Meteorites 2020-07-07 18:55:56 +02:00
Sebastian Hartte f8ee4bb1f2 Meteorite 2020-07-07 02:13:10 +02:00
Sebastian Hartte 5eece068ba Worldgen, Compass (temp) 2020-07-07 01:55:15 +02:00
Sebastian Hartte 9220ca0048 Added HWYLA 2020-07-05 16:50:39 +02:00
Sebastian Hartte 1478e4c378 Lots more moved 2020-07-04 21:03:30 +02:00
Sebastian Hartte 5982f094ec ME Chest 2020-07-02 22:34:21 +02:00
Sebastian Hartte eb93ffc8d8 Block Colors Registration,
fixing... schtuff.
2020-07-02 19:01:04 +02:00
Sebastian Hartte 7b21aa2b07 Merge remote-tracking branch 'origin/master' into fabric-1.16
# Conflicts:
#	src/main/java/appeng/core/api/definitions/ApiParts.java
#	src/unported/java/appeng/core/api/definitions/PartType.java
2020-07-02 13:50:28 +02:00
Sebastian Hartte fee1c18afe Merge remote-tracking branch 'origin/master' into fabric-1.16
# Conflicts:
#	gradle.properties
#	src/main/java/appeng/block/AEBaseBlock.java
#	src/main/java/appeng/block/misc/QuartzFixtureBlock.java
#	src/main/java/appeng/block/misc/TinyTNTBlock.java
#	src/main/java/appeng/block/networking/CableBusBlock.java
#	src/main/java/appeng/helpers/AEMaterials.java
#	src/unported/java/appeng/block/misc/ChargerBlock.java
#	src/unported/java/appeng/block/networking/CreativeEnergyCellBlock.java
#	src/unported/java/appeng/block/networking/EnergyCellBlock.java
#	src/unported/java/appeng/block/networking/WirelessBlock.java
#	src/unported/java/appeng/block/paint/PaintSplotchesBlock.java
#	src/unported/java/appeng/block/qnb/QuantumLinkChamberBlock.java
#	src/unported/java/appeng/block/spatial/SpatialPylonBlock.java
#	src/unported/java/appeng/client/render/tesr/DriveLedTileEntityRenderer.java
#	src/unported/java/appeng/tile/storage/ChestBlockEntity.java
2020-07-02 12:26:38 +02:00
Sebastian Hartte 295e720d37 Merged more parts 2020-07-02 12:19:41 +02:00
Sebastian Hartte 75234415ac Cables work 2020-07-02 10:16:03 +02:00
Sebastian Hartte c7b1ab756b Fix WorldData initialization 2020-07-02 01:28:02 +02:00
Sebastian Hartte 2dd2b5d034 Added test dependency back. 2020-07-02 01:18:40 +02:00
Sebastian Hartte dd9346e53f Merge remote-tracking branch 'origin/master' into fabric-1.16
# Conflicts:
#	src/main/java/appeng/block/AEBaseBlockItem.java
#	src/main/java/appeng/core/AEConfig.java
#	src/main/java/appeng/parts/PartPlacement.java
2020-07-02 01:18:31 +02:00
Sebastian Hartte 3b4302583d Restore grid IGridProxyable 2020-07-02 01:13:26 +02:00
Sebastian Hartte 3dd9aa09d3 Fixed Gradle source sets. 2020-07-02 00:20:04 +02:00
Sebastian Hartte 2642ced86b Moving to source sets 2020-07-01 23:36:51 +02:00
Sebastian Hartte f2e3d81fd7 Working in part placement 2020-07-01 21:27:37 +02:00
Sebastian Hartte 8e031ca8d6 Merge remote-tracking branch 'origin/cleanups' into fabric-1.16
# Conflicts:
#	api/src/main/java/appeng/api/implementations/items/IItemGroup.java
#	core/src/main/java/appeng/items/materials/MaterialItem.java
#	src/main/java/appeng/core/Registration.java
#	src/main/java/appeng/core/api/definitions/ApiParts.java
#	src/main/java/appeng/items/parts/ColoredPartItem.java
#	src/main/java/appeng/items/parts/PartItem.java
#	src/main/java/appeng/items/parts/PartModelsHelper.java
#	src/main/java/appeng/items/parts/PartType.java
#	src/main/java/appeng/items/tools/powered/PortableCellItem.java
2020-07-01 01:41:54 +02:00
Sebastian Hartte 996d387525 More moves 2020-07-01 01:39:50 +02:00
Sebastian Hartte 1cda087c03 Merge remote-tracking branch 'origin/master' into fabric-1.16 2020-07-01 01:31:20 +02:00
Sebastian Hartte 007c7ceb56 Moved more parts of ME over 2020-07-01 01:04:53 +02:00
Sebastian Hartte 529d03fa9e Added Quartz Tools and Quartz Knife Recipes 2020-06-30 15:33:53 +02:00
Sebastian Hartte c0a4762ffc Fixed TNT and basic networking. 2020-06-30 11:30:04 +02:00
Sebastian Hartte 3337eb9ae3 Merge remote-tracking branch 'origin/master' into fabric-1.16
# Conflicts:
#	build.gradle
#	core/src/main/java/appeng/block/AEBaseBlock.java
#	core/src/main/java/appeng/block/misc/TinyTNTBlock.java
#	core/src/main/java/appeng/entity/TinyTNTPrimedRenderer.java
#	core/src/main/java/appeng/fluids/util/AEFluidStack.java
#	src/main/java/appeng/core/AEConfig.java
#	src/main/java/appeng/core/api/definitions/ApiItems.java
#	src/main/java/appeng/debug/EnergyGeneratorBlockEntity.java
#	src/main/java/appeng/entity/TinyTNTPrimedEntity.java
#	src/main/java/appeng/tile/storage/DriveBlockEntity.java
2020-06-29 21:35:34 +02:00
Sebastian Hartte ca104912d6 More fixes 2020-06-29 21:23:50 +02:00
Sebastian Hartte 0d63f560d3 More moves and compilation fixes 2020-06-29 02:15:31 +02:00
Sebastian Hartte 3df93fc66d Moving 2020-06-28 16:18:11 +02:00
Sebastian Hartte f5412152a4 Utils ported 2020-06-28 15:47:44 +02:00
Sebastian Hartte 46955643b9 Utils ported 2020-06-28 13:28:14 +02:00
Sebastian Hartte fee5b7fdfc Utils ported 2020-06-28 03:41:44 +02:00
Sebastian Hartte 7c28a71e10 Moving code around 2020-06-28 00:51:00 +02:00
Sebastian Hartte 7f049e099d Moving code around 2020-06-28 00:48:21 +02:00
Sebastian Hartte 37ce6b262e Fabric port in progress 2020-06-28 00:45:33 +02:00
Sebastian Hartte b79cd732b2 Fabric port in progress 2020-06-27 23:25:38 +02:00
Sebastian Hartte 80fbb58d4f API compiles 2020-06-27 18:09:44 +02:00
Sebastian Hartte ba71a82288 Migrations 2020-06-27 16:18:20 +02:00
Sebastian Hartte d638d083c2 Moved API sources 2020-06-27 15:42:51 +02:00
Sebastian Hartte 136c204421 Fixup logo and remove demo entrypoint 2020-06-27 15:40:10 +02:00
Sebastian Hartte 6cda95b979 Moved assets 2020-06-27 15:31:53 +02:00
Sebastian Hartte 000cb555e3 Adjusted gitignore
Cross-Module dependency
2020-06-27 15:25:47 +02:00
Sebastian Hartte 82af7e6dde Start of Fabric Setup 2020-06-27 15:23:15 +02:00
1327 changed files with 23117 additions and 24124 deletions
+5 -9
View File
@@ -21,13 +21,9 @@ jobs:
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
- name: Clean gradle
run: ./gradlew clean --no-daemon --max-workers 1
- name: Validate no assets
run: test ! -d ./src/generated
- name: Generate assets
run: ./gradlew runData --no-daemon --max-workers 1
- name: Validate assets
run: test -d ./src/generated -a -f ./src/generated/resources/.cache/cache
- name: Build with Gradle
run: ./gradlew build --no-daemon --max-workers 1
run: ./gradlew build
- uses: actions/upload-artifact@v2
with:
name: dist
path: build/libs/
+15 -41
View File
@@ -1,26 +1,19 @@
name: 'Release'
on:
release:
types: [published]
create:
tags:
- fabric/v*
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Validate semver
- name: Export current tag as environment variable
env:
TAG: ${{ github.event.release.tag_name }}
run: |
echo $TAG | grep -oP '^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$'
echo "::set-env name=RELEASE::${TAG:1}"
- name: Export keystore
env:
KEY_STORE: ${{ secrets.KEY_STORE }}
run: |
echo $KEY_STORE | base64 -d > $HOME/keystore.jks
echo "::set-env name=KEY_STORE_FILE::$HOME/keystore.jks"
TAG: ${{ github.event.ref }}
run: echo "::set-env name=TAG::${TAG}"
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
@@ -30,25 +23,15 @@ jobs:
run: chmod +x gradlew
- name: Validate no assets
run: test ! -d ./src/generated
- name: Generate assets
run: ./gradlew runData --no-daemon --max-workers 1
- name: Validate assets
run: test -d ./src/generated -a -f ./src/generated/resources/.cache/cache
- name: Build with Gradle
env:
KEY_STORE_PASS: ${{ secrets.KEY_STORE_PASS }}
KEY_STORE_ALIAS: ${{ secrets.KEY_STORE_ALIAS }}
KEY_STORE_KEY_PASS: ${{ secrets.KEY_STORE_KEY_PASS }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./gradlew build --no-daemon --max-workers 1
- name: Upload to curseforge
env:
KEY_STORE_PASS: ${{ secrets.KEY_STORE_PASS }}
KEY_STORE_ALIAS: ${{ secrets.KEY_STORE_ALIAS }}
KEY_STORE_KEY_PASS: ${{ secrets.KEY_STORE_KEY_PASS }}
CHANGELOG: ${{ github.event.release.body }}
CURSEFORGE: ${{ secrets.CURSEFORGE }}
run: ./gradlew curseforge --no-daemon --max-workers 1
run: ./gradlew generateData build
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: dist
path: build/libs/
- name: Publish to github packages
env:
KEY_STORE_PASS: ${{ secrets.KEY_STORE_PASS }}
@@ -64,17 +47,8 @@ jobs:
MODMAVEN_USER: ${{ secrets.MODMAVEN_USER }}
MODMAVEN_PASSWORD: ${{ secrets.MODMAVEN_PASSWORD }}
run: ./gradlew publishMavenPublicationToModmavenRepository --no-daemon --max-workers 1
- name: Prepare artifact metadata
id: prepare_artifact_metadata
run: |
echo ::set-output name=ARTIFACT_PATH::./build/libs/appliedenergistics2-${RELEASE}.jar
echo ::set-output name=ARTIFACT_NAME::appliedenergistics2-${RELEASE}.jar
- name: Upload Release Artifact
uses: actions/upload-release-asset@v1.0.1
- name: Upload to curseforge
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ${{ steps.prepare_artifact_metadata.outputs.ARTIFACT_PATH }}
asset_name: ${{ steps.prepare_artifact_metadata.outputs.ARTIFACT_NAME }}
asset_content_type: application/zip
CURSEFORGE: ${{ secrets.CURSEFORGE }}
run: ./gradlew curseforge
+129 -105
View File
@@ -16,40 +16,41 @@
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
*/
buildscript {
repositories {
maven { url = 'https://files.minecraftforge.net/maven' }
maven { url = 'https://repo.spongepowered.org/maven' }
jcenter()
mavenCentral()
}
dependencies {
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT'
}
}
plugins {
id "maven-publish"
id "com.diffplug.gradle.spotless" version "4.3.0"
id "com.matthewprenger.cursegradle" version "1.4.0"
id "org.sonarqube" version "2.8"
id "jacoco"
id 'java'
id 'fabric-loom'
id 'maven-publish'
id "com.diffplug.gradle.spotless" version "4.3.0"
id "com.matthewprenger.cursegradle" version "1.4.0"
id "org.sonarqube" version "2.8"
id "jacoco"
}
apply plugin: 'net.minecraftforge.gradle'
apply plugin: 'org.spongepowered.mixin'
apply plugin: "eclipse"
repositories {
mavenLocal()
jcenter()
mavenCentral()
maven { url = "https://maven.fabricmc.net/" }
maven {
name = "BuildCraft"
url = "https://mod-buildcraft.com/maven"
content {
includeGroup "alexiil.mc.lib"
}
}
maven {
name = "HYWLA"
url = "https://maven.tehnut.info/"
content {
includeGroup "mcp.mobius.waila"
}
}
}
sourceCompatibility = targetCompatibility = JavaVersion.VERSION_1_8
compileJava {
sourceCompatibility = targetCompatibility = JavaVersion.VERSION_1_8
options.deprecation = false
}
// ensure everything uses UTF-8 and not some random codepage chosen by gradle
@@ -59,8 +60,6 @@ tasks.withType(JavaCompile) {
}
// Create version number
version = version_major + "." + version_minor + "." + version_patch
ext.pr = System.getenv('PR_NUMBER') ?: ""
if (ext.pr) {
version = version + "+pr." + ext.pr
@@ -71,12 +70,17 @@ if (ext.branch) {
version = version + "+branch." + ext.branch
}
ext.release = System.getenv('RELEASE') ?: ""
if (ext.release) {
version = ext.release
ext.tag = System.getenv('TAG') ?: ""
if (ext.tag && ext.tag.startsWith("fabric/v")) {
version = ext.tag.substring("fabric/v".length())
// Validate that the rest is a semver version
if (version ==~ /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/) {
println("::set-env name=VERSION::${version}")
} else {
throw new GradleException("Invalid semver: $version")
}
}
// Maven group and artifact name
group = artifact_group
archivesBaseName = artifact_basename
@@ -90,110 +94,111 @@ sourceSets {
srcDir 'src/generated/resources'
}
}
datagen {
compileClasspath += sourceSets.api.output
runtimeClasspath += sourceSets.api.output
compileClasspath += sourceSets.main.output
runtimeClasspath += sourceSets.main.output
}
test {
compileClasspath += sourceSets.api.output
runtimeClasspath += sourceSets.api.output
java {
exclude '**/*'
}
}
siteexport {
compileClasspath += sourceSets.api.output
runtimeClasspath += sourceSets.api.output
compileClasspath += sourceSets.main.output
runtimeClasspath += sourceSets.main.output
}
}
configurations {
apiCompile.extendsFrom(compile)
apiCompile.extendsFrom(compileClasspath)
datagenCompile.extendsFrom(compileClasspath)
siteexportCompile.extendsFrom(compileClasspath)
siteexportRuntime.extendsFrom(runtimeClasspath)
}
apply from: 'gradle/scripts/dependencies.gradle'
apply from: 'gradle/scripts/spotless.gradle'
minecraft {
mappings channel: "snapshot", version: project.mcp_mappings
accessWidener "src/main/resources/appliedenergistics2.accesswidener"
}
accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
dependencies {
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
runs {
client {
property 'forge.logging.console.level', 'debug'
workingDirectory project.file('run')
property "mixin.debug.export", "true"
mods {
appliedenergistics2 {
source sourceSets.main
source sourceSets.api
}
}
}
server {
property 'forge.logging.console.level', 'debug'
workingDirectory project.file('run')
mods {
appliedenergistics2 {
source sourceSets.main
source sourceSets.api
}
}
}
data {
property 'forge.logging.console.level', 'debug'
workingDirectory project.file('run')
args '--mod', 'appliedenergistics2', '--all', '--output', file('src/generated/resources/')
mods {
appliedenergistics2 {
source sourceSets.main
source sourceSets.api
}
}
}
//Fabric api
modImplementation "net.fabricmc.fabric-api:fabric-api:${fabric_version}"
modImplementation "alexiil.mc.lib:libblockattributes-core:${libblockattributes_version}"
modImplementation "alexiil.mc.lib:libblockattributes-items:${libblockattributes_version}"
modImplementation "alexiil.mc.lib:libblockattributes-fluids:${libblockattributes_version}"
include "alexiil.mc.lib:libblockattributes-core:${libblockattributes_version}"
include "alexiil.mc.lib:libblockattributes-items:${libblockattributes_version}"
include "alexiil.mc.lib:libblockattributes-fluids:${libblockattributes_version}"
// Energy API
modApi "teamreborn:energy:${tr_energy_version}"
include "teamreborn:energy:${tr_energy_version}"
modCompileOnly("me.shedaniel:RoughlyEnoughItems:5.0.2-unstable") {
exclude group: "net.fabricmc.fabric-api"
}
}
mixin {
add sourceSets.main, "appliedenergistics2.mixins.refmap.json"
}
jar {
manifest {
attributes([
"MixinConfigs": "appliedenergistics2.mixins.json"
])
modCompileOnly("mcp.mobius.waila:Hwyla:1.16.1-1.9.22-75") {
exclude group: "net.fabricmc.fabric-api"
}
modRuntime("me.shedaniel:RoughlyEnoughItems:5.0.2-unstable") {
exclude group: "net.fabricmc.fabric-api"
}
modRuntime("TechReborn:TechReborn-1.16:3.5.1+build.101") {
exclude group: "net.fabricmc.fabric-api"
}
// modRuntimeOnly "mcp.mobius.waila:Hwyla:1.16.1-1.9.22-75"
implementation 'com.google.code.findbugs:jsr305:3.0.2'
// unit test dependencies
testCompile "junit:junit:4.13"
}
def signProps = [:]
if (System.getenv("KEY_STORE_FILE")) {
signProps['keyStore'] = System.getenv("KEY_STORE_FILE")
signProps['storePass'] = System.getenv("KEY_STORE_PASS")
signProps['alias'] = System.getenv("KEY_STORE_ALIAS")
signProps['keyPass'] = System.getenv("KEY_STORE_KEY_PASS")
}
processResources {
inputs.property "version", project.version
task signJar(type: net.minecraftforge.gradle.common.task.SignJar, dependsOn: 'reobfJar') {
onlyIf { !signProps.isEmpty() }
from(sourceSets.main.resources.srcDirs) {
include "fabric.mod.json"
expand "version": project.version
}
if (!signProps.isEmpty()) {
keyStore = signProps.keyStore
alias = signProps.alias
storePass = signProps.storePass
keyPass = signProps.keyPass
inputFile = jar.archivePath
outputFile = jar.archivePath
from(sourceSets.main.resources.srcDirs) {
exclude "fabric.mod.json"
}
}
apply from: 'gradle/scripts/artifacts.gradle'
apply from: 'gradle/scripts/curseforge.gradle'
// configure the maven publication
publishing {
publications {
maven(MavenPublication) {
groupId = project.group
artifactId = project.archivesBaseName
version = project.version
from components.java
artifact sourcesJar
artifact javadocJar
artifact apiJar
if (!version.endsWith("-SNAPSHOT")) {
publications {
maven(MavenPublication) {
groupId = project.group
artifactId = 'appliedenergistics2-fabric'
version = project.version
// add all the jars that should be included when publishing to maven
artifact(remapJar) {
builtBy remapJar
}
artifact(sourcesJar) {
builtBy remapSourcesJar
}
artifact javadocJar
artifact apiJar
}
}
}
repositories {
@@ -214,4 +219,23 @@ publishing {
url = "https://modmaven.k-4u.nl/artifactory/local-releases/"
}
}
}
import net.fabricmc.loom.task.RunClientTask;
task generateData(type: RunClientTask, dependsOn: downloadAssets, group: "ae2", description: "Generates various JSON assets for the mod") {
classpath = configurations.runtimeClasspath
classpath sourceSets.api.output
classpath sourceSets.main.output
classpath sourceSets.datagen.output
systemProperty "appeng.generateData", "true"
}
build.dependsOn generateData
task runSiteExport(type: RunClientTask, dependsOn: downloadAssets, group: "ae2", description: "Export game assets for the website") {
classpath = configurations.runtimeClasspath
classpath sourceSets.api.output
classpath sourceSets.main.output
classpath sourceSets.siteexport.output
}
+22 -26
View File
@@ -1,36 +1,32 @@
version_major=0
version_minor=0
version_patch=0
version=0.0.0-SNAPSHOT
artifact_group=appeng
artifact_basename=appliedenergistics2
artifact_basename=appliedenergistics2-fabric
kotlin.code.style=official
org.gradle.jvmargs=-Xmx2G
# Fabric Properties
# Check these on https://modmuss50.me/fabric.html
#########################################################
# Minecraft Versions #
#########################################################
minecraft_release=1.16
minecraft_version=1.16.2
mcp_mappings=20200723-1.16.1
forge_version=33.0.5
yarn_mappings=1.16.2+build.6
loader_version=0.9.1+build.205
#########################################################
# Provided APIs #
#########################################################
jei_minecraft_version=1.16.2
jei_version=7.1.1.15
top_version=3.0.3-beta-6
hwyla_version=1.10.8-B72_1.15.2
ctm_version=MC1.15.2-1.1.0.9
#Fabric api
fabric_version=0.17.2+build.396-1.16
loom_version=0.4-SNAPSHOT
# Kotlin
kotlin_version=1.3.61
fabric_kotlin_version=1.3.61+build.1
# Dependencies
libblockattributes_version=0.8.0-pre.19
tr_energy_version=0.1.0
#########################################################
# Deployment #
#########################################################
website_version=1.16.2
curse_versions=1.16.2
curseforge_project=223794
#########################################################
# Gradle #
#########################################################
# Various tasks like runData will fail when run as daemon
org.gradle.daemon=false
+8 -11
View File
@@ -21,8 +21,7 @@ processResources {
}
jar {
finalizedBy 'reobfJar'
finalizedBy 'signJar'
finalizedBy 'remapJar'
from sourceSets.main.output.classesDirs
from sourceSets.api.output.classesDirs
@@ -57,25 +56,23 @@ task javadocJar(type: Jar, dependsOn: javadocs) {
from javadoc.destinationDir
}
task sourcesJar(type: Jar) {
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this task, sources will not be generated.
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = "sources"
from sourceSets.main.allJava
from sourceSets.api.allJava
from sourceSets.main.allSource
from sourceSets.api.allSource
}
task apiJar(type: Jar) {
classifier = "api"
from sourceSets.api.output
include "appeng/api/**"
// TODO: when FG bug is fixed, remove allJava from the api jar.
// https://github.com/MinecraftForge/ForgeGradle/issues/369
// Gradle should be able to pull them from the -sources jar.
from sourceSets.api.allJava
}
artifacts {
archives javadocJar
archives sourcesJar
archives apiJar
}
}
+13 -2
View File
@@ -26,7 +26,7 @@ if (isAlpha) {
cfReleaseType = "beta"
}
if (System.getenv("CURSEFORGE")) {
if (System.getenv("CURSEFORGE") && !version.endsWith("-SNAPSHOT")) {
curseforge {
apiKey = System.getenv("CURSEFORGE")
project {
@@ -34,6 +34,17 @@ if (System.getenv("CURSEFORGE")) {
changelogType = "markdown"
changelog = System.getenv("CHANGELOG") ?: "Please visit our [releases](https://github.com/AppliedEnergistics/Applied-Energistics-2/releases) for a changelog"
releaseType = cfReleaseType
addGameVersion project.minecraft_version
addGameVersion "Fabric"
mainArtifact(remapJar.archiveFile) {
displayName = "${project.version} [FABRIC]"
}
}
options {
forgeGradleIntegration = false
}
afterEvaluate {
tasks.getByName("curseforge${project.curseforge_project}").dependsOn remapJar
}
}
}
}
Binary file not shown.
+1 -1
View File
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Vendored
+31 -20
View File
@@ -1,5 +1,21 @@
#!/usr/bin/env sh
#
# Copyright 2015 the original author or authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
##
## Gradle start up script for UN*X
@@ -28,7 +44,7 @@ APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
@@ -109,8 +125,8 @@ if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
@@ -138,19 +154,19 @@ if $cygwin ; then
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
i=`expr $i + 1`
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
@@ -159,14 +175,9 @@ save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=$(save "$@")
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi
exec "$JAVACMD" "$@"
Vendored
+20 -1
View File
@@ -1,3 +1,19 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@@ -13,8 +29,11 @@ if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
+16
View File
@@ -0,0 +1,16 @@
pluginManagement {
repositories {
jcenter()
maven {
name = "Fabric"
url = "https://maven.fabricmc.net/"
}
gradlePluginPortal()
}
plugins {
id "fabric-loom" version loom_version
id "org.jetbrains.kotlin.jvm" version kotlin_version
}
}
+3 -3
View File
@@ -27,11 +27,11 @@ import java.lang.annotation.Target;
/**
* Use this annotation on a class in your Mod to have it instantiated during the
* initialization phase of Applied Energistics.
*
* <p>
* The class also needs to implement {@link IAEAddon}.
*
* <p>
* AE expects your class to have a single constructor without any parameters.
*
* <p>
* This is the only way to get access to the public {@link IAppEngApi} instance.
*/
@Target(ElementType.TYPE)
+3 -8
View File
@@ -23,26 +23,21 @@
package appeng.api;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
/**
* Every AE2 addon requiring access to {@link IAppEngApi}, needs to provide at
* least one class implementing this interface.
*
* <p>
* Further it requires the class to be annotated with {@link AEAddon}.
*
*/
public interface IAEAddon {
/**
* This gets called once the API is successfully constructed and ready to be
* used.
*
* For now this happens during {@link FMLCommonSetupEvent}.
*
* <p>
* Each addon is responsible to maintain a reference to {@link IAppEngApi} for
* future use. Otherwise there is no alternative to access it later.
*
*
* @param api The API instance when ready.
*/
void onAPIAvailable(IAppEngApi api);
@@ -28,9 +28,8 @@ import java.util.Map;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.minecraft.client.renderer.model.ModelBakery;
import net.minecraft.item.Item;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Identifier;
/**
* A registry for 3D models used to render storage cells in the world, when they
@@ -40,49 +39,51 @@ public interface ICellModelRegistry {
/**
* Register a new model for a storage cell item.
*
*
* <p>
* You are responsible for ensuring that the given model is actually loaded by
* the game. See
* {@see net.minecraftforge.client.model.ModelLoader#addSpecialModel}.
*
* This method only maps an {@link Item} to a {@link ResourceLocation} which can
* be looked up from the {@link ModelBakery}. No validation about missing models
* will be done.
*
* <p>
* This method only maps an {@link Item} to a {@link Identifier} which can be
* looked up from the
* {@link net.minecraft.client.render.model.BakedModelManager}. No validation
* about missing models will be done.
* <p>
* Will throw an exception in case a model is already registered for an item.
*
* <p>
* For examples look at our cell part models within the drive model directory.
*
*
* @param item The cell item
* @param model The {@link ResourceLocation} representing the model.
* @param model The {@link net.minecraft.util.Identifier} representing the
* model.
* @return
*/
void registerModel(@Nonnull Item item, @Nonnull ResourceLocation model);
void registerModel(@Nonnull Item item, @Nonnull Identifier model);
/**
* The {@link ResourceLocation} of the model used to render the given storage
* cell {@link Item} when inserted into a drive or similar.
*
* The {@link Identifier} of the model used to render the given storage cell
* {@link Item} when inserted into a drive or similar.
*
* @param item
* @return null, if no model is registered.
*/
@Nullable
ResourceLocation model(@Nonnull Item item);
Identifier model(@Nonnull Item item);
/**
* An unmodifiable map of all registered mappings.
*
*
* @return
*/
@Nonnull
Map<Item, ResourceLocation> models();
Map<Item, Identifier> models();
/**
* Returns the default model, which can be used when no explicit model is
* registered.
*/
@Nonnull
ResourceLocation getDefaultModel();
Identifier getDefaultModel();
}
@@ -25,7 +25,7 @@ package appeng.api.client;
import java.util.List;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.text.Text;
import appeng.api.storage.cells.ICellInventoryHandler;
import appeng.api.storage.data.IAEStack;
@@ -37,11 +37,11 @@ public interface IClientHelper {
* @param handler Cell handler.
* @param lines List of lines to add to.
*/
<T extends IAEStack<T>> void addCellInformation(ICellInventoryHandler<T> handler, List<ITextComponent> lines);
<T extends IAEStack<T>> void addCellInformation(ICellInventoryHandler<T> handler, List<Text> lines);
/**
* A helper to work with clientside related tasks for cells.
*
*
* @return
*/
ICellModelRegistry cells();
+2 -13
View File
@@ -23,26 +23,15 @@
package appeng.api.config;
import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction;
public enum Actionable {
/**
* Perform the intended action.
*/
MODULATE(FluidAction.EXECUTE),
MODULATE,
/**
* Pretend to perform the action.
*/
SIMULATE(FluidAction.SIMULATE);
SIMULATE
private final FluidAction fluidAction;
Actionable(FluidAction fluidAction) {
this.fluidAction = fluidAction;
}
public FluidAction getFluidAction() {
return fluidAction;
}
}
+20 -11
View File
@@ -23,46 +23,55 @@
package appeng.api.config;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
public enum PowerUnits {
AE("gui.appliedenergistics2.units.appliedenergstics"), // Native Units - AE Energy
EU("gui.appliedenergistics2.units.ic2"), // IndustrialCraft 2 - Energy Units
RF("gui.appliedenergistics2.units.rf"); // RF - Redstone Flux
AE("gui.appliedenergistics2.units.appliedenergstics", "AE"), // Native Units - AE Energy
EU("gui.appliedenergistics2.units.ic2", "EU"), // IndustrialCraft 2 - Energy Units
TR("gui.appliedenergistics2.units.tr", "E"); // TR - TechReborn energy
/**
* unlocalized name for the power unit.
*/
public final String unlocalizedName;
/**
* unlocalized name for the power unit's symbol used to display values.
*/
public final String symbolName;
/**
* please do not edit this value, it is set when AE loads its config files.
*/
public double conversionRatio = 1.0;
PowerUnits(final String un) {
PowerUnits(final String un, String symbolName) {
this.unlocalizedName = un;
this.symbolName = symbolName;
}
/**
* do power conversion using AE's conversion rates.
*
* <p>
* Example: PowerUnits.EU.convertTo( PowerUnits.AE, 32 );
*
* <p>
* will normally returns 64, as it will convert the EU, to AE with AE's power
* settings.
*
* @param target target power unit
* @param value value
*
* @return value converted to target units, from this units.
*/
public double convertTo(final PowerUnits target, final double value) {
return (value * this.conversionRatio) / target.conversionRatio;
}
public ITextComponent textComponent() {
return new TranslationTextComponent(unlocalizedName);
public Text textComponent() {
return new TranslatableText(unlocalizedName);
}
public String getSymbolName() {
return symbolName;
}
}
@@ -25,6 +25,9 @@ package appeng.api.config;
import java.util.Locale;
import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
/**
* Represent the security systems basic permissions, these are not for
* anti-griefing, they are part of the mod as a gameplay feature.
@@ -66,7 +69,16 @@ public enum SecurityPermissions {
return this.translationKey + ".name";
}
public Text nameText() {
return new TranslatableText(getTranslatedName());
}
public String getTranslatedTip() {
return this.translationKey + ".tip";
}
public Text tooltipText() {
return new TranslatableText(getTranslatedTip());
}
}
+1 -1
View File
@@ -36,7 +36,7 @@ public enum Settings {
CONDENSER_OUTPUT(EnumSet.allOf(CondenserOutput.class)),
POWER_UNITS(EnumSet.allOf(PowerUnits.class)),
POWER_UNITS(EnumSet.of(PowerUnits.AE, PowerUnits.TR)),
ACCESS(EnumSet.of(AccessRestriction.READ_WRITE, AccessRestriction.READ, AccessRestriction.WRITE)),
@@ -25,12 +25,8 @@ package appeng.api.config;
public enum TunnelType {
ME, // Network Tunnel
IC2_POWER, // EU Tunnel
FE_POWER, // Forge Energy tunnel
REDSTONE, // Redstone Tunnel
FLUID, // Fluid Tunnel
ITEM, // Item Tunnel
LIGHT, // Light Tunnel
BUNDLED_REDSTONE, // Bundled Redstone Tunnel
COMPUTER_MESSAGE // Computer Message Tunnel
}
+18 -15
View File
@@ -33,12 +33,14 @@ import javax.annotation.Nullable;
import com.google.common.base.Preconditions;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.block.Block;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.util.IItemProvider;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.item.ItemConvertible;
import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
public enum Upgrades {
/**
@@ -53,7 +55,7 @@ public enum Upgrades {
private final int tier;
private final List<Supported> supported = new ArrayList<>();
private List<ITextComponent> supportedTooltipLines;
private List<Text> supportedTooltipLines;
Upgrades(final int tier) {
this.tier = tier;
@@ -67,7 +69,7 @@ public enum Upgrades {
return this.supported;
}
public void registerItem(final IItemProvider item, final int maxSupported) {
public void registerItem(final ItemConvertible item, final int maxSupported) {
this.registerItem(item, maxSupported, null);
}
@@ -81,23 +83,24 @@ public enum Upgrades {
* the items have different maxSupported values, the highest
* will be shown.
*/
public void registerItem(final IItemProvider item, final int maxSupported, @Nullable String tooltipGroup) {
public void registerItem(final ItemConvertible item, final int maxSupported, @Nullable String tooltipGroup) {
Preconditions.checkNotNull(item);
this.supported.add(new Supported(item.asItem(), maxSupported, tooltipGroup));
supportedTooltipLines = null; // Reset tooltip
}
public List<ITextComponent> getTooltipLines() {
@Environment(EnvType.CLIENT)
public List<Text> getTooltipLines() {
if (supportedTooltipLines == null) {
supported.sort(Comparator.comparingInt(o -> o.maxCount));
supportedTooltipLines = new ArrayList<>(supported.size());
// Use a separate set because the final text will include numbers
Set<ITextComponent> namesAdded = new HashSet<>();
Set<Text> namesAdded = new HashSet<>();
for (int i = 0; i < supported.size(); i++) {
Supported supported = this.supported.get(i);
ITextComponent name = supported.item.getName();
Text name = supported.item.getName();
// If the group was already added by a previous item, skip this
if (supported.getTooltipGroup() != null && namesAdded.contains(supported.getTooltipGroup())) {
@@ -108,7 +111,7 @@ public enum Upgrades {
// instead
if (supported.getTooltipGroup() != null) {
for (int j = i + 1; j < this.supported.size(); j++) {
ITextComponent otherGroup = this.supported.get(j).getTooltipGroup();
Text otherGroup = this.supported.get(j).getTooltipGroup();
if (supported.getTooltipGroup().equals(otherGroup)) {
name = supported.getTooltipGroup();
break;
@@ -119,7 +122,7 @@ public enum Upgrades {
if (namesAdded.add(name)) {
// append the supported count only if its > 1
if (supported.maxCount > 1) {
name = name.deepCopy().appendString(" (" + supported.maxCount + ")");
name = name.copy().append(" (" + supported.maxCount + ")");
}
supportedTooltipLines.add(name);
}
@@ -143,8 +146,8 @@ public enum Upgrades {
public Supported(Item item, int maxCount, @Nullable String tooltipGroup) {
this.item = item;
if (item.getItem() instanceof BlockItem) {
this.block = ((BlockItem) item.getItem()).getBlock();
if (item instanceof BlockItem) {
this.block = ((BlockItem) item).getBlock();
} else {
this.block = null;
}
@@ -164,8 +167,8 @@ public enum Upgrades {
return item != null && this.item == item;
}
public ITextComponent getTooltipGroup() {
return this.tooltipGroup != null ? new TranslationTextComponent(this.tooltipGroup) : null;
public Text getTooltipGroup() {
return this.tooltipGroup != null ? new TranslatableText(this.tooltipGroup) : null;
}
}
@@ -27,7 +27,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.ICraftingRecipe;
import net.minecraft.recipe.CraftingRecipe;
import net.minecraft.world.World;
import appeng.api.networking.crafting.ICraftingPatternDetails;
@@ -78,7 +78,7 @@ public interface ICraftingHelper {
* @throws IllegalArgumentException If either in or out contain only empty
* ItemStacks.
*/
ItemStack encodeCraftingPattern(@Nullable ItemStack stack, ICraftingRecipe recipe, ItemStack[] in, ItemStack out,
ItemStack encodeCraftingPattern(@Nullable ItemStack stack, CraftingRecipe recipe, ItemStack[] in, ItemStack out,
boolean allowSubstitutes);
/**
@@ -98,7 +98,7 @@ public interface ICraftingHelper {
*
* @param itemStack pattern
* @param world world used to access the
* {@link net.minecraft.item.crafting.RecipeManager}.
* {@link net.minecraft.recipe.RecipeManager}.
* @param autoRecovery If true, the method will try to recover from changed
* recipe ids by searching the entire recipe manager for a
* recipe matching the inputs. If this is successful, the
@@ -23,7 +23,7 @@ import java.util.Optional;
import net.minecraft.block.Block;
import net.minecraft.item.BlockItem;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.BlockView;
public interface IBlockDefinition extends IItemDefinition {
/**
@@ -49,8 +49,7 @@ public interface IBlockDefinition extends IItemDefinition {
*
* @param world world of block
* @param pos location
*
* @return if the block is placed in the world at the specific location.
*/
boolean isSameAs(IBlockReader world, BlockPos pos);
boolean isSameAs(BlockView world, BlockPos pos);
}
@@ -32,7 +32,6 @@ public interface IComparableDefinition {
* Compare {@link ItemStack} with this
*
* @param comparableStack compared item
*
* @return true if the item stack is a matching item.
*/
boolean isSameAs(ItemStack comparableStack);
@@ -29,12 +29,12 @@ import java.util.Set;
import javax.annotation.Nonnull;
import net.minecraft.item.Item;
import net.minecraft.item.ItemConvertible;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IItemProvider;
import appeng.api.features.AEFeature;
public interface IItemDefinition extends IComparableDefinition, IItemProvider {
public interface IItemDefinition extends IComparableDefinition, ItemConvertible {
/**
* @return the unique name of the definition which will be used to register the
* underlying structure. Will never be null
@@ -71,10 +71,6 @@ public interface IParts {
IItemDefinition p2PTunnelFluids();
IItemDefinition p2PTunnelEU();
IItemDefinition p2PTunnelFE();
IItemDefinition p2PTunnelLight();
IItemDefinition cableAnchor();
@@ -20,11 +20,11 @@ package appeng.api.definitions;
import java.util.Optional;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.block.entity.BlockEntity;
public interface ITileDefinition extends IBlockDefinition {
/**
* @return the {@link TileEntity} Class if applicable.
* @return the {@link BlockEntity} Class if applicable.
*/
Optional<? extends Class<? extends TileEntity>> maybeEntity();
Optional<? extends Class<? extends BlockEntity>> maybeEntity();
}
@@ -1,6 +1,6 @@
package appeng.api.definitions;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Identifier;
// Private helper class to create AE2 resource locations
final class IdHelper {
@@ -11,8 +11,8 @@ final class IdHelper {
/**
* Creates a ResourceLocation namespaced to AE2.
*/
static ResourceLocation id(String id) {
return new ResourceLocation("appliedenergistics2", id);
static Identifier id(String id) {
return new Identifier("appliedenergistics2", id);
}
}
@@ -23,26 +23,28 @@
package appeng.api.events;
import net.minecraftforge.eventbus.api.Event;
import net.fabricmc.fabric.api.event.Event;
import net.fabricmc.fabric.api.event.EventFactory;
import appeng.api.features.ILocatable;
/**
* Input Event:
*
* <p>
* Used to Notify the Location Registry of objects, and their availability.
*/
public class LocatableEventAnnounce extends Event {
public interface LocatableEventAnnounce {
public final ILocatable target;
public final LocatableEvent change;
Event<LocatableEventAnnounce> EVENT = EventFactory.createArrayBacked(LocatableEventAnnounce.class,
listeners -> (ILocatable target, LocatableEvent change) -> {
for (LocatableEventAnnounce listener : listeners) {
listener.onLocatableAnnounce(target, change);
}
});
public LocatableEventAnnounce(final ILocatable o, final LocatableEvent ev) {
this.target = o;
this.change = ev;
}
void onLocatableAnnounce(final ILocatable target, final LocatableEvent change);
public enum LocatableEvent {
enum LocatableEvent {
/**
* Adds the locatable to the registry
*/
@@ -0,0 +1,8 @@
package appeng.api.events;
@FunctionalInterface
public interface LocatableEventCallback {
void onLocatable(LocatableEventAnnounce.LocatableEvent evt);
}
@@ -28,7 +28,7 @@ import appeng.api.networking.IGridNode;
/**
* Exception occurred because of an already existing connection between the two
* {@link IGridNode}s
*
* <p>
* Intended to signal an internal exception and not intended to be thrown by any
* 3rd party module.
*
@@ -27,10 +27,10 @@ import appeng.api.networking.IGridNode;
/**
* Exception indicating a failed connection between two {@link IGridNode}s.
*
* <p>
* Intended to signal an internal exception and not intended to be thrown by any
* 3rd party module.
*
* <p>
* See any subclass for a more specific reason.
*
* @author AlgorithmX2
@@ -25,7 +25,7 @@ package appeng.api.exceptions;
/**
* Exception due to trying to connect one or more null values.
*
* <p>
* Intended to signal an internal exception and not intended to be thrown by any
* 3rd party module.
*
@@ -25,7 +25,7 @@ package appeng.api.exceptions;
/**
* Exception due to trying to connect different security realms.
*
* <p>
* Intended to signal an internal exception and not intended to be thrown by any
* 3rd party module.
*
@@ -33,12 +33,12 @@ import appeng.api.implementations.items.IAEItemPowerStorage;
/**
* A registry to allow mapping {@link Item}s to a specific charge rate when
* being placed inside a charger.
*
* <p>
* The registry is used in favor of an additional method for
* {@link IAEItemPowerStorage} with a fixed value per item. This allows more
* flexibility for other charger like machines to choose their own values when
* needed.
*
* <p>
* There is no guarantee that this is charged per tick, it only represents the
* value per operation. By default this is one charging operation every 10 ticks
* in case of an AE2 charger.
@@ -51,7 +51,7 @@ public interface IChargerRegistry {
/**
* Fetch a charge rate for a specific item.
*
* <p>
* The specific item does not need to have a mapping registered at all. In this
* case it will use a default value of 160 AE.
*
@@ -63,7 +63,7 @@ public interface IChargerRegistry {
/**
* Register a custom charge rate for a specific item.
*
* <p>
* Capped at 16000 to avoid extracting too much energy from a network for each
* operation. This is done silently without any feedback or exception. Further
* the cap is not fixed, it can change at any time in the future should power
@@ -76,7 +76,7 @@ public interface IChargerRegistry {
/**
* Remove the custom rate for a specific item.
*
* <p>
* It will revert to the default value afterwards.
*
* @param item A {@link Item} implementing {@link IAEItemPowerStorage}.
@@ -37,7 +37,6 @@ public interface IItemComparisonProvider {
* supplied item.
*
* @param is item
*
* @return IItemComparison, or null
*/
IItemComparison getComparison(ItemStack is);
@@ -47,7 +46,6 @@ public interface IItemComparisonProvider {
* function. )
*
* @param stack item
*
* @return true, if getComparison will return a valid IItemComparison Object
*/
boolean canHandle(ItemStack stack);
@@ -32,7 +32,6 @@ public interface ILocatableRegistry {
* Gets the {@link ILocatable} with the registered serial, if available
*
* @param serial serial
*
* @return requestedObject, or null, if the object does not exist anymore
*/
ILocatable getLocatableBy(long serial);
@@ -25,7 +25,7 @@ package appeng.api.features;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Identifier;
public interface IMatterCannonAmmoRegistry {
@@ -45,13 +45,12 @@ public interface IMatterCannonAmmoRegistry {
* @param ammoTag item tag id
* @param weight atomic weight
*/
void registerAmmoTag(ResourceLocation ammoTag, double weight);
void registerAmmoTag(Identifier ammoTag, double weight);
/**
* get the penetration value for a particular ammo, 0 indicates a non-ammo.
*
* @param is ammo
*
* @return 0 or a valid penetration value.
*/
float getPenetration(ItemStack is);
@@ -31,7 +31,6 @@ public interface INetworkEncodable {
* Used to get the current key from the item.
*
* @param item item
*
* @return string key of item
*/
String getEncryptionKey(ItemStack item);
@@ -27,7 +27,8 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.capabilities.Capability;
import alexiil.mc.lib.attributes.Attribute;
import appeng.api.config.TunnelType;
@@ -48,13 +49,12 @@ public interface IP2PTunnelRegistry {
void addNewAttunement(@Nonnull String ModId, @Nullable TunnelType type);
void addNewAttunement(@Nonnull Capability<?> cap, @Nullable TunnelType type);
void addNewAttunement(@Nonnull Attribute<?> attr, @Nullable TunnelType type);
/**
* returns null if no attunement can be found.
*
* @param trigger attunement trigger
*
* @return null if no attunement can be found or attunement
*/
@Nonnull
@@ -38,21 +38,18 @@ public interface IPlayerRegistry {
/**
* @param gameProfile user game profile
*
* @return user id of a username.
*/
int getID(GameProfile gameProfile);
/**
* @param player player
*
* @return user id of a player entity.
*/
int getID(PlayerEntity player);
/**
* @param playerID to be found player id
*
* @return PlayerEntity, or null if the player could not be found.
*/
@Nullable
@@ -35,7 +35,6 @@ public interface IWirelessTermHandler extends INetworkEncodable {
/**
* @param is wireless terminal
*
* @return true, if usePower, hasPower, etc... can be called for the provided
* item
*/
@@ -47,7 +46,6 @@ public interface IWirelessTermHandler extends INetworkEncodable {
* @param amount is in AE units ( 5 per MJ ), if you return false, the item
* should be dead and return false for hasPower
* @param is wireless terminal
*
* @return true if wireless terminal uses power
*/
boolean usePower(PlayerEntity player, double amount, ItemStack is);
@@ -56,7 +54,6 @@ public interface IWirelessTermHandler extends INetworkEncodable {
* gets the power status of the item.
*
* @param is wireless terminal
*
* @return returns true if there is any power left.
*/
boolean hasPower(PlayerEntity player, double amount, ItemStack is);
@@ -65,7 +62,6 @@ public interface IWirelessTermHandler extends INetworkEncodable {
* Return the config manager for the wireless terminal.
*
* @param is wireless terminal
*
* @return config manager of wireless terminal
*/
IConfigManager getConfigManager(ItemStack is);
@@ -26,7 +26,7 @@ package appeng.api.features;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Hand;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.BlockView;
/**
* Registration record for a Custom Cell handler.
@@ -42,7 +42,6 @@ public interface IWirelessTermRegistry {
/**
* @param is item which might have a handler
*
* @return true if there is a handler for this item
*/
boolean isWirelessTerminal(ItemStack is);
@@ -58,5 +57,5 @@ public interface IWirelessTermRegistry {
* opens the wireless terminal gui, the wireless terminal item, must be in the
* active slot on the tool bar.
*/
void openWirelessTerminalGui(ItemStack item, IBlockReader world, PlayerEntity player, Hand hand);
void openWirelessTerminalGui(ItemStack item, BlockView world, PlayerEntity player, Hand hand);
}
@@ -23,14 +23,14 @@
package appeng.api.features;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.server.ServerWorld;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.Identifier;
public interface IWorldGen {
void enableWorldGenForDimension(WorldGenType type, ResourceLocation dimID);
void enableWorldGenForDimension(WorldGenType type, Identifier dimID);
void disableWorldGenForDimension(WorldGenType type, ResourceLocation dimID);
void disableWorldGenForDimension(WorldGenType type, Identifier dimID);
boolean isWorldGenEnabled(WorldGenType type, ServerWorld w);
@@ -23,7 +23,7 @@
package appeng.api.implementations;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.block.entity.BlockEntity;
import appeng.api.config.Upgrades;
import appeng.api.implementations.tiles.ISegmentedInventory;
@@ -39,7 +39,7 @@ public interface IUpgradeableHost extends IConfigurableObject, ISegmentedInvento
/**
* the tile...
*
* @return tile entity
* @return block entity
*/
TileEntity getTile();
BlockEntity getTile();
}
@@ -35,7 +35,6 @@ import net.minecraft.world.World;
*/
public interface IGuiItem {
/**
*
* @param is The item used to open the container.
* @param playerInventorySlot The slot in the player's inventory the item is in.
* @param world The world the player is in.
@@ -23,7 +23,7 @@
package appeng.api.implementations.guiobjects;
import net.minecraftforge.items.IItemHandler;
import alexiil.mc.lib.attributes.item.FixedItemInv;
import appeng.api.networking.IGridHost;
@@ -33,5 +33,5 @@ import appeng.api.networking.IGridHost;
public interface INetworkTool extends IGuiItemObject {
IGridHost getGridHost(); // null for most purposes.
IItemHandler getInventory();
FixedItemInv getInventory();
}
@@ -46,7 +46,6 @@ public interface IAEItemPowerStorage {
* return it.
*
* @param amount to be extracted power from device
*
* @return what it could extract
*/
double extractAEPower(ItemStack stack, double amount, Actionable mode);
@@ -38,7 +38,6 @@ public interface IAEWrench {
*
* @param player wrenching player
* @param pos of block.
*
* @return true if wrench can be used
*/
boolean canWrench(ItemStack wrench, PlayerEntity player, BlockPos pos);
@@ -48,7 +48,6 @@ public interface IBiometricCard {
/**
* @param itemStack card
*
* @return the full list of permissions encoded on the card.
*/
EnumSet<SecurityPermissions> getPermissions(ItemStack itemStack);
@@ -57,7 +56,6 @@ public interface IBiometricCard {
* Check if a permission is encoded on the card.
*
* @param permission card
*
* @return true if this permission is set on the card.
*/
boolean hasPermission(ItemStack is, SecurityPermissions permission);
@@ -24,7 +24,7 @@
package appeng.api.implementations.items;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.Material;
import net.minecraft.item.ItemStack;
public interface IGrowableCrystal {
@@ -25,13 +25,13 @@ package appeng.api.implementations.items;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.CompoundTag;
import appeng.api.util.AEColor;
/**
* Memory Card API
*
* <p>
* AE's Memory Card Item Class implements this interface.
*/
public interface IMemoryCard {
@@ -39,21 +39,21 @@ public interface IMemoryCard {
/**
* Configures the data stored on the memory card, the SettingsName, will be
* localized when displayed.
*
* <p>
* The data can contain an optional string with the key "tooltip", which will be
* used as unlocalized string to display it after the settings name.
*
* <p>
* The data can contain an optional intArray using "colorCode" to be displayed
* on the model itself. It needs to have exactly 8 elements representing the
* ordinal of the matching {@link AEColor}. The first 4 values represent the top
* row, left to right. The second 4 the bottom row.
*
* @param is item
* @param settingsName unlocalized string that represents the tile entity.
* @param settingsName unlocalized string that represents the block entity.
* @param data the NBT tag, refer to the normal comment for special
* keys.
*/
void setMemoryCardContents(ItemStack is, String settingsName, CompoundNBT data);
void setMemoryCardContents(ItemStack is, String settingsName, CompoundTag data);
/**
* returns the settings name provided by a previous call to
@@ -61,27 +61,24 @@ public interface IMemoryCard {
* call to setMemoryCardContents.
*
* @param is item
*
* @return setting name
*/
String getSettingsName(ItemStack is);
/**
* @param is item
*
* @return the NBT Data previously saved by setMemoryCardContents, or an empty
* NBTCompound
*/
CompoundNBT getData(ItemStack is);
CompoundTag getData(ItemStack is);
/**
* This represent as 4x2 grid of {@link AEColor} without transparent/fluix
* color.
*
* <p>
* First 4 colors are used for the top row, second for the bottom one.
*
* @param is item
*
* @return a hash representation of the memory card content
*/
AEColor[] getColorCode(ItemStack is);
@@ -25,7 +25,7 @@ package appeng.api.implementations.items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.server.ServerWorld;
import net.minecraft.server.world.ServerWorld;
import appeng.api.util.WorldCoord;
@@ -36,14 +36,12 @@ public interface ISpatialStorageCell {
/**
* @param is spatial storage cell
*
* @return true if this item is a spatial storage cell
*/
boolean isSpatialStorage(ItemStack is);
/**
* @param is spatial storage cell
*
* @return the maximum size of the spatial storage cell along any given axis
*/
int getMaxStoredDim(ItemStack is);
@@ -52,7 +50,6 @@ public interface ISpatialStorageCell {
* get the currently stored spatial storage plot id.
*
* @param is spatial storage cell
*
* @return plot id or -1
*/
int getAllocatedPlotId(ItemStack is);
@@ -65,7 +62,6 @@ public interface ISpatialStorageCell {
* @param min min coord
* @param max max coord
* @param playerId owner of current grid or -1
*
* @return success of transition
*/
boolean doSpatialTransition(ItemStack is, ServerWorld w, WorldCoord min, WorldCoord max, int playerId);
@@ -38,14 +38,14 @@ import appeng.api.storage.data.IAEStack;
* {@link ICellHandler#getCellInventory(ItemStack, appeng.api.storage.cells.ISaveProvider, IStorageChannel)}
* or {@link ICellHandler#isCell(ItemStack)}. It automatically handles the
* internals and NBT data, which is both nice, and bad for you!
*
* <p>
* Good cause it means you don't have to do anything, bad because you have
* little to no control over it.
*
* <p>
* Limited to {@link Integer} internally for most calculations. E.g. if the used
* or remaining bytes would overflow {@link Integer#MAX_VALUE} the behaviour is
* no longer specified. Even if {@link ICellInventory} is using {@link Long}.
*
* <p>
* The standard AE implementation also only provides 1-63 Types.
*/
public interface IStorageCell<T extends IAEStack<T>> extends ICellWorkbenchItem {
@@ -55,7 +55,6 @@ public interface IStorageCell<T extends IAEStack<T>> extends ICellWorkbenchItem
* ({@link Integer#MAX_VALUE} + 1) / 8.
*
* @param cellItem item
*
* @return number of bytes
*/
int getBytes(@Nonnull ItemStack cellItem);
@@ -64,7 +63,6 @@ public interface IStorageCell<T extends IAEStack<T>> extends ICellWorkbenchItem
* Determines the number of bytes used for any type included on the cell.
*
* @param cellItem item
*
* @return number of bytes
*/
int getBytesPerType(@Nonnull ItemStack cellItem);
@@ -74,7 +72,6 @@ public interface IStorageCell<T extends IAEStack<T>> extends ICellWorkbenchItem
* item.
*
* @param cellItem item
*
* @return number of types
*/
int getTotalTypes(@Nonnull ItemStack cellItem);
@@ -86,7 +83,6 @@ public interface IStorageCell<T extends IAEStack<T>> extends ICellWorkbenchItem
*
* @param cellItem item
* @param requestedAddition requested addition
*
* @return true to preventAdditionOfItem
*/
boolean isBlackListed(@Nonnull ItemStack cellItem, @Nonnull T requestedAddition);
@@ -106,7 +102,6 @@ public interface IStorageCell<T extends IAEStack<T>> extends ICellWorkbenchItem
* Allows an item to selectively enable or disable its status as a storage cell.
*
* @param i item
*
* @return if the ItemStack should behavior as a storage cell.
*/
boolean isStorageCell(@Nonnull ItemStack i);
@@ -37,7 +37,6 @@ public interface IStorageComponent {
* condenser.
*
* @param is item
*
* @return number of bytes
*/
int getBytes(ItemStack is);
@@ -46,7 +45,6 @@ public interface IStorageComponent {
* Just true or false for the item stack.
*
* @param is item
*
* @return true if item is a storage component
*/
boolean isStorageComponent(ItemStack is);
@@ -31,7 +31,6 @@ public interface IUpgradeModule {
/**
* @param itemstack item with potential upgrades
*
* @return null, or a valid upgrade type.
*/
Upgrades getType(ItemStack itemstack);
@@ -26,7 +26,7 @@ package appeng.api.implementations.parts;
import java.util.EnumSet;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.Direction;
import net.minecraft.util.math.Direction;
import appeng.api.networking.IGridHost;
import appeng.api.parts.BusSupport;
@@ -62,14 +62,13 @@ public interface ICablePart extends IPart, IGridHost {
* something.
*
* @param newColor new color
*
* @return if the color change was successful.
*/
boolean changeColor(AEColor newColor, PlayerEntity who);
/**
* Change sides on the cables node.
*
* <p>
* Called by AE, do not invoke.
*
* @param sides sides of cable
@@ -80,7 +79,6 @@ public interface ICablePart extends IPart, IGridHost {
* used to tests if a cable connects to neighbors visually.
*
* @param side neighbor side
*
* @return true if this side is currently connects to an external block.
*/
boolean isConnected(Direction side);
@@ -41,7 +41,6 @@ public interface IChestOrDrive extends ICellContainer, IGridHost, IOrientable {
/**
* @param slot slot index
*
* @return status of the slot, one of the above indices.
*/
CellState getCellStatus(int slot);
@@ -54,7 +53,6 @@ public interface IChestOrDrive extends ICellContainer, IGridHost, IOrientable {
/**
* @param slot slot index
*
* @return is the cell currently blinking to show activity.
*/
boolean isCellBlinking(int slot);
@@ -24,7 +24,7 @@
package appeng.api.implementations.tiles;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.Direction;
import net.minecraft.util.math.Direction;
import appeng.api.util.AEColor;
@@ -24,7 +24,7 @@
package appeng.api.implementations.tiles;
import net.minecraft.inventory.CraftingInventory;
import net.minecraft.util.Direction;
import net.minecraft.util.math.Direction;
import appeng.api.networking.crafting.ICraftingPatternDetails;
@@ -36,7 +36,6 @@ public interface ICraftingMachine {
* @param patternDetails details of pattern
* @param table crafting table
* @param ejectionDirection ejection direction
*
* @return if it was accepted, all or nothing.
*/
boolean pushPattern(ICraftingPatternDetails patternDetails, CraftingInventory table, Direction ejectionDirection);
@@ -23,17 +23,17 @@
package appeng.api.implementations.tiles;
import net.minecraft.util.Direction;
import net.minecraft.util.math.Direction;
/**
* Crank/Crankable API,
*
* <p>
* Tiles that Implement this can receive power, from the crank, and have the
* crank placed on them.
*
* <p>
* Tiles that access other tiles that implement this method can act as Cranks.
*
* This interface must be implemented by a tile entity.
* <p>
* This interface must be implemented by a block entity.
*/
public interface ICrankable {
@@ -23,7 +23,7 @@
package appeng.api.implementations.tiles;
import net.minecraftforge.items.IItemHandler;
import alexiil.mc.lib.attributes.item.FixedItemInv;
public interface ISegmentedInventory {
@@ -33,8 +33,7 @@ public interface ISegmentedInventory {
* duplication.
*
* @param name inventory name
*
* @return inventory with inventory name
*/
IItemHandler getInventoryByName(String name);
FixedItemInv getInventoryByName(String name);
}
@@ -23,7 +23,7 @@
package appeng.api.implementations.tiles;
import net.minecraftforge.items.IItemHandler;
import alexiil.mc.lib.attributes.item.FixedItemInv;
public interface IViewCellStorage {
@@ -32,5 +32,5 @@ public interface IViewCellStorage {
*
* @return inventory with at least 5 slot
*/
IItemHandler getViewCellStorage();
FixedItemInv getViewCellStorage();
}
@@ -23,7 +23,7 @@
package appeng.api.movable;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
@@ -33,28 +33,27 @@ public interface IMovableHandler {
* if you return true from this, your saying you can handle the class, not that
* single entity, you cannot opt out of single entities.
*
* @param myClass tile entity class
* @param tile tile entity
*
* @param myClass block entity class
* @param tile block entity
* @return true if it can handle moving
*/
boolean canHandle(Class<? extends TileEntity> myClass, TileEntity tile);
boolean canHandle(Class<? extends BlockEntity> myClass, BlockEntity tile);
/**
* request that the handler move the the tile from its current location to the
* new one. the tile has already been invalidated, and the blocks have already
* been fully moved.
*
* <p>
* Potential Example:
*
* <pre>
* {
* &#064;code
* Chunk c = world.getChunkAt(x, z);
* Chunk c = world.getChunk(x, z);
* c.setChunkBlockTileEntity(x &amp; 0xF, y + y, z &amp; 0xF, tile);
*
* if (c.isChunkLoaded) {
* world.addTileEntity(tile);
* world.addBlockEntity(tile);
* world.markBlockForUpdate(x, y, z);
* }
* }
@@ -64,5 +63,5 @@ public interface IMovableHandler {
* @param world world of tile
* @param newPosition the new location
*/
void moveTile(TileEntity tile, World world, BlockPos newPosition);
void moveTile(BlockEntity tile, World world, BlockPos newPosition);
}
@@ -24,37 +24,37 @@
package appeng.api.movable;
import net.minecraft.block.Block;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.block.entity.BlockEntity;
/**
* Used to determine if a tile is marked as movable, a block will be considered
* movable, if...
*
* <p>
* 1. The Tile or its super classes have been white listed with
* whiteListTileEntity.
*
* <p>
* 2. The Tile implements IMovableTile
*
* <p>
* 3. A IMovableHandler is register that returns canHandle = true for the
* {@link TileEntity} subclass
*
*
* {@link BlockEntity} subclass
* <p>
* <p>
* The movement process is as follows,
*
* <p>
* 1. IMovableTile.prepareToMove() or TileEntity.invalidate() depending on your
* opt-in method. 2. The tile will be removed from the world. 3. Its world,
* coordinates will be changed. *** this can be overridden with a
* IMovableHandler *** 4. It will then be re-added to the world, or a new world.
* 5. TileEntity.validate() 6. IMovableTile.doneMoving ( if you implemented
* 5. TileEntity.cancelRemoval() 6. IMovableTile.doneMoving ( if you implemented
* IMovableTile )
*
* <p>
* Please note, this is a 100% white list only feature, I will never opt in any
* non-vanilla, non-AE blocks. If you do not want to support your tiles being
* moved, you don't have to do anything.
*
* <p>
* I appreciate anyone that takes the effort to get their tiles to work with
* this system to create a better use experience.
*
* <p>
* If you need a build of deobf build of AE for testing, do not hesitate to ask.
*/
public interface IMovableRegistry {
@@ -67,26 +67,25 @@ public interface IMovableRegistry {
void blacklistBlock(Block blk);
/**
* White list your tile entity with the registry.
*
* White list your block entity with the registry.
* <p>
* If you tile is handled with IMovableHandler or IMovableTile you do not need
* to white list it.
*/
void whiteListTileEntity(Class<? extends TileEntity> c);
void whiteListBlockEntity(Class<? extends BlockEntity> c);
/**
* @param te to be moved tile entity
*
* @param te to be moved block entity
* @return true if the tile has accepted your request to move it
*/
boolean askToMove(TileEntity te);
boolean askToMove(BlockEntity te);
/**
* tells the tile you are done moving it.
*
* @param te moved tile entity
* @param te moved block entity
*/
void doneMoving(TileEntity te);
void doneMoving(BlockEntity te);
/**
* add a new handler movable handler.
@@ -98,14 +97,13 @@ public interface IMovableRegistry {
/**
* handlers are used to perform movement, this allows you to override AE's
* internal version.
*
* <p>
* only valid after askToMove(...) = true
*
* @param te tile entity
*
* @return moving handler of tile entity
* @param te block entity
* @return moving handler of block entity
*/
IMovableHandler getHandler(TileEntity te);
IMovableHandler getHandler(BlockEntity te);
/**
* @return a copy of the default handler
@@ -114,7 +112,6 @@ public interface IMovableRegistry {
/**
* @param blk block
*
* @return true if this block is blacklisted
*/
boolean isBlacklisted(Block blk);
@@ -30,7 +30,7 @@ import appeng.api.util.IReadOnlyCollection;
/**
* Gives you access to Grid based information.
*
* <p>
* Don't Implement.
*/
public interface IGrid {
@@ -39,7 +39,6 @@ public interface IGrid {
* Get Access to various grid modules
*
* @param iface face
*
* @return the IGridCache you requested.
*/
@Nonnull
@@ -49,7 +48,6 @@ public interface IGrid {
* Post an event into the network event bus.
*
* @param ev - event to post
*
* @return returns ev back to original poster
*/
@Nonnull
@@ -59,7 +57,6 @@ public interface IGrid {
* Post an event into the network event bus, but direct it at a single node.
*
* @param ev event to post
*
* @return returns ev back to original poster
*/
@Nonnull
@@ -79,7 +76,6 @@ public interface IGrid {
* Get machines on the network.
*
* @param gridHostClass class of the grid host
*
* @return IMachineSet of all nodes belonging to hosts of specified class.
*/
@Nonnull
@@ -29,7 +29,7 @@ import javax.annotation.Nonnegative;
import javax.annotation.Nonnull;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Direction;
import net.minecraft.util.math.Direction;
import appeng.api.parts.IPart;
import appeng.api.util.AEColor;
@@ -37,14 +37,14 @@ import appeng.api.util.DimensionalCoord;
/**
* An Implementation is required to create your node for IGridHost
*
* <p>
* Implement for use with IGridHost
*/
public interface IGridBlock {
/**
* how much power to drain per tick as part of idle network usage.
*
* <p>
* if the value of this changes, you must post a MENetworkPowerIdleChange
*
* @return ae/t to use.
@@ -26,9 +26,9 @@ package appeng.api.networking;
import javax.annotation.Nonnull;
/**
* Allows you to create a network wise service, AE2 uses these for providing
* Allows you to create a network wide service, AE2 uses these for providing
* item, spatial, and tunnel services.
*
* <p>
* Any Class that implements this, should have a public default constructor that
* takes a single argument of type IGrid.
*/
@@ -42,7 +42,7 @@ public interface IGridCache {
/**
* inform your cache, that a machine was removed from the grid.
*
* <p>
* Important: Do not trust the grids state in this method, interact only with
* the node you are passed, if you need to manage other grid information, do it
* on the next updateTick.
@@ -54,7 +54,7 @@ public interface IGridCache {
/**
* informs you cache that a machine was added to the grid.
*
* <p>
* Important: Do not trust the grids state in this method, interact only with
* the node you are passed, if you need to manage other grid information, do it
* on the next updateTick.
@@ -45,7 +45,6 @@ public interface IGridCacheRegistry {
* requests a new INSTANCE of a grid cache for use, used internally
*
* @param grid grid
*
* @return a new Map of IGridCaches from the registry, called from IGrid when
* constructing a new grid.
*/
@@ -29,10 +29,10 @@ import appeng.api.util.AEPartLocation;
/**
* Access to AE's internal grid connections.
*
* <p>
* Messing with connection is generally completely unnecessary, you should be
* able to just use IGridNode.updateState() to have AE manage them for you.
*
* <p>
* Don't Implement.
*/
public interface IGridConnection {
@@ -41,7 +41,6 @@ public interface IGridConnection {
* lets you get the opposing node of the connection by passing your own node.
*
* @param gridNode current grid node
*
* @return the IGridNode which represents the opposite side of the connection.
*/
@Nonnull
@@ -51,7 +50,6 @@ public interface IGridConnection {
* determine the direction of the connection based on your node.
*
* @param gridNode current grid node
*
* @return the direction of the connection, only valid for in world connections.
*/
@Nonnull
@@ -39,12 +39,11 @@ public interface IGridHelper {
/**
* Create a grid node for your {@link IGridHost}
*
* <p>
* The passed {@link IGridBlock} represents the definition for properties like
* connectable sides. Refer to its documentation for further details.
*
* @param block grid block
*
* @return grid node of block
*/
@Nonnull
@@ -52,13 +51,12 @@ public interface IGridHelper {
/**
* Create a direct connection between two {@link IGridNode}.
*
* <p>
* This will be considered as having a distance of 1, regardless of the location
* of both nodes.
*
* @param a to be connected gridnode
* @param b to be connected gridnode
*
* @throws appeng.api.exceptions.FailedConnectionException
*/
@Nonnull
@@ -26,15 +26,15 @@ package appeng.api.networking;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.block.entity.BlockEntity;
import appeng.api.parts.IPart;
import appeng.api.util.AECableType;
import appeng.api.util.AEPartLocation;
/**
* Implement to create a networked {@link TileEntity} or {@link IPart} must be
* implemented for a part, or tile entity to become part of a grid.
* Implement to create a networked {@link BlockEntity} or {@link IPart} must be
* implemented for a part, or block entity to become part of a grid.
*/
public interface IGridHost {
@@ -45,7 +45,6 @@ public interface IGridHost {
*
* @param dir feel free to ignore this, most blocks will use the same node for
* every side.
*
* @return a new IGridNode, create these with AEApi.INSTANCE().createGridNode(
* MyIGridBlock )
*/
@@ -27,8 +27,8 @@ import java.util.EnumSet;
import javax.annotation.Nonnull;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.world.IWorld;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.WorldAccess;
import appeng.api.IAppEngApi;
import appeng.api.util.AEPartLocation;
@@ -36,9 +36,9 @@ import appeng.api.util.IReadOnlyCollection;
/**
* Gives you a view into your Nodes connections and information.
*
* <p>
* updateState, getGrid, destroy are required to implement a proper IGridHost.
*
* <p>
* Don't Implement; Acquire from {@link IAppEngApi}.createGridNode
*/
public interface IGridNode {
@@ -54,10 +54,10 @@ public interface IGridNode {
/**
* inform the node that your IGridBlock has changed its internal state, and
* force the node to update.
*
* ALWAYS make sure that your tile entity is in the world, and has its node
* <p>
* ALWAYS make sure that your block entity is in the world, and has its node
* properly saved to be returned from the host before updating state,
*
* <p>
* If your entity is not in the world, or if you IGridHost returns a different
* node for the same side you will likely crash the game.
*/
@@ -89,7 +89,7 @@ public interface IGridNode {
* @return the world the node is located in
*/
@Nonnull
IWorld getWorld();
WorldAccess getWorld();
/**
* @return a set of the connected sides, INTERNAL represents an invisible
@@ -124,13 +124,13 @@ public interface IGridNode {
* this should be called for each node you create, if you have a nodeData
* compound to load from, you can store all your nods on a single compound using
* name.
*
* <p>
* Important: You must call this before updateState.
*
* @param name nbt name
* @param nodeData to be loaded data
*/
void loadFromNBT(@Nonnull String name, @Nonnull CompoundNBT nodeData);
void loadFromNBT(@Nonnull String name, @Nonnull CompoundTag nodeData);
/**
* this should be called for each node you maintain, you can save all your nodes
@@ -140,7 +140,7 @@ public interface IGridNode {
* @param name nbt name
* @param nodeData to be saved data
*/
void saveToNBT(@Nonnull String name, @Nonnull CompoundNBT nodeData);
void saveToNBT(@Nonnull String name, @Nonnull CompoundTag nodeData);
/**
* @return if the node's channel requirements are currently met, use this for
@@ -152,7 +152,6 @@ public interface IGridNode {
* see if this node has a certain flag
*
* @param flag flags
*
* @return true if has flag
*/
boolean hasFlag(@Nonnull GridFlags flag);
@@ -25,15 +25,15 @@ package appeng.api.networking;
import javax.annotation.Nonnull;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.CompoundTag;
public interface IGridStorage {
/**
* @return an CompoundNBT that can be read, and written too.
* @return an CompoundTag that can be read, and written too.
*/
@Nonnull
CompoundNBT dataObject();
CompoundTag dataObject();
/**
* @return the id for this grid storage object, used internally
@@ -32,12 +32,11 @@ public interface IGridVisitor {
/**
* Called for each node on the network.
*
* <p>
* By returning false your informing the host to stop visiting nodes beyond the
* current node.
*
* @param n the current node.
*
* @return true to continue visiting nodes beyond this node.
*/
boolean visitNode(@Nonnull IGridNode n);
@@ -23,7 +23,7 @@
package appeng.api.networking.crafting;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.text.Text;
import appeng.api.networking.security.IActionSource;
import appeng.api.networking.storage.IBaseMonitor;
@@ -54,5 +54,5 @@ public interface ICraftingCPU extends IBaseMonitor<IAEItemStack> {
/**
* @return a null or the name of the cpu.
*/
ITextComponent getName();
Text getName();
}
@@ -42,7 +42,6 @@ public interface ICraftingGrid extends IGridCache {
* @param world crafting world
* @param slot slot index
* @param details pattern details
*
* @return a collection of crafting patterns for the item in question.
*/
ImmutableCollection<ICraftingPatternDetails> getCraftingFor(IAEItemStack whatToCraft,
@@ -56,7 +55,6 @@ public interface ICraftingGrid extends IGridCache {
* @param actionSrc source
* @param craftWhat result
* @param callback callback -- optional
*
* @return a future which will at an undetermined point in the future get you
* the {@link ICraftingJob} do not wait on this, your be waiting
* forever.
@@ -79,7 +77,6 @@ public interface ICraftingGrid extends IGridCache {
* this will be used for extracting items, should
* usually be the same as the one provided to
* beginCraftingJob.
*
* @return null ( if failed ) or an {@link ICraftingLink} other wise, if you
* send requestingMachine you need to properly keep track of this and
* handle the nbt saving and loading of the object as well as the
@@ -96,7 +93,6 @@ public interface ICraftingGrid extends IGridCache {
/**
* @param what to be requested item
*
* @return true if the item can be requested via a crafting emitter.
*/
boolean canEmitFor(IAEItemStack what);
@@ -105,7 +101,6 @@ public interface ICraftingGrid extends IGridCache {
* is this item being crafted?
*
* @param what item being crafted
*
* @return true if it is being crafting
*/
boolean isRequesting(IAEItemStack what);
@@ -114,7 +109,6 @@ public interface ICraftingGrid extends IGridCache {
* The total amount being requested across all crafting cpus of a grid.
*
* @param what item being requested, ignores stacksize
*
* @return The total amount being requested.
*/
long requesting(IAEItemStack what);
@@ -23,7 +23,7 @@
package appeng.api.networking.crafting;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.CompoundTag;
public interface ICraftingLink {
@@ -53,7 +53,7 @@ public interface ICraftingLink {
*
* @param tag to be written data
*/
void writeToNBT(CompoundNBT tag);
void writeToNBT(CompoundTag tag);
/**
* @return the crafting ID for this link.
@@ -37,7 +37,6 @@ public interface ICraftingMedium {
*
* @param patternDetails details
* @param table crafting table
*
* @return if the pattern was successfully pushed.
*/
boolean pushPattern(ICraftingPatternDetails patternDetails, CraftingInventory table);
@@ -49,7 +49,6 @@ public interface ICraftingPatternDetails {
* @param slotIndex specific slot index
* @param itemStack item in slot
* @param world crafting world
*
* @return if an item can be used in the specific slot for this pattern.
*/
boolean isValidItemForSlot(int slotIndex, ItemStack itemStack, World world);
@@ -70,7 +69,7 @@ public interface ICraftingPatternDetails {
* The list will be sorted in descending order by stack size. However there is
* no guarantee about maintaining the placement order of the inputs in case of
* equal values.
*
*
* @return an immutable list of inputs without nulls
*/
List<IAEItemStack> getInputs();
@@ -81,11 +80,11 @@ public interface ICraftingPatternDetails {
* <p>
* This should be the preferred way to deal with the list of outputs.
* <p>
*
* <p>
* The list will be sorted in descending order by stack size. However there is
* no guarantee about maintaining the placement order of the outputs in case of
* equal values.
*
*
* @return an immutable list of outputs without nulls
*/
List<IAEItemStack> getOutputs();
@@ -101,7 +100,7 @@ public interface ICraftingPatternDetails {
* <p>
* This can return a copy from the internal structure, so there are no
* guarantees about modifications.
*
*
* @return a list of the inputs, will include nulls.
*/
IAEItemStack[] getSparseInputs();
@@ -117,7 +116,7 @@ public interface ICraftingPatternDetails {
* <p>
* This can return a copy from the internal structure, so there are no
* guarantees about modifications.
*
*
* @return a list of the outputs, will include nulls.
*/
IAEItemStack[] getSparseOutputs();
@@ -133,7 +132,6 @@ public interface ICraftingPatternDetails {
*
* @param craftingInv inventory
* @param world crafting world
*
* @return the crafted ( work bench ) item.
*/
ItemStack getOutput(CraftingInventory craftingInv, World world);
@@ -34,7 +34,7 @@ public interface ICraftingProviderHelper {
/**
* Add new Pattern to AE's crafting cache.
*
* <p>
* This will only accept instances created by
* {@link ICraftingHelper#decodePattern(net.minecraft.item.ItemStack, net.minecraft.world.World)}
*/
@@ -45,7 +45,6 @@ public interface ICraftingRequester extends IActionHost {
*
* @param items item
* @param mode action mode
*
* @return unwanted item
*/
IAEItemStack injectCraftedItems(ICraftingLink link, IAEItemStack items, Actionable mode);
@@ -53,7 +52,7 @@ public interface ICraftingRequester extends IActionHost {
/**
* called when the job changes from in progress, to either complete, or
* canceled.
*
* <p>
* after this call the crafting link is "dead" and should be discarded.
*/
void jobStateChange(ICraftingLink link);
@@ -27,13 +27,13 @@ import appeng.api.storage.data.IAEStack;
/**
* DO NOT IMPLEMENT.
*
* <p>
* Will be injected when adding an {@link ICraftingWatcherHost} to a grid.
*/
public interface ICraftingWatcher {
/**
* Add a specific {@link IAEStack} to watch.
*
* <p>
* Supports multiple values, duplicate ones will not be added.
*
* @param stack
@@ -41,7 +41,6 @@ public interface IAEPowerStorage extends IEnergySource {
*
* @param amt to be injected amount
* @param mode action mode
*
* @return amount of power which was unable to be stored
*/
double injectAEPower(double amt, @Nonnull Actionable mode);
@@ -75,16 +74,16 @@ public interface IAEPowerStorage extends IEnergySource {
/**
* The priority to use this energy storage.
*
* <p>
* A higher value means it is more likely to be extracted from first, and less
* likely to be inserted into first.
*
* <p>
* The value needs to be constant once added to a {@link IGrid}. Should it ever
* need to be changed, it has to be removed from the grid, then update the
* value, and finally added back to the grid.
*
* <p>
* This should never use {@link Integer#MIN_VALUE} or {@link Integer#MAX_VALUE}.
*
*
* @return the priority for this storage
*/
default int getPriority() {
@@ -61,7 +61,7 @@ public interface IEnergyGrid extends IGridCache, IEnergySource, IEnergyGridProvi
* condenses this into a single operation that determines the networks "powered
* state" if the network is considered off-line, your machines should not
* function.
*
* <p>
* {@link MENetworkPowerStatusChange} events are posted when this value changes
* if you need to be notified of the change, most machines can simply test the
* value when they operate.
@@ -73,21 +73,20 @@ public interface IEnergyGrid extends IGridCache, IEnergySource, IEnergyGridProvi
/**
* AE will accept any power, and store it, to maintain sanity please don't send
* more then 10,000 at a time.
*
* <p>
* IMPORTANT: Network power knows no bounds, for less spamy power flow, networks
* can store more then their allotted storage, however, it should be kept to a
* minimum, to help with this, this method returns the networks current
* OVERFLOW, this is not energy you can store some where else, its already
* stored in the network, you can extract it if you want, however it it owned by
* the network, this is different then IAEEnergyStore
*
* <p>
* Another important note, is that if a network that had overflow is deleted,
* its power is gone, this is one of the reasons why keeping overflow to a
* minimum is important.
*
* @param amt power to inject into the network
* @param mode should the action be simulated or performed?
*
* @return the amount of power that the network has OVER the limit.
*/
@Nonnegative
@@ -36,15 +36,15 @@ import appeng.api.config.Actionable;
public interface IEnergyGridProvider {
/**
* internal use only
*
* <p>
* Can return a list of providers behind the current.
*
* <p>
* An example would be something acting as proxy between different
* {@link IEnergyGrid}s.
*
* <p>
* This can contain duplicate entries, AE will ensure that each provider is only
* visited once.
*
* <p>
* internal use only
*/
@Nonnull
@@ -52,9 +52,9 @@ public interface IEnergyGridProvider {
/**
* internal use only
*
* <p>
* Extracts the requested amount from the provider.
*
* <p>
* This should never forward a call to another {@link IEnergyGridProvider},
* instead return them via {@link IEnergyGridProvider#providers()}
*
@@ -65,10 +65,10 @@ public interface IEnergyGridProvider {
/**
* Injects the offered amount into the provider.
*
* <p>
* This should never forward a call to another {@link IEnergyGridProvider},
* instead return them via {@link IEnergyGridProvider#providers()}
*
* <p>
* internal use only
*
* @return the leftover amount
@@ -78,13 +78,12 @@ public interface IEnergyGridProvider {
/**
* internal use only
*
* <p>
* Returns the current demand of an provider.
*
* <p>
* This should never forward a call to another {@link IEnergyGridProvider},
* instead return them via {@link IEnergyGridProvider#providers()}
*
*
* @param d the max amount offered, the demand should never exceed it.
* @return the total amount demanded
*/
@@ -93,31 +92,29 @@ public interface IEnergyGridProvider {
/**
* internal use only
*
* <p>
* AE currently uses this to enqueue the next visited provider.
*
* <p>
* There is no guarantee that this works on in a perfect way. It can be limited
* to the returns of the past {@link IEnergyGridProvider#providers()}, but not
* any future one discovered by visiting further providers.
*
* <p>
* E.g. inject into the the lowest one first or extract from the highest one.
*
* @return the current stored amount.
*
*
*/
@Nonnegative
double getProviderStoredEnergy();
/**
* internal use only
*
* <p>
* AE currently uses this to enqueue the next visited provider.
*
* <p>
* There is no guarantee that this works on in a perfect way. It can be limited
* to the returns of the past {@link IEnergyGridProvider#providers()}, but not
* any future one discovered by visiting further providers.
*
* <p>
* E.g. inject into the the lowest one first or extract from the highest one.
*
* @return the maximum amount stored.
@@ -36,7 +36,6 @@ public interface IEnergySource {
*
* @param amt extracted power
* @param mode should the action be simulated or performed?
*
* @return returns extracted power.
*/
@Nonnegative
@@ -27,13 +27,13 @@ import javax.annotation.Nonnegative;
/**
* DO NOT IMPLEMENT.
*
* <p>
* Will be injected when adding an {@link IEnergyWatcherHost} to a grid.
*/
public interface IEnergyWatcher {
/**
* Add a specific threshold to watch.
*
* <p>
* Supports multiple values, duplicate ones will not be added.
*
* @param amount
@@ -28,7 +28,7 @@ import appeng.api.networking.IGridNode;
/**
* Posted by the network when the booting status of the network goes up or down,
* the change is reflected via {@link IGridNode}.isActive()
*
* <p>
* Note: Most machines just need to check {@link IGridNode}.isActive()
*/
public class MENetworkBootingStatusChange extends MENetworkEvent {
@@ -25,10 +25,10 @@ package appeng.api.networking.events;
/**
* Posted by storage devices to inform AE to refresh its storage structure.
*
* <p>
* This is done in cases such as a storage cell being removed or added to a
* drive.
*
* <p>
* you do not need to send this event when your node is added / removed from the
* grid.
*/
@@ -28,7 +28,7 @@ import appeng.api.networking.IGridHost;
/**
* Posted to the {@link IGridHost} when the channels on the node connections are
* altered.
*
* <p>
* Never posted IGridCaches.
*/
public class MENetworkChannelsChanged extends MENetworkEvent {
@@ -27,7 +27,7 @@ import appeng.api.networking.IGrid;
/**
* Part of AE's Event Bus.
*
* <p>
* Posted via {@link IGrid}.postEvent or {@link IGrid}.postEventTo
*/
public class MENetworkEvent {
@@ -29,7 +29,7 @@ import appeng.api.networking.IGridNode;
* Implementers of a IGridBlock must post this event when your getIdlePowerUsage
* starts returning a new value, if you do not post this event the network will
* not change the idle draw.
*
* <p>
* you do not need to send this event when your node is added / removed from the
* grid.
*/
@@ -30,7 +30,7 @@ import appeng.api.networking.energy.IEnergyGrid;
* Posted by the network when the power status of the network goes up or down,
* the change is reflected via the {@link IEnergyGrid}.isNetworkPowered() or via
* {@link IGridNode}.isActive()
*
* <p>
* Note: Most machines just need to check {@link IGridNode}.isActive()
*/
public class MENetworkPowerStatusChange extends MENetworkEvent {
@@ -28,10 +28,10 @@ import appeng.api.networking.energy.IAEPowerStorage;
/**
* informs the network, that a {@link IAEPowerStorage} block that had either
* run, out of power, or was full, is no longer in that state.
*
* <p>
* failure to post this event when your {@link IAEPowerStorage} changes state
* will result in your block not charging, or not-discharging.
*
* <p>
* you do not need to send this event when your node is added / removed from the
* grid.
*/
@@ -29,9 +29,9 @@ import appeng.api.storage.IStorageChannel;
/**
* posted by the network when the networks Storage Changes, you can use the
* currentItems list to check levels, and update status.
*
* <p>
* this is the least useful method of getting info about changes in the network.
*
* <p>
* Do not modify the list or its contents in anyway.
*/
public class MENetworkStorageEvent extends MENetworkEvent {
@@ -31,18 +31,17 @@ import net.minecraft.entity.player.PlayerEntity;
/**
* The source of any action.
*
* <p>
* This can either be a {@link PlayerEntity} or an {@link IActionHost}.
*
* <p>
* In most cases this is used for security checks, but can be used to validate
* the source itself.
*
*/
public interface IActionSource {
/**
* If present, AE will consider the player being the source for the action.
*
* <p>
* This will take precedence over {@link IActionSource#machine()} in any case.
*
* @return An optional player issuing the action.
@@ -52,10 +51,10 @@ public interface IActionSource {
/**
* If present, it indicates the {@link IActionHost} of the source.
*
* <p>
* Should {@link IActionSource#player()} be absent, it will consider a machine
* as source.
*
* <p>
* It is recommended to include the machine even when a player is present.
*
* @return An optional machine issuing the action or acting as proxy for a
@@ -66,9 +65,9 @@ public interface IActionSource {
/**
* An {@link IActionSource} can have multiple optional contexts.
*
* <p>
* It is strongly recommended to limit the uses for absolutely necessary cases.
*
* <p>
* Currently there are no public contexts made available by AE. An example would
* be the context interfaces use internally to avoid looping items between each
* other.
@@ -43,7 +43,6 @@ public interface ISecurityGrid extends IGridCache {
*
* @param player to be checked player
* @param perm checked permissions
*
* @return true if the player has permissions.
*/
boolean hasPermission(@Nonnull PlayerEntity player, @Nonnull SecurityPermissions perm);
@@ -53,7 +52,6 @@ public interface ISecurityGrid extends IGridCache {
*
* @param playerID id of player
* @param perm checked permissions
*
* @return true if the player has permissions.
*/
boolean hasPermission(@Nonnegative int playerID, @Nonnull SecurityPermissions perm);
@@ -27,13 +27,13 @@ import appeng.api.storage.data.IAEStack;
/**
* DO NOT IMPLEMENT.
*
* <p>
* Will be injected when adding an {@link IStackWatcherHost} to a grid.
*/
public interface IStackWatcher {
/**
* Add a specific {@link IAEStack} to watch.
*
* <p>
* Supports multiple values, duplicate ones will not be added.
*
* @param stack
@@ -42,7 +42,7 @@ public interface IStorageGrid extends IGridCache, IStorageMonitorable {
* outside of the standard Network operations, Examples, ME Chest inputs from
* the world, or a Storage Bus detecting modifications made to the chest by an
* outside force.
*
* <p>
* Expects the input to have either a negative or a positive stack size to
* correspond to the injection, or extraction operation.
*
@@ -52,7 +52,7 @@ public interface IStorageGrid extends IGridCache, IStorageMonitorable {
/**
* Used to add a cell provider to the storage system
*
* <p>
* THIS IT NOT FOR USE {@link IGridHost} THAT PROVIDE {@link ICellContainer} -
* those are automatically handled by the storage system.
*

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