├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ ├── config.yml │ └── feature_request.yml ├── release_config.json └── workflows │ ├── create_release.yml │ └── publish_release.yml ├── .gitignore ├── LICENSE ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle.kts └── spigot ├── build.gradle.kts └── src └── main ├── java └── me │ └── wolfyscript │ └── customcrafting │ ├── CustomCrafting.java │ ├── commands │ ├── AbstractSubCommand.java │ ├── CommandCC.java │ ├── CommandRecipe.java │ ├── IndexCommand.java │ ├── cc_subcommands │ │ ├── DarkModeSubCommand.java │ │ ├── DataBaseSubCommand.java │ │ ├── DebugSubCommand.java │ │ ├── GiveSubCommand.java │ │ ├── HelpSubCommand.java │ │ ├── InfoSubCommand.java │ │ ├── LockDownSubCommand.java │ │ └── ReloadSubCommand.java │ └── recipes │ │ ├── DeleteSubCommand.java │ │ ├── EditSubCommand.java │ │ ├── InfoSubCommand.java │ │ ├── RecipeLookupCommand.java │ │ ├── SaveSubCommand.java │ │ └── ToggleSubCommand.java │ ├── compatibility │ ├── PluginCompatibility.java │ └── protocollib │ │ └── ProtocolLib.java │ ├── configs │ ├── BackupSettings.java │ ├── CookingSettings.java │ ├── DataSettings.java │ ├── DatabaseSettings.java │ ├── LocalStorageSettings.java │ ├── MainConfig.java │ ├── customitem │ │ ├── EliteCraftingTableSettings.java │ │ └── RecipeBookSettings.java │ └── recipebook │ │ ├── AlignItems.java │ │ ├── Category.java │ │ ├── CategoryFilter.java │ │ ├── CategorySettings.java │ │ ├── ContentSortation.java │ │ ├── RecipeBookConfig.java │ │ ├── RecipeContainer.java │ │ └── RecipeContainerType.java │ ├── data │ ├── CCCache.java │ ├── CCPlayerData.java │ ├── cache │ │ ├── BrewingGUICache.java │ │ ├── CacheCauldronWorkstation.java │ │ ├── CacheEliteCraftingTable.java │ │ ├── CacheRecipeView.java │ │ ├── ChatLists.java │ │ ├── ConditionsCache.java │ │ ├── IngredientCache.java │ │ ├── ParticleCache.java │ │ ├── RecipeBookCache.java │ │ ├── RecipeBookEditorCache.java │ │ ├── RecipeList.java │ │ ├── TagSettingsCache.java │ │ ├── items │ │ │ ├── ApplyItem.java │ │ │ ├── Items.java │ │ │ └── ItemsButtonAction.java │ │ ├── potions │ │ │ ├── ApplyPotionEffect.java │ │ │ ├── ApplyPotionEffectType.java │ │ │ └── PotionEffects.java │ │ └── recipe_creator │ │ │ ├── RecipeCache.java │ │ │ ├── RecipeCacheAnvil.java │ │ │ ├── RecipeCacheBlasting.java │ │ │ ├── RecipeCacheBrewing.java │ │ │ ├── RecipeCacheCampfire.java │ │ │ ├── RecipeCacheCauldron.java │ │ │ ├── RecipeCacheCooking.java │ │ │ ├── RecipeCacheCrafting.java │ │ │ ├── RecipeCacheCraftingAbstract.java │ │ │ ├── RecipeCacheCraftingElite.java │ │ │ ├── RecipeCacheFurnace.java │ │ │ ├── RecipeCacheGrinding.java │ │ │ ├── RecipeCacheSmithing.java │ │ │ ├── RecipeCacheSmoking.java │ │ │ ├── RecipeCacheStonecutting.java │ │ │ └── RecipeCreatorCache.java │ ├── patreon │ │ ├── Patreon.java │ │ └── Patron.java │ └── persistent │ │ └── CauldronBlockData.java │ ├── gui │ ├── CCCluster.java │ ├── CCWindow.java │ ├── InteractionUtils.java │ ├── Setting.java │ ├── cauldron │ │ ├── CauldronWorkstationCluster.java │ │ └── CauldronWorkstationMenu.java │ ├── elite_crafting │ │ ├── ButtonSlotResult.java │ │ ├── CraftingWindow.java │ │ ├── CraftingWindow2.java │ │ ├── CraftingWindow3.java │ │ ├── CraftingWindow4.java │ │ ├── CraftingWindow5.java │ │ ├── CraftingWindow6.java │ │ └── EliteCraftingCluster.java │ ├── item_creator │ │ ├── ButtonArmorSlotToggle.java │ │ ├── ButtonAttributeCategory.java │ │ ├── ButtonAttributeMode.java │ │ ├── ButtonAttributeSlot.java │ │ ├── ButtonFurnaceFuelToggle.java │ │ ├── ButtonItemFlagsToggle.java │ │ ├── ButtonOption.java │ │ ├── ButtonParticleEffectSelect.java │ │ ├── ClusterItemCreator.java │ │ ├── MenuItemCreator.java │ │ └── tabs │ │ │ ├── ItemCreatorTab.java │ │ │ ├── ItemCreatorTabVanilla.java │ │ │ ├── TabArmorSlots.java │ │ │ ├── TabAttributes.java │ │ │ ├── TabConsume.java │ │ │ ├── TabCustomDurability.java │ │ │ ├── TabCustomModelData.java │ │ │ ├── TabDamage.java │ │ │ ├── TabDisplayName.java │ │ │ ├── TabEliteCraftingTable.java │ │ │ ├── TabEnchants.java │ │ │ ├── TabFlags.java │ │ │ ├── TabFuel.java │ │ │ ├── TabItemModel.java │ │ │ ├── TabLore.java │ │ │ ├── TabNewCustomModelData.java │ │ │ ├── TabParticleEffects.java │ │ │ ├── TabPermission.java │ │ │ ├── TabPlayerHead.java │ │ │ ├── TabPotion.java │ │ │ ├── TabRarity.java │ │ │ ├── TabRecipeBook.java │ │ │ ├── TabRepairCost.java │ │ │ ├── TabUnbreakable.java │ │ │ └── TabVanilla.java │ ├── main_gui │ │ ├── ButtonContainerRecipeList.java │ │ ├── ButtonFolderRecipe.java │ │ ├── ButtonNamespaceItem.java │ │ ├── ButtonNamespaceRecipe.java │ │ ├── ButtonRecipeListWorkstationFilter.java │ │ ├── ButtonRecipeType.java │ │ ├── ButtonSelectCustomItem.java │ │ ├── ButtonSettingsLanguage.java │ │ ├── ButtonSettingsLockdown.java │ │ ├── ClusterMain.java │ │ ├── MenuListCustomItem.java │ │ ├── MenuListRecipes.java │ │ ├── MenuMain.java │ │ ├── MenuPatrons.java │ │ └── MenuSettings.java │ ├── potion_creator │ │ ├── ButtonPotionEffectTypeSelect.java │ │ ├── ClusterPotionCreator.java │ │ ├── MenuPotionCreator.java │ │ └── MenuPotionEffectTypeSelection.java │ ├── recipe_creator │ │ ├── ButtonBrewingOption.java │ │ ├── ButtonConditionAdd.java │ │ ├── ButtonConditionSelect.java │ │ ├── ButtonContainerItemIngredient.java │ │ ├── ButtonContainerItemResult.java │ │ ├── ButtonExactMeta.java │ │ ├── ButtonHidden.java │ │ ├── ButtonPriority.java │ │ ├── ButtonRecipeIngredient.java │ │ ├── ButtonRecipeResult.java │ │ ├── ButtonTagChoose.java │ │ ├── ButtonTagContainer.java │ │ ├── ButtonVanillaBook.java │ │ ├── ClusterRecipeCreator.java │ │ ├── MenuConditions.java │ │ ├── MenuConditionsAdd.java │ │ ├── MenuIngredient.java │ │ ├── MenuItemEditor.java │ │ ├── MenuResult.java │ │ ├── MenuTagChooseList.java │ │ ├── MenuTagSettings.java │ │ ├── RecipeCreator.java │ │ ├── RecipeCreatorAnvil.java │ │ ├── RecipeCreatorBrewing.java │ │ ├── RecipeCreatorCauldron.java │ │ ├── RecipeCreatorCooking.java │ │ ├── RecipeCreatorCrafting.java │ │ ├── RecipeCreatorCraftingElite.java │ │ ├── RecipeCreatorCraftingEliteSettings.java │ │ ├── RecipeCreatorGrindstone.java │ │ ├── RecipeCreatorSmithing.java │ │ └── RecipeCreatorStonecutter.java │ ├── recipebook │ │ ├── ButtonCategoryItem.java │ │ ├── ButtonCategoryMain.java │ │ ├── ButtonContainerIngredient.java │ │ ├── ButtonContainerRecipeBook.java │ │ ├── ClusterRecipeBook.java │ │ ├── ClusterRecipeView.java │ │ ├── MenuCategoryOverview.java │ │ ├── MenuMain.java │ │ ├── MenuRecipeOverview.java │ │ └── MenuSingleRecipe.java │ └── recipebook_editor │ │ ├── ButtonCategory.java │ │ ├── ButtonFilter.java │ │ ├── ButtonSaveCategory.java │ │ ├── ClusterRecipeBookEditor.java │ │ ├── EditCategory.java │ │ ├── EditCategorySetting.java │ │ ├── EditFilter.java │ │ ├── EditorMain.java │ │ ├── EditorUtils.java │ │ ├── Overview.java │ │ ├── OverviewCategories.java │ │ └── OverviewFilters.java │ ├── handlers │ ├── ConfigHandler.java │ ├── DataHandler.java │ ├── DatabaseLoader.java │ ├── DisableRecipesHandler.java │ ├── ExtensionPackLoader.java │ ├── LocalStorageLoader.java │ ├── ResourceLoader.java │ ├── SQLDatabaseLoader.java │ ├── SaveDestination.java │ └── ScheduledPluginIntegrationTask.java │ ├── listeners │ ├── AnvilListener.java │ ├── BrewingStandListener.java │ ├── CauldronListener.java │ ├── EliteWorkbenchListener.java │ ├── EnchantListener.java │ ├── GrindStoneListener.java │ ├── PlayerListener.java │ ├── RecipeBookListener.java │ ├── RecipeDiscoverListener.java │ ├── cooking │ │ ├── CampfireListener.java │ │ ├── CookingManager.java │ │ ├── CookingRecipeCache.java │ │ └── FurnaceListener.java │ ├── crafting │ │ ├── CraftListener.java │ │ ├── CrafterListener.java │ │ └── EventBasedCraftRecipeHandler.java │ ├── customevents │ │ ├── CauldronCookEvent.java │ │ ├── CauldronPreCookEvent.java │ │ ├── CustomCraftEvent.java │ │ ├── CustomPreCraftEvent.java │ │ └── CustomPrepareAnvilEvent.java │ └── smithing │ │ └── SmithingListener.java │ ├── placeholderapi │ └── PlaceHolder.java │ ├── recipes │ ├── AbstractRecipeShaped.java │ ├── AbstractRecipeShapeless.java │ ├── CraftingRecipe.java │ ├── CraftingRecipeEliteShaped.java │ ├── CraftingRecipeEliteShapeless.java │ ├── CraftingRecipeShaped.java │ ├── CraftingRecipeShapeless.java │ ├── CustomRecipe.java │ ├── CustomRecipeAnvil.java │ ├── CustomRecipeBlasting.java │ ├── CustomRecipeBrewing.java │ ├── CustomRecipeCampfire.java │ ├── CustomRecipeCauldron.java │ ├── CustomRecipeCooking.java │ ├── CustomRecipeEnchant.java │ ├── CustomRecipeFurnace.java │ ├── CustomRecipeGrindstone.java │ ├── CustomRecipeSmithing.java │ ├── CustomRecipeSmoking.java │ ├── CustomRecipeStonecutter.java │ ├── ICustomVanillaRecipe.java │ ├── RecipeLoader.java │ ├── RecipePriority.java │ ├── RecipeType.java │ ├── RecipeTypeIdResolver.java │ ├── RecipeTypeResolver.java │ ├── anvil │ │ ├── RepairTask.java │ │ ├── RepairTaskDefault.java │ │ ├── RepairTaskDurability.java │ │ └── RepairTaskResult.java │ ├── brewing │ │ ├── EffectAddition.java │ │ ├── EffectSettings.java │ │ ├── EffectSettingsRequired.java │ │ └── EffectSettingsUpgrade.java │ ├── conditions │ │ ├── AdvancedWorkbenchCondition.java │ │ ├── Condition.java │ │ ├── ConditionAdvancement.java │ │ ├── ConditionCustomPlayerCheck.java │ │ ├── ConditionScoreboard.java │ │ ├── Conditions.java │ │ ├── CraftDelayCondition.java │ │ ├── CraftLimitCondition.java │ │ ├── EliteWorkbenchCondition.java │ │ ├── ExperienceCondition.java │ │ ├── PermissionCondition.java │ │ ├── WeatherCondition.java │ │ ├── WorldBiomeCondition.java │ │ ├── WorldNameCondition.java │ │ └── WorldTimeCondition.java │ ├── data │ │ ├── AnvilData.java │ │ ├── BlastingRecipeData.java │ │ ├── CampfireRecipeData.java │ │ ├── CookingRecipeData.java │ │ ├── CraftingData.java │ │ ├── FurnaceRecipeData.java │ │ ├── GrindstoneData.java │ │ ├── IRecipeData.java │ │ ├── ISmithingData.java │ │ ├── IngredientData.java │ │ ├── RecipeData.java │ │ ├── SmithingData.java │ │ └── SmokerRecipeData.java │ ├── items │ │ ├── Ingredient.java │ │ ├── RecipeItemStack.java │ │ ├── Result.java │ │ ├── extension │ │ │ ├── CommandResultExtension.java │ │ │ ├── ExecutionType.java │ │ │ ├── MythicMobResultExtension.java │ │ │ ├── ResultExtension.java │ │ │ ├── ResultExtensionAdvancement.java │ │ │ └── SoundResultExtension.java │ │ └── target │ │ │ ├── MergeAdapter.java │ │ │ ├── MergeOption.java │ │ │ ├── ResultTarget.java │ │ │ └── adapters │ │ │ ├── ArmorTrimMergeAdapter.java │ │ │ ├── BannerMergeAdapter.java │ │ │ ├── BlockEntityMergeAdapter.java │ │ │ ├── BookMetaMergeAdapter.java │ │ │ ├── CompassMergeAdapter.java │ │ │ ├── DamageMergeAdapter.java │ │ │ ├── DisplayLoreMergeAdapter.java │ │ │ ├── DisplayNameMergeAdapter.java │ │ │ ├── ElementOption.java │ │ │ ├── ElementOptionComponentBukkit.java │ │ │ ├── EnchantMergeAdapter.java │ │ │ ├── EnchantedBookMergeAdapter.java │ │ │ ├── FireworkRocketMergeAdapter.java │ │ │ ├── ItemTypeMergeAdapter.java │ │ │ ├── NBTMergeAdapter.java │ │ │ └── PlaceholderAPIMergeAdapter.java │ └── settings │ │ ├── AdvancedRecipeSettings.java │ │ ├── CraftingRecipeSettings.java │ │ └── EliteRecipeSettings.java │ ├── registry │ ├── CCRegistries.java │ ├── RegistryItemCreatorTabs.java │ ├── RegistryRecipes.java │ └── TypeRegistryRecipeConditions.java │ └── utils │ ├── CauldronUtils.java │ ├── ChatUtils.java │ ├── CraftManager.java │ ├── ItemLoader.java │ ├── NamespacedKeyUtils.java │ ├── PlayerUtil.java │ ├── UpdateChecker.java │ └── chat │ ├── CollectionEditor.java │ └── CollectionView.java └── resources ├── config.yml ├── data └── customcrafting │ ├── items │ ├── advanced_crafting_table.conf │ └── recipe_book.conf │ └── recipes │ ├── advanced_crafting_table.conf │ └── recipe_book.conf ├── lang ├── de_DE.json ├── en_US.json ├── ru_RU.json ├── zh_CN.json └── zn_tw.json ├── plugin.yml └── recipe_book.conf /.github/ISSUE_TEMPLATE/bug_report.yml: -------------------------------------------------------------------------------- 1 | name: Bug Report 2 | description: File a bug report. 3 | labels: [ "bug", "triage" ] 4 | assignees: 5 | - WolfyScript 6 | body: 7 | - type: markdown 8 | attributes: 9 | value: | 10 | Thanks for taking the time to fill out this bug report! 11 | Before reporting make sure there isn't a similar open issue and that you read the Wiki, especially the FAQ. 12 | If you think you have a bug, but are not sure, feel free to ask in the `#support` channel on [Discord](https://discord.gg/qGhDTSr) 13 | - type: textarea 14 | id: the-bug 15 | attributes: 16 | label: What happened? 17 | description: What kind of bug did you encounter? You can also inlcude screenshots to explain the issue. 18 | placeholder: Tell us what you see! 19 | value: "A bug happened!" 20 | validations: 21 | required: true 22 | - type: textarea 23 | id: reproduce 24 | attributes: 25 | label: How can the bug be reproduced? 26 | description: How do you trigger this bug? Please walk us through it step by step. This may include a video, or detailed instructions to help reconstruct the issue. 27 | validations: 28 | required: true 29 | - type: textarea 30 | id: expected-behaviour 31 | attributes: 32 | label: Expected Behaviour? 33 | description: What is the expected behaviour? 34 | validations: 35 | required: true 36 | - type: input 37 | attributes: 38 | label: Plugin version 39 | description: What version of CustomCrafting and WolfyUtilities do you use? **latest is not a version!** 40 | placeholder: "e.g. CustomCrafting 1.7.1.3, WolfyUtilities v1.8.0.0" 41 | validations: 42 | required: true 43 | - type: input 44 | attributes: 45 | label: Server software 46 | description: What server software do you use? (Spigot, Paper, etc.) and on which version of Minecraft? 47 | placeholder: "e.g. Spigot 1.17.1" 48 | validations: 49 | required: true 50 | - type: textarea 51 | id: logs 52 | attributes: 53 | label: Relevant log output 54 | description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. 55 | render: shell 56 | - type: checkboxes 57 | id: submit 58 | attributes: 59 | label: Submit issue 60 | description: "By submitting this issue you made sure that you," 61 | options: 62 | - label: "read the Wiki and especially the FaQ, and made sure there is no fix to your issue," 63 | required: true 64 | - label: "searched for and ensured there isn't already an open issue regarding this," 65 | required: true 66 | - label: "are running the latest version of your server software (Spigot, Paper, etc.), and plugins (WolfyUtilities, CustomCrafting)." 67 | required: true -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Discord Server 4 | url: https://discord.gg/qGhDTSr 5 | about: If you have minor issues or questions in general about the plugin, feel free to join the Discord server! -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yml: -------------------------------------------------------------------------------- 1 | name: Feature Request/Improvement 2 | description: Suggest a new feature or improvements to existing ones. 3 | labels: [ "enhancement" ] 4 | assignees: 5 | - WolfyScript 6 | body: 7 | - type: markdown 8 | attributes: 9 | value: | 10 | Thank you for filling out a feature request for CustomCrafting! 11 | Please describe everything as detailed as possible, so it is easier to understand. 12 | Before submitting the issue please make sure, that you searched for and ensured there isn't a duplicate issue. 13 | Additionally, please make sure that you are using the latest plugin version and the feature isn't already implemented! 14 | If you think you have a good feature request, but are not sure if you should post it, feel free to ask in the `#support` channel on [Discord](https://discord.gg/qGhDTSr) 15 | - type: textarea 16 | attributes: 17 | label: The Problem 18 | description: Is your feature request related to a problem? Please describe. 19 | validations: 20 | required: true 21 | - type: textarea 22 | attributes: 23 | label: Solution 24 | description: Describe the solution you would like. 25 | validations: 26 | required: true 27 | - type: textarea 28 | attributes: 29 | label: Alternatives 30 | description: Describe alternatives you've considered. 31 | validations: 32 | required: true 33 | - type: textarea 34 | attributes: 35 | label: Additional Context 36 | description: Add any other context or screenshots about the feature request here. 37 | validations: 38 | required: true 39 | - type: checkboxes 40 | attributes: 41 | label: Submit issue 42 | description: "By submitting this issue you made sure that you," 43 | options: 44 | - label: "searched for and ensured there isn't already an open issue regarding this," 45 | required: true 46 | - label: "are running the latest version of your server software (Spigot, Paper, etc.), and plugins (WolfyUtilities, CustomCrafting)." 47 | required: true -------------------------------------------------------------------------------- /.github/release_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "categories": [ 3 | { 4 | "title": "## ✨ Next Generation Features & Changes", 5 | "labels": [ 6 | "epoch-change" 7 | ] 8 | }, 9 | { 10 | "title": "## 🚧 Breaking Changes", 11 | "labels": [ 12 | "breaking-change" 13 | ] 14 | }, 15 | { 16 | "title": "## 🚀 Features", 17 | "labels": [ 18 | "enhancement", 19 | "feat" 20 | ] 21 | }, 22 | { 23 | "title": "## 🐛 Fixes", 24 | "labels": [ 25 | "fix", 26 | "bug" 27 | ] 28 | }, 29 | { 30 | "title": "## 🧪 Tests", 31 | "labels": [ 32 | "test" 33 | ] 34 | }, 35 | { 36 | "title": "## ⚙️ CI/CD", 37 | "labels": [ 38 | "ci", "cd" 39 | ] 40 | } 41 | ], 42 | "ignore_labels": [ 43 | "skip-changelog" 44 | ], 45 | "label_extractor": [ 46 | { 47 | "pattern": "^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\\([\\w\\-\\.]+\\))?(!)?: ([\\w ])+([\\s\\S]*)", 48 | "target": "$1" 49 | }, 50 | { 51 | "pattern": "^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\\([\\w\\-\\.]+\\)){1}(!)?: ([\\w ])+([\\s\\S]*)", 52 | "target": "scope-$2" 53 | }, 54 | { 55 | "pattern": "^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\\([\\w\\-\\.]+\\))?!: ([\\w ])+([\\s\\S]*)", 56 | "target": "breaking-change" 57 | }, 58 | { 59 | "pattern": "^BREAKING CHANGE:(.*)", 60 | "target": "breaking-change" 61 | }, 62 | { 63 | "pattern": "^ignore(\\([\\w\\-\\.]+\\))?: ([\\w ])+([\\s\\S]*)", 64 | "target": "skip-changelog" 65 | } 66 | ], 67 | "tag_resolver": { 68 | "method": "sort" 69 | }, 70 | "sort": { 71 | "order": "ASC", 72 | "on_property": "mergedAt" 73 | }, 74 | "template": "#{{CHANGELOG}}\n\n", 75 | "pr_template": "- #{{TITLE}} (##{{NUMBER}}) - #{{AUTHOR}}", 76 | "commit_template": "- #{{TITLE}} ([`details`](https://github.com/WolfyScript/CustomCrafting/commit/#{{MERGE_SHA}}))", 77 | "empty_template": "- no changes" 78 | } -------------------------------------------------------------------------------- /.github/workflows/create_release.yml: -------------------------------------------------------------------------------- 1 | name: create_release.yml 2 | on: 3 | push: 4 | tags: 5 | - "v-**" 6 | 7 | permissions: 8 | contents: write 9 | pull-requests: read 10 | 11 | jobs: 12 | release: 13 | if: ${{ startsWith(github.ref, 'refs/tags/') }} 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: Checkout project sources 17 | uses: actions/checkout@v4 18 | 19 | - name: Get actual Version 20 | id: get_version 21 | run: | 22 | version=$(echo ${{github.ref_name}} | cut -d- -f2) 23 | echo "::set-output name=version::$version" 24 | 25 | - name: Build Changelog 26 | id: github_release 27 | uses: mikepenz/release-changelog-builder-action@v5 28 | env: 29 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 30 | with: 31 | mode: HYBRID 32 | configuration: .github/release_config.json 33 | 34 | - name: Create Release 35 | uses: softprops/action-gh-release@v2 36 | with: 37 | draft: true 38 | name: ${{steps.get_version.outputs.version}} 39 | body: ${{steps.github_release.outputs.changelog}} -------------------------------------------------------------------------------- /.github/workflows/publish_release.yml: -------------------------------------------------------------------------------- 1 | name: publish_release.yml 2 | on: 3 | release: 4 | types: [ published ] 5 | workflow_dispatch: 6 | 7 | jobs: 8 | publish-gradle: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout project sources 12 | uses: actions/checkout@v4 13 | 14 | - name: Setup Java 15 | uses: actions/setup-java@v4 16 | with: 17 | java-version: 21 18 | distribution: temurin 19 | 20 | - name: Setup Gradle 21 | uses: gradle/actions/setup-gradle@v4 22 | 23 | - name: Execute Gradle build 24 | run: gradle build shadowJar artifactoryPublish modrinth 25 | env: 26 | ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} 27 | ARTIFACTORY_TOKEN: ${{ secrets.ARTIFACTORY_TOKEN }} 28 | MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }} 29 | CHANGELOG: ${{ github.event.release.body }} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # User-specific stuff 2 | .idea/ 3 | 4 | *.iml 5 | *.ipr 6 | *.iws 7 | 8 | test_servers/ 9 | 10 | # IntelliJ 11 | out/ 12 | 13 | # Compiled class file 14 | *.class 15 | 16 | # Log file 17 | *.log 18 | 19 | # BlueJ files 20 | *.ctxt 21 | 22 | # Package Files # 23 | *.jar 24 | *.war 25 | *.nar 26 | *.ear 27 | *.zip 28 | *.tar.gz 29 | *.rar 30 | 31 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 32 | hs_err_pid* 33 | 34 | *~ 35 | 36 | # temporary files which can be created if a process still has a handle open of a deleted file 37 | .fuse_hidden* 38 | 39 | # KDE directory preferences 40 | .directory 41 | 42 | # Linux trash folder which might appear on any partition or disk 43 | .Trash-* 44 | 45 | # .nfs files are created when an open file is removed but is still being accessed 46 | .nfs* 47 | 48 | # General 49 | .DS_Store 50 | .AppleDouble 51 | .LSOverride 52 | 53 | # Icon must end with two \r 54 | Icon 55 | 56 | # Thumbnails 57 | ._* 58 | 59 | # Files that might appear in the root of a volume 60 | .DocumentRevisions-V100 61 | .fseventsd 62 | .Spotlight-V100 63 | .TemporaryItems 64 | .Trashes 65 | .VolumeIcon.icns 66 | .com.apple.timemachine.donotpresent 67 | 68 | # Directories potentially created on remote AFP share 69 | .AppleDB 70 | .AppleDesktop 71 | Network Trash Folder 72 | Temporary Items 73 | .apdisk 74 | 75 | # Windows thumbnail cache files 76 | Thumbs.db 77 | Thumbs.db:encryptable 78 | ehthumbs.db 79 | ehthumbs_vista.db 80 | 81 | # Dump file 82 | *.stackdump 83 | 84 | # Folder config file 85 | [Dd]esktop.ini 86 | 87 | # Recycle Bin used on file shares 88 | $RECYCLE.BIN/ 89 | 90 | # Windows Installer files 91 | *.cab 92 | *.msi 93 | *.msix 94 | *.msm 95 | *.msp 96 | 97 | # Windows shortcuts 98 | *.lnk 99 | 100 | target/ 101 | 102 | pom.xml.tag 103 | pom.xml.releaseBackup 104 | pom.xml.versionsBackup 105 | pom.xml.next 106 | 107 | release.properties 108 | dependency-reduced-pom.xml 109 | buildNumber.properties 110 | .mvn/timing.properties 111 | .mvn/wrapper/maven-wrapper.jar 112 | .flattened-pom.xml 113 | 114 | # Common working directory 115 | run/ 116 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
35 | * It contains:
36 | * - the recipe slot this data belongs to,
37 | * - the Ingredient of the recipe,
38 | * - the CustomItem that was chosen from that Ingredient,
39 | * - and the created ItemStack of the CustomItem.
40 | */
41 | public record IngredientData(int matrixSlot, int recipeSlot, Ingredient ingredient, StackReference reference, ItemStack itemStack) {
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/spigot/src/main/java/me/wolfyscript/customcrafting/recipes/data/SmithingData.java:
--------------------------------------------------------------------------------
1 | /*
2 | * ____ _ _ ____ ___ ____ _ _ ____ ____ ____ ____ ___ _ _ _ ____
3 | * | | | [__ | | | |\/| | |__/ |__| |___ | | |\ | | __
4 | * |___ |__| ___] | |__| | | |___ | \ | | | | | | \| |__]
5 | *
6 | * CustomCrafting Recipe creation and management tool for Minecraft
7 | * Copyright (C) 2021 WolfyScript
8 | *
9 | * This program is free software: you can redistribute it and/or modify
10 | * it under the terms of the GNU General Public License as published by
11 | * the Free Software Foundation, either version 3 of the License, or
12 | * (at your option) any later version.
13 | *
14 | * This program is distributed in the hope that it will be useful,
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | * GNU General Public License for more details.
18 | *
19 | * You should have received a copy of the GNU General Public License
20 | * along with this program. If not, see
32 | * e.g. in crafting recipes.
33 | */
34 | BULK,
35 | /**
36 | * The default value.
37 | * The extension will always be executed once.
38 | */
39 | ONCE
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/spigot/src/main/java/me/wolfyscript/customcrafting/recipes/settings/AdvancedRecipeSettings.java:
--------------------------------------------------------------------------------
1 | /*
2 | * ____ _ _ ____ ___ ____ _ _ ____ ____ ____ ____ ___ _ _ _ ____
3 | * | | | [__ | | | |\/| | |__/ |__| |___ | | |\ | | __
4 | * |___ |__| ___] | |__| | | |___ | \ | | | | | | \| |__]
5 | *
6 | * CustomCrafting Recipe creation and management tool for Minecraft
7 | * Copyright (C) 2021 WolfyScript
8 | *
9 | * This program is free software: you can redistribute it and/or modify
10 | * it under the terms of the GNU General Public License as published by
11 | * the Free Software Foundation, either version 3 of the License, or
12 | * (at your option) any later version.
13 | *
14 | * This program is distributed in the hope that it will be useful,
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | * GNU General Public License for more details.
18 | *
19 | * You should have received a copy of the GNU General Public License
20 | * along with this program. If not, see