Applied Energistics 2

Applied Energistics 2

156M Downloads

๐Ÿ’ฅ 1.17 API breaks and stability

yueh opened this issue ยท 0 comments

commented

1.17 API Stability

With 1.17 hopefully being a just be around or a short time before 1.18 or whatever second half of the cliffs and caves update will be called, we will take this chance to make API breaks during the release cycle up to 1.18.

With this in mind, we might not follow semver fully to avoid ending up with version 123.4.5 or similar.
Addons or any other mod with a deeper integration will have to account for it and probably be either very strict about compatible releases or have to update frequently and fast.

Planned API breaks for 1.17 (TBD)

Storage Channels

  • Require a ResourceLocation when registering storage channels so they can be referenced in packets and obtained client-side (and vice-versa)
  • Allow storage channels to be looked up via the ID they have been registered with
  • Add getId() to IStorageChannel

IGrid changes

IGridCache changes

  • IGridCache#onUpdateTick(). See #5150 for further details

Part related changes. E.g. IPartHost or IPart

  • Direct replace() instead of remove(notRealRemove) + add(). See #5128
  • Consider storing only the item id not the full itemstack for the cable bus/IPartHost. See #5170
  • Drop appeng.api.parts.PartItemStack. See #5171
  • Have IPart#getDrops() handle dropping the part itself. See #5169

INetworkEncodable changes

  • Remove name parameter from setEncryptionKey
    • Done as void unlink(ItemStack itemStack);
  • Consider removal, unless addons can actually do anything with the key
    • Keep, key is usable via Locatables. Renamed to IGridLinkableHandler. Shouldn't be implemented anymore, instead register as handler in GridLinkables.
  • getEncryptionKey make it return null (and add clarifying docs+annotation) rather than empty string
    • IWirelessTerminalHandler now has OptionalLong getGridKey(ItemStack is);
  • setEncryptionKey should also accept null for the key to clear it
    • unlink has been added

IUpgradeableHost changes

  • Remove base interface ISegmentedInventory, make getUpgradeInventory non-default
  • Remove getTile
  • Rethink that it requires IConfigurableObject to be extended
  • Connect Upgrades.Supported with IUpgradeableHost so that it becomes possible to check how many of an upgrade an upgradable host supports (i.e. by exposing getMaxSupported from the inventory)

IMovableTile changes

  • Pass the new cluster dimensions to IMovableTile#doneMoving(). Or alternatively handle it via custom IMovableHandler?

ICellWorkbenchItem changes

  • Change getUpgradesInventory() to only support 8 upgrades for easier rendering?

Removals

  • Remove AEPartLocation (#5256)
  • Remove IAEWrench (#5283)
  • Remove IAEStack#asItemStackRepresentation() (#5448)