From b919d8f0bc9a9056b4b197b25587da63eacfd55e Mon Sep 17 00:00:00 2001 From: Pyrofab Date: Sat, 13 Jun 2020 16:26:10 +0200 Subject: [PATCH] Update to 1.16-pre5 --- .../api/util/sync/ChunkSyncedComponent.java | 9 ++++++++- .../api/util/sync/EntitySyncedComponent.java | 7 +++++++ .../components/api/util/ItemComponent.java | 5 +++++ .../api/util/sync/WorldSyncedComponent.java | 7 +++++++ changelog.md | 15 +++++++++++++-- gradle.properties | 6 +++--- 6 files changed, 43 insertions(+), 6 deletions(-) diff --git a/cardinal-components-chunk/src/main/java/nerdhub/cardinal/components/api/util/sync/ChunkSyncedComponent.java b/cardinal-components-chunk/src/main/java/nerdhub/cardinal/components/api/util/sync/ChunkSyncedComponent.java index 7d196a4c..a72fb849 100644 --- a/cardinal-components-chunk/src/main/java/nerdhub/cardinal/components/api/util/sync/ChunkSyncedComponent.java +++ b/cardinal-components-chunk/src/main/java/nerdhub/cardinal/components/api/util/sync/ChunkSyncedComponent.java @@ -57,8 +57,15 @@ public interface ChunkSyncedComponent extends ChunkComponen Chunk getChunk(); + /** + * {@inheritDoc} + * @implNote The default implementation should generally be overridden. + * This implementation performs a linear-time lookup on the provider to find the component type + * this component is associated with. + * Implementing classes can nearly always provide a better implementation. + */ @Override - default ComponentType getComponentType() { + default ComponentType getComponentType() { return TypeAwareComponent.lookupComponentType(ComponentProvider.fromChunk(this.getChunk()), this); } diff --git a/cardinal-components-entity/src/main/java/nerdhub/cardinal/components/api/util/sync/EntitySyncedComponent.java b/cardinal-components-entity/src/main/java/nerdhub/cardinal/components/api/util/sync/EntitySyncedComponent.java index 765f926b..0461165e 100644 --- a/cardinal-components-entity/src/main/java/nerdhub/cardinal/components/api/util/sync/EntitySyncedComponent.java +++ b/cardinal-components-entity/src/main/java/nerdhub/cardinal/components/api/util/sync/EntitySyncedComponent.java @@ -53,6 +53,13 @@ public interface EntitySyncedComponent extends BaseSyncedComponent { Entity getEntity(); + /** + * {@inheritDoc} + * @implNote The default implementation should generally be overridden. + * This implementation performs a linear-time lookup on the provider to find the component type + * this component is associated with. + * Implementing classes can nearly always provide a better implementation. + */ @Override default ComponentType getComponentType() { return TypeAwareComponent.lookupComponentType(ComponentProvider.fromEntity(this.getEntity()), this); diff --git a/cardinal-components-item/src/main/java/nerdhub/cardinal/components/api/util/ItemComponent.java b/cardinal-components-item/src/main/java/nerdhub/cardinal/components/api/util/ItemComponent.java index cf51ff7c..db1f3937 100644 --- a/cardinal-components-item/src/main/java/nerdhub/cardinal/components/api/util/ItemComponent.java +++ b/cardinal-components-item/src/main/java/nerdhub/cardinal/components/api/util/ItemComponent.java @@ -25,12 +25,17 @@ import nerdhub.cardinal.components.api.ComponentType; import nerdhub.cardinal.components.api.component.Component; import nerdhub.cardinal.components.api.component.extension.CopyableComponent; +import org.jetbrains.annotations.ApiStatus; public interface ItemComponent extends Component, CopyableComponent { @Override boolean isComponentEqual(Component other); + /** + * @deprecated do not call or override this method, it will be removed eventually. + */ + @ApiStatus.ScheduledForRemoval @Deprecated @Override default ComponentType getComponentType() { diff --git a/cardinal-components-world/src/main/java/nerdhub/cardinal/components/api/util/sync/WorldSyncedComponent.java b/cardinal-components-world/src/main/java/nerdhub/cardinal/components/api/util/sync/WorldSyncedComponent.java index 7703f1bb..2307e5fc 100644 --- a/cardinal-components-world/src/main/java/nerdhub/cardinal/components/api/util/sync/WorldSyncedComponent.java +++ b/cardinal-components-world/src/main/java/nerdhub/cardinal/components/api/util/sync/WorldSyncedComponent.java @@ -53,6 +53,13 @@ public interface WorldSyncedComponent extends BaseSyncedComponent { World getWorld(); + /** + * {@inheritDoc} + * @implNote The default implementation should generally be overridden. + * This implementation performs a linear-time lookup on the provider to find the component type + * this component is associated with. + * Implementing classes can nearly always provide a better implementation. + */ @Override default ComponentType getComponentType() { return TypeAwareComponent.lookupComponentType(ComponentProvider.fromWorld(this.getWorld()), this); diff --git a/changelog.md b/changelog.md index 27cc156d..2f667b79 100644 --- a/changelog.md +++ b/changelog.md @@ -1,8 +1,7 @@ ------------------------------------------------------ Version 2.4.0 ------------------------------------------------------ -### 2.4.0-nightly.1.16-pre4 -- **Internals and experimental APIs have been relocated. This *will* break compatibility between modules of different versions.** +### 2.4.0-nightly.1.16-pre5 - `cardinal-components-item` no longer alters the layout of packets encoding ItemStacks - Added a `PlayerComponent` interface that can replace `RespawnCopyStrategy` - Removed some experimental not very useful methods in ComponentRegistry @@ -13,6 +12,10 @@ some classes have been moved to a new module called `cardinal-components-util`. If you are missing some types, or if you use the `cardinal-components-block` module, you need to add a dependency on that module.** +**Compatibility between modules of different versions has been broken in 2.4.0-nightly.1.16-pre4.** +In case of crashes due to those incompatibilities, Modpack makers and players can add the latest version +of the full library to their mods folder to update every module at once. + - Updated entity, item, chunk, world, and level modules to MC 1.16 Additions @@ -25,8 +28,10 @@ Additions - Added `ItemComponentCallbackV2` and `ItemComponentFactoryV2` as alternatives respectively to `ItemComponentCallback` and `ItemComponentFactory`, passing the stack's true item as context. - Added `Dynamic` conversion methods to `NbtSerializable` (defaulted to delegate to nbt serialization) +- Added `PlayerComponent`, an experimental interface replacing `RespawnCopyStrategy` Changes +- TypeAwareComponent now has a default implementation in most subinterfaces - It is no longer possible for a `ComponentCallback` to override an existing component - Networking errors should now be logged before they get swallowed by Netty - `cardinal-component-item` should no longer prevent players from connecting to vanilla servers @@ -34,6 +39,12 @@ Changes Fixes - Fixed `PlayerSyncCallback` not firing when a player is teleported to another dimensions through commands +- Fixed Cardinal-Components-Item preventing vanilla clients from connecting to modded servers and vice-versa + +------------------------------------------------------ +Version 2.3.7 +------------------------------------------------------ +- Fixed Cardinal-Components-Item crashing with Optifine (thanks to ZekerZhayard) ------------------------------------------------------ Version 2.3.6 diff --git a/gradle.properties b/gradle.properties index 35832882..27ed02e3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,18 +2,18 @@ org.gradle.jvmargs = -Xmx3G #see https://modmuss50.me/fabric.html -minecraft_version=1.16-pre4 +minecraft_version=1.16-pre5 yarn_mappings=1 loader_version=0.8.7+build.201 #Fabric api base -fabric_api_version=0.11.10+build.359-1.16 +fabric_api_version=0.12.1+build.361-1.16 #Publishing mod_version = 2.4.0-nightly.1.16-pre4 curseforge_id = 318449 curseforge_versions = 1.16-Snapshot -changelog_url = https://github.com/OnyxStudios/Cardinal-Components-API/changelog.md +changelog_url = https://github.com/OnyxStudios/Cardinal-Components-API/blob/master/changelog.md release_type = beta #api_package = nerdhub.cardinal.components.api