๐ฅ 1.17 API breaks and stability
yueh opened this issue ยท 0 comments
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
- <C extends IGridCache> IGrid#getCache(Class<? extends IGridCache> iface)
Change to<C extends IGridCache> C getCache(Class<C> iface);
- MENetworkEvent IGrid#postEvent(MENetworkEvent ev);
Change to<E extends MENetworkEvent> E IGrid#postEvent(E ev);
- MENetworkEvent postEventTo(@Nonnull IGridNode node, @Nonnull MENetworkEvent ev);
Change to<E extends MENetworkEvent> E postEventTo(IGridNode node,E ev);
- Method removed instead.
IGridCache
changes
-
IGridCache#onUpdateTick()
. See #5150 for further details
Part related changes. E.g. IPartHost
or IPart
- Direct
replace()
instead ofremove(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 fromsetEncryptionKey
- Done as
void unlink(ItemStack itemStack);
- Done as
- Consider removal, unless addons can actually do anything with the key
- Keep, key is usable via
Locatables
. Renamed toIGridLinkableHandler
. Shouldn't be implemented anymore, instead register as handler inGridLinkables
.
- Keep, key is usable via
-
getEncryptionKey
make it return null (and add clarifying docs+annotation) rather than empty stringIWirelessTerminalHandler
now hasOptionalLong getGridKey(ItemStack is);
-
setEncryptionKey
should also accept null for the key to clear itunlink
has been added
IUpgradeableHost
changes
- Remove base interface
ISegmentedInventory
, makegetUpgradeInventory
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 customIMovableHandler
?
ICellWorkbenchItem
changes
- Change
getUpgradesInventory()
to only support 8 upgrades for easier rendering?