diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 2b96ddb..76a468b 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -11,7 +11,7 @@ These are the most important things to know before contributing (also explained - Commit messages must adhere to [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/). - Branch names must be formatted correctly. The format is `{category}/GH-{issue number}/{lowercase-description}`. Category must match a - category [used in our Commitlint config](https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional#type-enum). + category [used in our Commitlint config](https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional#type-enum). You can also use `NO-ISSUE` instead of a GitHub issue number. - We use [Checkstyle](https://checkstyle.sourceforge.io/) in our build workflow to validate coding style. It is recommended to import the [config/checkstyle/checkstyle.xml](../config/checkstyle/checkstyle.xml) or [config/intellij-code-style.xml](../config/intellij-code-style.xml) file into your @@ -47,7 +47,7 @@ Because we use merge commits when merging a PR, branch names will be part of the branch names must follow a certain standard. The format is `{category}/GH-{issue number}/{lowercase-description}` and a branch name can be maximum 50 characters of -length. +length. You can also use `NO-ISSUE` instead of a GitHub issue number. Category must match a category [used in our Commitlint config](https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional#type-enum). diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 60e28f8..7f28c31 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -34,7 +34,7 @@ body: description: | If your Minecraft version isn't listed here, it means that it's no longer supported. In that case, don't create an issue. options: - - Minecraft 1.20.4 + - Minecraft 1.21 validations: required: true - type: input diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b2a7493..869dafc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,7 +8,7 @@ on: types: [ opened, synchronize, reopened ] jobs: build: - uses: refinedmods/refinedarchitect/.github/workflows/build.yml@v0.13.4 + uses: refinedmods/refinedarchitect/.github/workflows/build.yml@v0.16.7 with: mutation-testing: false secrets: inherit diff --git a/.github/workflows/draft-release.yml b/.github/workflows/draft-release.yml index 5ea1d94..31fd136 100644 --- a/.github/workflows/draft-release.yml +++ b/.github/workflows/draft-release.yml @@ -17,7 +17,7 @@ on: type: string jobs: draft: - uses: refinedmods/refinedarchitect/.github/workflows/draft-release.yml@v0.13.4 + uses: refinedmods/refinedarchitect/.github/workflows/draft-release.yml@v0.16.7 with: release-type: ${{ inputs.release-type }} version-number-override: ${{ inputs.version-number-override }} diff --git a/.github/workflows/issue-for-unsupported-version.yml b/.github/workflows/issue-for-unsupported-version.yml index 9f9ee90..59ca50f 100644 --- a/.github/workflows/issue-for-unsupported-version.yml +++ b/.github/workflows/issue-for-unsupported-version.yml @@ -4,4 +4,4 @@ on: types: [ labeled, unlabeled, reopened ] jobs: unsupported-labeler: - uses: refinedmods/refinedarchitect/.github/workflows/issue-for-unsupported-version.yml@v0.13.4 \ No newline at end of file + uses: refinedmods/refinedarchitect/.github/workflows/issue-for-unsupported-version.yml@v0.16.7 \ No newline at end of file diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 4c45347..e65bdef 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -7,7 +7,7 @@ on: - closed jobs: publish-release: - uses: refinedmods/refinedarchitect/.github/workflows/publish-release.yml@v0.13.4 + uses: refinedmods/refinedarchitect/.github/workflows/publish-release.yml@v0.16.7 secrets: inherit with: project-name: 'Refined Storage - Trinkets Integration' diff --git a/.github/workflows/resolved-issue-locking.yml b/.github/workflows/resolved-issue-locking.yml index 16b1cf9..85e717b 100644 --- a/.github/workflows/resolved-issue-locking.yml +++ b/.github/workflows/resolved-issue-locking.yml @@ -4,4 +4,4 @@ on: - cron: '0 0 * * *' jobs: lock: - uses: refinedmods/refinedarchitect/.github/workflows/resolved-issue-locking.yml@v0.13.4 \ No newline at end of file + uses: refinedmods/refinedarchitect/.github/workflows/resolved-issue-locking.yml@v0.16.7 \ No newline at end of file diff --git a/.github/workflows/validate-branch-name.yml b/.github/workflows/validate-branch-name.yml index b2ddb77..b13799f 100644 --- a/.github/workflows/validate-branch-name.yml +++ b/.github/workflows/validate-branch-name.yml @@ -2,4 +2,4 @@ name: Validate branch name on: [ pull_request ] jobs: validate-branch-name: - uses: refinedmods/refinedarchitect/.github/workflows/validate-branch-name.yml@v0.13.4 \ No newline at end of file + uses: refinedmods/refinedarchitect/.github/workflows/validate-branch-name.yml@v0.16.7 \ No newline at end of file diff --git a/.github/workflows/validate-changelog.yml b/.github/workflows/validate-changelog.yml index 2adc54f..47db6c5 100644 --- a/.github/workflows/validate-changelog.yml +++ b/.github/workflows/validate-changelog.yml @@ -4,4 +4,4 @@ on: types: [ opened, synchronize, reopened, ready_for_review, labeled, unlabeled ] jobs: validate-changelog: - uses: refinedmods/refinedarchitect/.github/workflows/validate-changelog.yml@v0.13.4 \ No newline at end of file + uses: refinedmods/refinedarchitect/.github/workflows/validate-changelog.yml@v0.16.7 \ No newline at end of file diff --git a/.github/workflows/validate-commit-messages.yml b/.github/workflows/validate-commit-messages.yml index 8ef06cd..ea9f66e 100644 --- a/.github/workflows/validate-commit-messages.yml +++ b/.github/workflows/validate-commit-messages.yml @@ -2,4 +2,4 @@ name: Validate commit messages on: [ pull_request ] jobs: validate-commit-messages: - uses: refinedmods/refinedarchitect/.github/workflows/validate-commit-messages.yml@v0.13.4 \ No newline at end of file + uses: refinedmods/refinedarchitect/.github/workflows/validate-commit-messages.yml@v0.16.7 \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ffb888..ce3b413 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Changed + +- Support for Refined Storage v2.0.0-milestone.4.4. +- The Portable Grid can now also be equipped as a trinket. + ## [0.1.0] - 2024-06-18 ### Added diff --git a/build.gradle b/build.gradle deleted file mode 100644 index d2685d3..0000000 --- a/build.gradle +++ /dev/null @@ -1,48 +0,0 @@ -plugins { - id 'java-library' -} - -apply from: "https://raw.githubusercontent.com/refinedmods/refinedarchitect/v0.13.4/helper.gradle" - -group = 'com.refinedmods.refinedstorage' - -fabricProject("refinedstorage_trinkets_integration") - -archivesBaseName = 'refinedstorage-trinkets-integration' - -repositories { - maven { - url = uri("https://maven.pkg.github.com/refinedmods/refinedstorage2") - credentials { - username = "anything" - password = "\u0067hp_oGjcDFCn8jeTzIj4Ke9pLoEVtpnZMP4VQgaX" - } - } - maven { - name = 'ModMenu' - url 'https://maven.terraformersmc.com/' - } - maven { - name = 'Cloth Config' - url 'https://maven.shedaniel.me/' - } - maven { - name = 'NoIndium' - url = 'https://maven.cafeteria.dev/releases/' - } - maven { - name = "Trinkets" - url = 'https://maven.ladysnake.org/releases' - } -} - -dependencies { - modApi "com.refinedmods.refinedstorage2:refinedstorage2-platform-fabric:${refinedstorageVersion}" - // https://www.curseforge.com/minecraft/mc-mods/trinkets/files - modApi "dev.emi:trinkets:${trinketsVersion}" - modApi "dev.onyxstudios.cardinal-components-api:cardinal-components-base:${cardinalComponentsVersion}" - modApi "dev.onyxstudios.cardinal-components-api:cardinal-components-entity:${cardinalComponentsVersion}" -} - -enablePublishing() -enableSonarQube("refinedmods_refinedstorage-trinkets-integration") diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..c838108 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,53 @@ +plugins { + id("refinedarchitect.root") + id("refinedarchitect.fabric") +} + +repositories { + maven { + url = uri("https://maven.pkg.github.com/refinedmods/refinedstorage2") + credentials { + username = "anything" + password = "\u0067hp_oGjcDFCn8jeTzIj4Ke9pLoEVtpnZMP4VQgaX" + } + } + maven { + name = "ModMenu" + url = uri("https://maven.terraformersmc.com/") + } + maven { + name = "Cloth Config" + url = uri("https://maven.shedaniel.me/") + } + maven { + name = "Trinkets" + url = uri("https://maven.ladysnake.org/releases") + } +} + +refinedarchitect { + modId = "refinedstorage_trinkets_integration" + fabric() + sonarQube("refinedmods_refinedstorage-trinkets-integration", "refinedmods") + publishing { + maven = true + } +} + +group = "com.refinedmods.refinedstorage" + +base { + archivesName.set("refinedstorage-trinkets-integration") +} + +val refinedstorageVersion: String by project +val trinketsVersion: String by project +val cardinalComponentsVersion: String by project + +dependencies { + modApi("com.refinedmods.refinedstorage:refinedstorage-platform-fabric:${refinedstorageVersion}") + modApi("dev.emi:trinkets:${trinketsVersion}") + modApi("dev.onyxstudios.cardinal-components-api:cardinal-components-base:${cardinalComponentsVersion}") + modApi("dev.onyxstudios.cardinal-components-api:cardinal-components-entity:${cardinalComponentsVersion}") +} + diff --git a/gradle.properties b/gradle.properties index d45f2aa..bf28ee2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,7 @@ -refinedstorageVersion=2.0.0-milestone.3.13 -trinketsVersion=3.8.0 -cardinalComponentsVersion=5.4.0 +refinedarchitectVersion=0.16.7 +refinedstorageVersion=2.0.0-milestone.4.4 +# https://www.curseforge.com/minecraft/mc-mods/trinkets/files +trinketsVersion=3.10.0 +cardinalComponentsVersion=6.1.0 # Gradle org.gradle.jvmargs=-Xmx1G \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b82aa23..a441313 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..f9b2ee4 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,22 @@ +pluginManagement { + repositories { + mavenCentral() + gradlePluginPortal() + maven { + url = uri("https://maven.pkg.github.com/refinedmods/refinedarchitect") + credentials { + username = "anything" + password = "\u0067hp_oGjcDFCn8jeTzIj4Ke9pLoEVtpnZMP4VQgaX" + } + } + maven { + name = "Fabric" + url = uri("https://maven.fabricmc.net/") + } + } + val refinedarchitectVersion: String by settings + plugins { + id("refinedarchitect.root").version(refinedarchitectVersion) + id("refinedarchitect.fabric").version(refinedarchitectVersion) + } +} diff --git a/src/main/java/com/refinedmods/refinedstorage/trinkets/TrinketsRefinedStoragePlugin.java b/src/main/java/com/refinedmods/refinedstorage/trinkets/TrinketsRefinedStoragePlugin.java index d0c759a..ed3a220 100644 --- a/src/main/java/com/refinedmods/refinedstorage/trinkets/TrinketsRefinedStoragePlugin.java +++ b/src/main/java/com/refinedmods/refinedstorage/trinkets/TrinketsRefinedStoragePlugin.java @@ -1,27 +1,19 @@ package com.refinedmods.refinedstorage.trinkets; -import com.refinedmods.refinedstorage2.platform.api.PlatformApi; -import com.refinedmods.refinedstorage2.platform.api.RefinedStoragePlugin; -import com.refinedmods.refinedstorage2.platform.common.util.IdentifierUtil; +import com.refinedmods.refinedstorage.platform.api.PlatformApi; +import com.refinedmods.refinedstorage.platform.api.RefinedStoragePlugin; + import net.minecraft.resources.ResourceLocation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class TrinketsRefinedStoragePlugin implements RefinedStoragePlugin { public static final String ID = "refinedstorage_trinkets_integration"; - private static final Logger LOGGER = LoggerFactory.getLogger(TrinketsRefinedStoragePlugin.class); - @Override public void onPlatformApiAvailable(final PlatformApi platformApi) { PlatformApi.INSTANCE.getSlotReferenceFactoryRegistry().register( - new ResourceLocation(ID, "trinkets"), + ResourceLocation.fromNamespaceAndPath(ID, "trinkets"), TrinketsSlotReferenceFactory.INSTANCE ); PlatformApi.INSTANCE.addSlotReferenceProvider(new TrinketsSlotReferenceProvider()); - LOGGER.info( - "Refined Storage - Trinkets Integration has loaded. RS2 ModId: {}", - IdentifierUtil.MOD_ID - ); } } diff --git a/src/main/java/com/refinedmods/refinedstorage/trinkets/TrinketsSlotReference.java b/src/main/java/com/refinedmods/refinedstorage/trinkets/TrinketsSlotReference.java index 485a10c..dc0100e 100644 --- a/src/main/java/com/refinedmods/refinedstorage/trinkets/TrinketsSlotReference.java +++ b/src/main/java/com/refinedmods/refinedstorage/trinkets/TrinketsSlotReference.java @@ -1,37 +1,20 @@ package com.refinedmods.refinedstorage.trinkets; +import com.refinedmods.refinedstorage.platform.api.support.slotreference.SlotReference; +import com.refinedmods.refinedstorage.platform.api.support.slotreference.SlotReferenceFactory; + import java.util.Optional; -import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReference; -import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReferenceFactory; import dev.emi.trinkets.api.TrinketsApi; -import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -class TrinketsSlotReference implements SlotReference { - private final String groupName; - private final String slotName; - private final int index; - - TrinketsSlotReference(final String groupName, final String slotName, final int index) { - this.groupName = groupName; - this.slotName = slotName; - this.index = index; - } - +record TrinketsSlotReference(String groupName, String slotName, int index) implements SlotReference { @Override public boolean isDisabledSlot(final int playerSlotIndex) { return false; } - @Override - public void writeToBuffer(final FriendlyByteBuf buf) { - buf.writeUtf(groupName); - buf.writeUtf(slotName); - buf.writeInt(index); - } - @Override public Optional resolve(final Player player) { return TrinketsApi.getTrinketComponent(player) diff --git a/src/main/java/com/refinedmods/refinedstorage/trinkets/TrinketsSlotReferenceFactory.java b/src/main/java/com/refinedmods/refinedstorage/trinkets/TrinketsSlotReferenceFactory.java index 99f7e41..436c260 100644 --- a/src/main/java/com/refinedmods/refinedstorage/trinkets/TrinketsSlotReferenceFactory.java +++ b/src/main/java/com/refinedmods/refinedstorage/trinkets/TrinketsSlotReferenceFactory.java @@ -1,17 +1,28 @@ package com.refinedmods.refinedstorage.trinkets; -import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReference; -import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReferenceFactory; -import net.minecraft.network.FriendlyByteBuf; +import com.refinedmods.refinedstorage.platform.api.support.slotreference.SlotReference; +import com.refinedmods.refinedstorage.platform.api.support.slotreference.SlotReferenceFactory; + +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; class TrinketsSlotReferenceFactory implements SlotReferenceFactory { - public static final SlotReferenceFactory INSTANCE = new TrinketsSlotReferenceFactory(); + static final SlotReferenceFactory INSTANCE = new TrinketsSlotReferenceFactory(); + private static final StreamCodec STREAM_CODEC = + StreamCodec.composite( + ByteBufCodecs.STRING_UTF8, TrinketsSlotReference::groupName, + ByteBufCodecs.STRING_UTF8, TrinketsSlotReference::slotName, + ByteBufCodecs.INT, TrinketsSlotReference::index, + TrinketsSlotReference::new + ); private TrinketsSlotReferenceFactory() { } @Override - public SlotReference create(final FriendlyByteBuf buf) { - return new TrinketsSlotReference(buf.readUtf(), buf.readUtf(), buf.readInt()); + @SuppressWarnings({"rawtypes", "unchecked"}) + public StreamCodec getStreamCodec() { + return (StreamCodec) STREAM_CODEC; } } diff --git a/src/main/java/com/refinedmods/refinedstorage/trinkets/TrinketsSlotReferenceProvider.java b/src/main/java/com/refinedmods/refinedstorage/trinkets/TrinketsSlotReferenceProvider.java index d7e688d..8b6596a 100644 --- a/src/main/java/com/refinedmods/refinedstorage/trinkets/TrinketsSlotReferenceProvider.java +++ b/src/main/java/com/refinedmods/refinedstorage/trinkets/TrinketsSlotReferenceProvider.java @@ -1,11 +1,12 @@ package com.refinedmods.refinedstorage.trinkets; +import com.refinedmods.refinedstorage.platform.api.support.slotreference.SlotReference; +import com.refinedmods.refinedstorage.platform.api.support.slotreference.SlotReferenceProvider; + import java.util.Collections; import java.util.List; import java.util.Set; -import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReference; -import com.refinedmods.refinedstorage2.platform.api.support.network.bounditem.SlotReferenceProvider; import dev.emi.trinkets.api.TrinketsApi; import net.minecraft.util.Tuple; import net.minecraft.world.entity.player.Player; diff --git a/src/main/java/com/refinedmods/refinedstorage/trinkets/package-info.java b/src/main/java/com/refinedmods/refinedstorage/trinkets/package-info.java index 8769f4d..d900a0b 100644 --- a/src/main/java/com/refinedmods/refinedstorage/trinkets/package-info.java +++ b/src/main/java/com/refinedmods/refinedstorage/trinkets/package-info.java @@ -2,6 +2,6 @@ @FieldsAndMethodsAreNonnullByDefault package com.refinedmods.refinedstorage.trinkets; -import javax.annotation.ParametersAreNonnullByDefault; +import com.refinedmods.refinedstorage.api.core.FieldsAndMethodsAreNonnullByDefault; -import com.refinedmods.refinedstorage2.api.core.FieldsAndMethodsAreNonnullByDefault; +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/resources/assets/refinedstorage_trinkets_integration/lang/en_us.json b/src/main/resources/assets/refinedstorage_trinkets_integration/lang/en_us.json index 8b59198..3d908b8 100644 --- a/src/main/resources/assets/refinedstorage_trinkets_integration/lang/en_us.json +++ b/src/main/resources/assets/refinedstorage_trinkets_integration/lang/en_us.json @@ -1,3 +1,3 @@ { - "trinkets.slot.refinedstorage_trinkets_integration.wireless": "Refined Storage" + "trinkets.slot.refinedstorage_trinkets_integration.refinedstorage": "Refined Storage" } \ No newline at end of file diff --git a/src/main/resources/data/trinkets/entities/refinedstorage_trinkets_integration.json b/src/main/resources/data/trinkets/entities/refinedstorage_trinkets_integration.json index 500b43e..3bdd361 100644 --- a/src/main/resources/data/trinkets/entities/refinedstorage_trinkets_integration.json +++ b/src/main/resources/data/trinkets/entities/refinedstorage_trinkets_integration.json @@ -3,6 +3,6 @@ "player" ], "slots": [ - "refinedstorage_trinkets_integration/wireless" + "refinedstorage_trinkets_integration/refinedstorage" ] } \ No newline at end of file diff --git a/src/main/resources/data/trinkets/slots/refinedstorage_trinkets_integration/wireless.json b/src/main/resources/data/trinkets/slots/refinedstorage_trinkets_integration/refinedstorage.json similarity index 100% rename from src/main/resources/data/trinkets/slots/refinedstorage_trinkets_integration/wireless.json rename to src/main/resources/data/trinkets/slots/refinedstorage_trinkets_integration/refinedstorage.json diff --git a/src/main/resources/data/trinkets/tags/item/refinedstorage_trinkets_integration/refinedstorage.json b/src/main/resources/data/trinkets/tags/item/refinedstorage_trinkets_integration/refinedstorage.json new file mode 100644 index 0000000..30d4bf4 --- /dev/null +++ b/src/main/resources/data/trinkets/tags/item/refinedstorage_trinkets_integration/refinedstorage.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "refinedstorage:portable_grid", + "refinedstorage:creative_portable_grid", + "refinedstorage:wireless_grid", + "refinedstorage:creative_wireless_grid" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/trinkets/tags/items/refinedstorage_trinkets_integration/wireless.json b/src/main/resources/data/trinkets/tags/items/refinedstorage_trinkets_integration/wireless.json deleted file mode 100644 index 778353b..0000000 --- a/src/main/resources/data/trinkets/tags/items/refinedstorage_trinkets_integration/wireless.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "refinedstorage2:wireless_grid", - "refinedstorage2:creative_wireless_grid" - ] -} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 46d8953..d72897d 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -23,14 +23,14 @@ "links": { "modmenu.discord": "https://discordapp.com/invite/VYzsydb" }, - "parent": "refinedstorage2" + "parent": "refinedstorage" } }, "depends": { "fabricloader": ">=0.14.6", "fabric-api": "*", - "minecraft": "~1.20.4", - "refinedstorage2": "*", + "minecraft": "~1.21", + "refinedstorage": "*", "trinkets": ">=3.8", "java": ">=17" } diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta index 834e02a..7a3c4aa 100644 --- a/src/main/resources/pack.mcmeta +++ b/src/main/resources/pack.mcmeta @@ -3,6 +3,6 @@ "description": { "text": "Refined Storage - Trinkets Integration resources" }, - "pack_format": 18 + "pack_format": 34 } }