From fadf2b223a7cf8a4efbee939bedadcc5baafb899 Mon Sep 17 00:00:00 2001 From: hypercross Date: Mon, 8 Dec 2025 22:58:06 +0800 Subject: [PATCH] feat: emi, healingcamp --- configureddefaults/config/emi.css | 490 ++++++++++++++++++ .../config/healingcampfire.json5 | 4 +- kubejs/server_scripts/src/compat_recipes.js | 18 +- 3 files changed, 498 insertions(+), 14 deletions(-) create mode 100644 configureddefaults/config/emi.css diff --git a/configureddefaults/config/emi.css b/configureddefaults/config/emi.css new file mode 100644 index 0000000..dd5f1fc --- /dev/null +++ b/configureddefaults/config/emi.css @@ -0,0 +1,490 @@ +/** EMI Config */ + +#general { + /** + * Whether EMI is enabled and visible. + */ + enabled: true; + + /** + * Whether cheating in items is enabled. + */ + cheat-mode: false; + + /** + * How much EMI should use tooltips and popups to show controls and information. + */ + help-level: normal; + + /** + * Where EMI should pull stacks from to populate the index. + */ + index-source: creative; + + /** + * Which sidebar should be searched using the search bar. + */ + search-sidebar: right; + + /** + * Whether normal search queries should include the tooltip. + */ + search-tooltip-by-default: true; + + /** + * Whether normal search queries should include the mod name. + */ + search-mod-name-by-default: false; + + /** + * Whether normal search queries should include the stack's tags. + */ + search-tags-by-default: false; +} + +#ui { + /** + * Which action should be performed when clicking the recipe book. + */ + recipe-book-action: toggle-craftables; + + /** + * Where to display status effects in the inventory. + */ + effect-location: top; + + /** + * Whether to display a gray overlay when hovering over a stack. + */ + show-hover-overlay: true; + + /** + * Whether to add mod name to tooltips + */ + append-mod-id: true; + + /** + * Whether to add mod name to item tooltips, in case another mod provides behavior + */ + append-item-mod-id: true; + + /** + * Prevents recipes being quick crafted from shifting around under the cursor. + */ + miscraft-prevention: true; + + /** + * The unit to display fluids as. + */ + fluid-unit: millibuckets; + + /** + * Whether to use the batched render system. Batching is faster, but may have + * incompatibilities with shaders or other mods. + */ + use-batched-renderer: true; + + /** + * Whether to have the search bar in the center of the screen, instead of to the + * side. + */ + center-search-bar: true; + + /** + * Which sidebar type to switch to when searching. + */ + search-sidebar-focus: index; + + /** + * Which sidebar type to focus when the search is empty. + */ + empty-search-sidebar-focus: none; + + /** + * Whether the EMI config button should be visible. + */ + emi-config-button-visibility: shown; + + /** + * Whether the recipe tree button should be visible. + */ + recipe-tree-button-visibility: auto; + + /** + * The maximum height the recipe screen will grow to be if space is available in + * pixels. + */ + maximum-recipe-screen-height: 256; + + /** + * The minimum width of the recipe screen in pixels. Controls how many tabs there + * can be, and where the page switching buttons go. The default is 176, the width + * of most screens. + */ + minimum-recipe-screen-width: 176; + + /** + * The amount of vertical margin to give in the recipe screen. + */ + vertical-margin: 20; + + /** + * Where to show workstations in the recipe screen + */ + workstation-location: bottom; + + /** + * Display cost per batch when hovering a recipe output + */ + show-cost-per-batch: true; + + /** + * Whether recipes should have a button to set as default. + */ + recipe-default-button: true; + + /** + * Whether recipes should have a button to show the recipe tree. + */ + recipe-tree-button: true; + + /** + * Whether recipes should have a button to fill the ingredients in a handler. + */ + recipe-fill-button: true; + + /** + * Whether recipes should have a button to take a screenshot of the recipe. + */ + recipe-screenshot-button: false; + + /** + * The GUI scale at which recipe screenshots are saved. Use 0 to use the current + * GUI scale. + */ + recipe-screenshot-scale: 0; + + /** + * The pages in the left sidebar + */ + left-sidebar-pages: craftables; + + /** + * The subpanels in the left sidebar + */ + left-sidebar-subpanels: none; + + /** + * How many columns and rows of ingredients to limit the left sidebar to + */ + left-sidebar-size: 12, 100; + + /** + * How much space to maintain between the left sidebar and obstructions, in pixels + */ + left-sidebar-margins: 2, 2, 2, 2; + + /** + * Where to position the left sidebar + */ + left-sidebar-align: left, top; + + /** + * Whether to render the header buttons and page count for the left sidebar + */ + left-sidebar-header: visible; + + /** + * Which theme to use for the left sidebar + */ + left-sidebar-theme: vanilla; + + /** + * The pages in the right sidebar + */ + right-sidebar-pages: index; + + /** + * The subpanels in the right sidebar + */ + right-sidebar-subpanels: none; + + /** + * How many columns and rows of ingredients to limit the right sidebar to + */ + right-sidebar-size: 12, 100; + + /** + * How much space to maintain between the right sidebar and obstructions, in pixels + */ + right-sidebar-margins: 2, 2, 2, 2; + + /** + * Where to position the right sidebar + */ + right-sidebar-align: right, top; + + /** + * Whether to render the header buttons and page count for the right sidebar + */ + right-sidebar-header: visible; + + /** + * Which theme to use for the right sidebar + */ + right-sidebar-theme: vanilla; + + /** + * The pages in the top sidebar + */ + top-sidebar-pages: none; + + /** + * The subpanels in the top sidebar + */ + top-sidebar-subpanels: none; + + /** + * How many columns and rows of ingredients to limit the top sidebar to + */ + top-sidebar-size: 9, 9; + + /** + * How much space to maintain between the top sidebar and obstructions, in pixels + */ + top-sidebar-margins: 2, 2, 2, 2; + + /** + * Where to position the top sidebar + */ + top-sidebar-align: center, center; + + /** + * Whether to render the header buttons and page count for the top sidebar + */ + top-sidebar-header: visible; + + /** + * Which theme to use for the top sidebar + */ + top-sidebar-theme: transparent; + + /** + * The pages in the bottom sidebar + */ + bottom-sidebar-pages: none; + + /** + * The subpanels in the bottom sidebar + */ + bottom-sidebar-subpanels: none; + + /** + * How many columns and rows of ingredients to limit the bottom sidebar to + */ + bottom-sidebar-size: 9, 9; + + /** + * How much space to maintain between the bottom sidebar and obstructions, in + * pixels + */ + bottom-sidebar-margins: 2, 2, 2, 2; + + /** + * Where to position the bottom sidebar + */ + bottom-sidebar-align: center, center; + + /** + * Whether to render the header buttons and page count for the bottom sidebar + */ + bottom-sidebar-header: visible; + + /** + * Which theme to use for the bottom sidebar + */ + bottom-sidebar-theme: transparent; +} + +#binds { + /** + * Toggle the visibility of EMI. + */ + toggle-visibility: "ctrl key.keyboard.o"; + + /** + * Focuses the search bar. + */ + focus-search: "ctrl key.keyboard.f"; + + /** + * Clears the search bar. + */ + clear-search: "key.keyboard.unknown"; + + /** + * Display the recipes for creating a stack. + */ + view-recipes: "key.keyboard.r"; + view-recipes: "key.mouse.left"; + + /** + * Display the recipes that can be created using a stack. + */ + view-uses: "key.keyboard.u"; + view-uses: "key.mouse.right"; + + /** + * Favorite the item to display on the side of the screen opposite of recipies for + * quick access. + */ + favorite: "key.keyboard.a"; + + /** + * Set the default recipe for a given stack in the output of a recipe to that + * recipe. + */ + default-stack: "ctrl key.mouse.left"; + + /** + * Display the recipe tree for a given stack. + */ + view-stack-tree: "key.keyboard.unknown"; + + /** + * Display the recipe tree. + */ + view-tree: "key.keyboard.unknown"; + + /** + * Return to the previous page in EMI. + */ + back: "key.keyboard.backspace"; + + /** + * Return to the next page in EMI after going back. + */ + forward: "key.keyboard.unknown"; + + /** + * When on a stack with an associated recipe: + * Move ingredients for a single result. + */ + craft-one: "key.mouse.left"; + + /** + * When on a stack with an associated recipe: + * Move ingredients for as many results as possible. + */ + craft-all: "shift key.mouse.left"; + + /** + * When on a stack with an associated recipe: + * Move ingredients for a single result and put in inventory if possible. + */ + craft-one-to-inventory: "key.keyboard.unknown"; + + /** + * When on a stack with an associated recipe: + * Move ingredients for as many results as possible and put in inventory if + * possible. + */ + craft-all-to-inventory: "key.keyboard.unknown"; + + /** + * When on a stack with an associated recipe: + * Move ingredients for a single result and put in cursor if possible. + */ + craft-one-to-cursor: "ctrl key.mouse.left"; + + /** + * Display the recipe that will be used to craft on a stack with no recipe context. + */ + show-craft: "key.keyboard.left.shift"; + + /** + * Cheat in one of an item into the inventory. + */ + cheat-one-to-inventory: "ctrl key.mouse.right"; + + /** + * Cheat in a stack of an item into the inventory. + */ + cheat-stack-to-inventory: "ctrl key.mouse.left"; + + /** + * Cheat in one of an item into the cursor. + */ + cheat-one-to-cursor: "ctrl key.mouse.middle"; + + /** + * Cheat in a stack of an item into the cursor. + */ + cheat-stack-to-cursor: "key.keyboard.unknown"; + + /** + * Delete the stack in the cursor when hovering the index + */ + delete-cursor-stack: "key.mouse.left"; + + /** + * Copies the hovered recipe's ID to the clipboard + */ + copy-recipe-id: "key.keyboard.unknown"; + + /** + * In edit mode, hide the hovered stack + */ + hide-stack: "ctrl key.mouse.left"; + + /** + * In edit mode, hide stacks with the hovered stack's id + */ + hide-stack-by-id: "ctrl shift key.mouse.left"; +} + +#dev { + /** + * Whether development functions should be enabled. Not recommended for general + * play. + */ + dev-mode: false; + + /** + * Whether editing the index is enabled + */ + edit-mode: false; + + /** + * Whether to log untranslated tags as warnings. + */ + log-untranslated-tags: false; + + /** + * Whether to log ingredients that don't have a representative tag as warnings. + */ + log-non-tag-ingredients: false; + + /** + * Whether hovering the output of a recipe should show the recipe's EMI ID. + */ + show-recipe-ids: false; + + /** + * Whether to display additional widgets added to recipes from other mods. + * These are typically developer facing and compatibility related, and not useful + * for players. + */ + show-recipe-decorators: false; + + /** + * Whether stacks in the index should display a highlight if they have a recipe + * default. + */ + highlight-defaulted: false; + + /** + * Whether to display exclusion areas + */ + highlight-exclusion-areas: false; +} diff --git a/configureddefaults/config/healingcampfire.json5 b/configureddefaults/config/healingcampfire.json5 index 55efb04..b8c7bb7 100644 --- a/configureddefaults/config/healingcampfire.json5 +++ b/configureddefaults/config/healingcampfire.json5 @@ -4,10 +4,10 @@ "checkForCampfireDelayInTicks": 40, // The radius around the campfire in blocks where players receive the regeneration effect. // min: 1, max: 64 - "healingRadius": 8, + "healingRadius": 6, // The duration of the regeneration effect which the campfire applies. // min: 1, max: 600 - "effectDurationSeconds": 30, + "effectDurationSeconds": 5, // The level of regeneration which the campfire applies, by default 1. // min: 1, max: 50 "regenerationLevel": 1, diff --git a/kubejs/server_scripts/src/compat_recipes.js b/kubejs/server_scripts/src/compat_recipes.js index a42e90a..1d89c23 100644 --- a/kubejs/server_scripts/src/compat_recipes.js +++ b/kubejs/server_scripts/src/compat_recipes.js @@ -1,16 +1,10 @@ ServerEvents.recipes(event => { - event.remove({output:'supplementaries:rope'}); - event.shaped( - '8x farmersdelight:rope', - [ - ' A ', - ' A ', - ' A ' - ], - { - A: 'supplementaries:flax' - } - ); + event.replaceInput({input: 'supplementaries:flax'}, + 'supplementaries:flax', + 'farmersdelight:straw' + ); + + event.shapeless('farmersdelight:straw', 'supplementaries:flax'); event.remove({output:'spelunkery:depth_gauge'});