gitextract_et8g_e68/ ├── .gitattributes ├── .gitignore ├── Jenkinsfile ├── LICENSE ├── README.md ├── build.gradle ├── buildSrc/ │ ├── build.gradle │ └── src/ │ └── main/ │ └── groovy/ │ ├── build-number.gradle │ ├── git-changelog.gradle │ ├── minify-json.gradle │ ├── multiloader-common.gradle │ ├── multiloader-loader.gradle │ ├── patreon.gradle │ ├── project_validation.gradle │ ├── readme-update.gradle │ ├── secret-loader.gradle │ └── version-checker.gradle ├── common/ │ ├── build.gradle │ └── src/ │ └── main/ │ ├── java/ │ │ └── net/ │ │ └── darkhax/ │ │ └── bookshelf/ │ │ └── common/ │ │ ├── api/ │ │ │ ├── ModEntry.java │ │ │ ├── PhysicalSide.java │ │ │ ├── annotation/ │ │ │ │ ├── InternalUse.java │ │ │ │ └── OnlyFor.java │ │ │ ├── block/ │ │ │ │ └── IBlockHooks.java │ │ │ ├── commands/ │ │ │ │ ├── IEnumCommand.java │ │ │ │ ├── PermissionLevel.java │ │ │ │ └── args/ │ │ │ │ ├── ArgumentSerializer.java │ │ │ │ ├── FontArgument.java │ │ │ │ ├── SingletonArgumentInfo.java │ │ │ │ └── TagArgument.java │ │ │ ├── data/ │ │ │ │ ├── BookshelfTags.java │ │ │ │ ├── ISidedRecipeManager.java │ │ │ │ ├── codecs/ │ │ │ │ │ ├── EnumStreamCodec.java │ │ │ │ │ ├── map/ │ │ │ │ │ │ ├── MapCodecHelper.java │ │ │ │ │ │ ├── MapCodecs.java │ │ │ │ │ │ └── RegistryMapCodecHelper.java │ │ │ │ │ └── stream/ │ │ │ │ │ └── StreamCodecs.java │ │ │ │ ├── conditions/ │ │ │ │ │ ├── ConditionType.java │ │ │ │ │ ├── ILoadCondition.java │ │ │ │ │ └── LoadConditions.java │ │ │ │ ├── enchantment/ │ │ │ │ │ └── EnchantmentLevel.java │ │ │ │ ├── ingredient/ │ │ │ │ │ └── IngredientLogic.java │ │ │ │ └── loot/ │ │ │ │ ├── PoolTarget.java │ │ │ │ └── modifiers/ │ │ │ │ └── LootPoolAddition.java │ │ │ ├── entity/ │ │ │ │ └── villager/ │ │ │ │ ├── MerchantTier.java │ │ │ │ └── trades/ │ │ │ │ ├── VillagerBuys.java │ │ │ │ ├── VillagerOffers.java │ │ │ │ └── VillagerSells.java │ │ │ ├── function/ │ │ │ │ ├── CachedSupplier.java │ │ │ │ ├── QuadConsumer.java │ │ │ │ ├── ReloadableCache.java │ │ │ │ ├── SidedReloadableCache.java │ │ │ │ ├── TriConsumer.java │ │ │ │ └── TriFunction.java │ │ │ ├── item/ │ │ │ │ └── IItemHooks.java │ │ │ ├── loot/ │ │ │ │ ├── LootPoolEntryDescriber.java │ │ │ │ └── LootPoolEntryDescriptions.java │ │ │ ├── menu/ │ │ │ │ ├── data/ │ │ │ │ │ └── BlockPosData.java │ │ │ │ └── slot/ │ │ │ │ ├── InputSlot.java │ │ │ │ └── OutputSlot.java │ │ │ ├── network/ │ │ │ │ ├── AbstractPacket.java │ │ │ │ ├── Destination.java │ │ │ │ ├── INetworkHandler.java │ │ │ │ └── IPacket.java │ │ │ ├── registry/ │ │ │ │ ├── ContentProvider.java │ │ │ │ ├── RegistrationContext.java │ │ │ │ ├── RegistryReference.java │ │ │ │ └── adapters/ │ │ │ │ ├── GameRegistryAdapter.java │ │ │ │ ├── GenericRegistryAdapter.java │ │ │ │ └── RegistryAdapter.java │ │ │ ├── service/ │ │ │ │ └── Services.java │ │ │ ├── text/ │ │ │ │ ├── font/ │ │ │ │ │ ├── BuiltinFonts.java │ │ │ │ │ └── IFontEntry.java │ │ │ │ ├── format/ │ │ │ │ │ ├── IPropertyFormat.java │ │ │ │ │ └── PropertyFormat.java │ │ │ │ └── unit/ │ │ │ │ ├── IUnit.java │ │ │ │ └── Units.java │ │ │ └── util/ │ │ │ ├── CommandHelper.java │ │ │ ├── DataHelper.java │ │ │ ├── ExperienceHelper.java │ │ │ ├── FunctionHelper.java │ │ │ ├── IGameplayHelper.java │ │ │ ├── IPlatformHelper.java │ │ │ ├── IRenderHelper.java │ │ │ ├── MathsHelper.java │ │ │ ├── TextHelper.java │ │ │ └── TickAccumulator.java │ │ ├── impl/ │ │ │ ├── BookshelfContent.java │ │ │ ├── BookshelfMod.java │ │ │ ├── Constants.java │ │ │ ├── DebugContentProvider.java │ │ │ ├── command/ │ │ │ │ ├── BlockTagToItemTagCommand.java │ │ │ │ ├── DebugCommands.java │ │ │ │ ├── EnchantCommand.java │ │ │ │ ├── FontCommand.java │ │ │ │ ├── HandCommand.java │ │ │ │ ├── RenameCommand.java │ │ │ │ ├── StructureCommand.java │ │ │ │ └── TranslateCommand.java │ │ │ ├── data/ │ │ │ │ ├── conditions/ │ │ │ │ │ ├── And.java │ │ │ │ │ ├── ModLoaded.java │ │ │ │ │ ├── Not.java │ │ │ │ │ ├── OnPlatform.java │ │ │ │ │ ├── Or.java │ │ │ │ │ └── RegistryContains.java │ │ │ │ ├── criterion/ │ │ │ │ │ ├── item/ │ │ │ │ │ │ └── NamespaceItemPredicate.java │ │ │ │ │ └── trigger/ │ │ │ │ │ └── AdvancementTrigger.java │ │ │ │ ├── ingredient/ │ │ │ │ │ ├── AllOfIngredient.java │ │ │ │ │ ├── BlockTagIngredient.java │ │ │ │ │ ├── EitherIngredient.java │ │ │ │ │ ├── FalseIngredient.java │ │ │ │ │ └── ModIdIngredient.java │ │ │ │ └── loot/ │ │ │ │ ├── entries/ │ │ │ │ │ └── LootItemStack.java │ │ │ │ └── modifiers/ │ │ │ │ ├── FingerprintCodec.java │ │ │ │ ├── ILootPoolHooks.java │ │ │ │ └── LootModificationHandler.java │ │ │ ├── recipe/ │ │ │ │ └── RecipeTypeImpl.java │ │ │ ├── registry/ │ │ │ │ └── adapter/ │ │ │ │ ├── BlockEntityRendererAdapter.java │ │ │ │ ├── BlockRegistryAdapter.java │ │ │ │ ├── BlockRenderTypeAdapter.java │ │ │ │ ├── CommandArgumentAdapter.java │ │ │ │ ├── CreativeModeTabAdapter.java │ │ │ │ ├── IngredientTypeAdapter.java │ │ │ │ ├── LootDescriptionAdapter.java │ │ │ │ ├── LootEntryTypeAdapter.java │ │ │ │ ├── LootPoolAdditionAdapter.java │ │ │ │ ├── MenuScreenAdapter.java │ │ │ │ ├── MenuTypeAdapter.java │ │ │ │ ├── PacketAdapter.java │ │ │ │ ├── PotPatternAdapter.java │ │ │ │ ├── PotionBrewAdapter.java │ │ │ │ ├── RecipeTypeAdapter.java │ │ │ │ ├── SoundEventAdapter.java │ │ │ │ └── VillagerTradeAdapter.java │ │ │ └── resources/ │ │ │ └── ExtendedText.java │ │ └── mixin/ │ │ ├── access/ │ │ │ ├── block/ │ │ │ │ ├── AccessorBannerBlockEntity.java │ │ │ │ ├── AccessorBaseContainerBlockEntity.java │ │ │ │ ├── AccessorBlockEntityRenderers.java │ │ │ │ └── AccessorCropBlock.java │ │ │ ├── client/ │ │ │ │ ├── AccessorFontManager.java │ │ │ │ ├── AccessorItemBlockRenderTypes.java │ │ │ │ ├── AccessorMinecraft.java │ │ │ │ └── gui/ │ │ │ │ └── AccessorAbstractWidget.java │ │ │ ├── entity/ │ │ │ │ └── AccessorEntity.java │ │ │ ├── level/ │ │ │ │ └── AccessorRecipeManager.java │ │ │ ├── loot/ │ │ │ │ ├── AccessorCompositeEntryBase.java │ │ │ │ ├── AccessorDynamicLoot.java │ │ │ │ ├── AccessorLootItem.java │ │ │ │ ├── AccessorLootPool.java │ │ │ │ ├── AccessorLootPoolSingletonContainer.java │ │ │ │ ├── AccessorLootTable.java │ │ │ │ ├── AccessorNestedLootTable.java │ │ │ │ └── AccessorTagEntry.java │ │ │ └── particles/ │ │ │ └── AccessSimpleParticleType.java │ │ └── patch/ │ │ ├── advancement/ │ │ │ └── MixinPlayerAdvancements.java │ │ ├── block/ │ │ │ └── MixinDecoratedPotPatterns.java │ │ ├── client/ │ │ │ └── MixinClientPacketListener.java │ │ ├── entity/ │ │ │ ├── MixinLightningBolt.java │ │ │ └── MixinLivingEntity.java │ │ ├── item/ │ │ │ └── MixinCreativeModeTab.java │ │ ├── level/ │ │ │ ├── MixinRecipeManager.java │ │ │ └── MixinWalkNodeEvaluator.java │ │ ├── locale/ │ │ │ └── MixinClientLanguage.java │ │ ├── loot/ │ │ │ ├── MixinLootDataType.java │ │ │ ├── MixinLootItemKilledByPlayerCondition.java │ │ │ └── MixinLootPool.java │ │ ├── packs/ │ │ │ └── MixinSimpleJsonResourceReloadListener.java │ │ ├── potions/ │ │ │ └── MixinPotionBrewing.java │ │ └── server/ │ │ └── MixinReloadableServerResources.java │ └── resources/ │ ├── META-INF/ │ │ └── services/ │ │ └── net.darkhax.bookshelf.common.api.registry.ContentProvider │ ├── assets/ │ │ └── bookshelf/ │ │ └── lang/ │ │ ├── en_us.json │ │ ├── es_ar.json │ │ ├── ja_jp.json │ │ ├── pt_br.json │ │ └── zh_cn.json │ ├── bookshelf.mixins.json │ ├── data/ │ │ └── bookshelf/ │ │ ├── damage_type/ │ │ │ └── fake_player.json │ │ └── tags/ │ │ ├── damage_type/ │ │ │ └── fake_player.json │ │ └── item/ │ │ └── creative_tab/ │ │ └── minecraft/ │ │ ├── building_blocks.json │ │ ├── colored_blocks.json │ │ ├── combat.json │ │ ├── food_and_drinks.json │ │ ├── functional_blocks.json │ │ ├── ingredients.json │ │ ├── natural_blocks.json │ │ ├── op_blocks.json │ │ ├── redstone_blocks.json │ │ ├── spawn_eggs.json │ │ └── tools_and_utilities.json │ └── pack.mcmeta ├── fabric/ │ ├── build.gradle │ └── src/ │ └── main/ │ ├── java/ │ │ └── net/ │ │ └── darkhax/ │ │ └── bookshelf/ │ │ └── fabric/ │ │ └── impl/ │ │ ├── FabricMod.java │ │ ├── FabricModClient.java │ │ ├── data/ │ │ │ └── FabricIngredient.java │ │ ├── network/ │ │ │ └── FabricNetworkHandler.java │ │ └── util/ │ │ ├── FabricGameplayHelper.java │ │ ├── FabricPlatformHelper.java │ │ ├── FabricRegistryHelper.java │ │ └── FabricRenderHelper.java │ └── resources/ │ ├── META-INF/ │ │ └── services/ │ │ ├── net.darkhax.bookshelf.common.api.network.INetworkHandler │ │ ├── net.darkhax.bookshelf.common.api.util.IGameplayHelper │ │ ├── net.darkhax.bookshelf.common.api.util.IPlatformHelper │ │ └── net.darkhax.bookshelf.common.api.util.IRenderHelper │ ├── bookshelf.fabric.mixins.json │ └── fabric.mod.json ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── neoforge/ │ ├── build.gradle │ └── src/ │ └── main/ │ ├── java/ │ │ └── net/ │ │ └── darkhax/ │ │ └── bookshelf/ │ │ └── neoforge/ │ │ ├── impl/ │ │ │ ├── NeoForgeMod.java │ │ │ ├── data/ │ │ │ │ └── NeoForgeIngredient.java │ │ │ ├── network/ │ │ │ │ └── NeoForgeNetworkHandler.java │ │ │ └── util/ │ │ │ ├── NeoForgeGameplayHelper.java │ │ │ ├── NeoForgePlatformHelper.java │ │ │ ├── NeoForgeRegistryHelper.java │ │ │ └── NeoForgeRenderHelper.java │ │ └── mixin/ │ │ └── access/ │ │ └── gui/ │ │ └── screen/ │ │ └── AccessorMenuScreens.java │ └── resources/ │ ├── META-INF/ │ │ ├── neoforge.mods.toml │ │ └── services/ │ │ ├── net.darkhax.bookshelf.common.api.network.INetworkHandler │ │ ├── net.darkhax.bookshelf.common.api.util.IGameplayHelper │ │ ├── net.darkhax.bookshelf.common.api.util.IPlatformHelper │ │ └── net.darkhax.bookshelf.common.api.util.IRenderHelper │ └── bookshelf.neoforge.mixins.json └── settings.gradle