← Назад к ресурсам

Infinite Use

Toggle any held item to be infinite — totems revive forever, blocks place endlessly, tools have no durability loss. One command, one tag, every item.

Modrinth game-mechanics

Описание

# InfiniteUse Make any item infinite with one command. Totems become unlimited. Blocks place forever. Tools never break. ## Features A single command turns the item in your main hand into an **infinite** item: - **Stack count never decreases** — eat food, place blocks, throw splash potions, shoot arrows, fire ender pearls, drink potions, use buckets... the stack never goes down. - **Durability never decreases** — swords, pickaxes, shears, bows, fishing rods, crossbows, elytra... the bar stays full. - **Totems of Undying** — survive death as many times as you want from a single totem. - **End Crystals**, **Boats**, **Eggs**, **Snowballs**, **Splash Potions**, **all subclass items** — covered via a unified `ItemStack` dispatch hook. The marker is stored as an NBT tag (1.16.5–1.20.4) or as a custom `DataComponent` (1.20.5+), so it persists across save/load and works on dedicated servers. ### Move duplication is fixed Earlier naive implementations duplicate items when you shift-click them in inventories (the source stack doesn't decrement, but the destination still receives the items). InfiniteUse uses a **thread-local consume context**: cancellation only triggers when the stack is actually being *consumed* (use / place / eat / totem trigger), not during inventory transfers. Move freely without duplication. ## Commands Requires OP permissions (level 2). | Command | Description | |--------|-------------| | `/infiniteuse` or `/iu` | Toggle InfiniteUse on the held item | | `/iu on` | Mark the held item as infinite | | `/iu off` | Remove the mark | | `/iu toggle` | Same as no argument | | `/iu status` | Show current state of the held item | ## Requirements - Fabric Loader - Fabric API Each jar targets one Minecraft version. **Use the jar that exactly matches your Minecraft version.** ### Jar / Minecraft compatibility table | Jar file | Compatible Minecraft version | |---|---| | `infiniteuse-mc1.16.5-1.0.0.jar` | 1.16.5 | | `infiniteuse-mc1.17.1-1.0.0.jar` | 1.17.1 | | `infiniteuse-mc1.18.2-1.0.0.jar` | 1.18.2 | | `infiniteuse-mc1.19.4-1.0.0.jar` | 1.19.4 | | `infiniteuse-mc1.20.1-1.0.0.jar` | 1.20.1 | | `infiniteuse-mc1.20.4-1.0.0.jar` | 1.20.2 / 1.20.3 / 1.20.4 | | `infiniteuse-mc1.20.6-1.0.0.jar` | 1.20.5 / 1.20.6 | | `infiniteuse-mc1.21.1-1.0.0.jar` | 1.21 / 1.21.1 | | `infiniteuse-mc1.21.2-1.0.0.jar` | 1.21.2 | | `infiniteuse-mc1.21.3-1.0.0.jar` | 1.21.3 | | `infiniteuse-mc1.21.4-1.0.0.jar` | 1.21.4 | | `infiniteuse-mc1.21.5-1.0.0.jar` | 1.21.5 | | `infiniteuse-mc1.21.6-1.0.0.jar` | 1.21.6 | | `infiniteuse-mc1.21.7-1.0.0.jar` | 1.21.7 | | `infiniteuse-mc1.21.8-1.0.0.jar` | 1.21.8 | | `infiniteuse-mc1.21.9-1.0.0.jar` | 1.21.9 | | `infiniteuse-mc1.21.10-1.0.0.jar` | 1.21.10 | | `infiniteuse-mc1.21.11-1.0.0.jar` | 1.21.11 | Versions not listed (1.16.0-1.16.4, 1.17.0, 1.18.0/1.18.1, 1.19.0-1.19.3, 1.20.0, etc.) are **not supported** — Minecraft's APIs differ enough between point releases that a mismatched jar will fail to load or crash. ## How it works A Mixin on `ItemStack#decrement` and `ItemStack#setDamage` cancels the operation only when: 1. The stack carries the InfiniteUse marker, AND 2. We are inside a "consume" path (`Item#use`, `useOnBlock`, `finishUsing`, `onStoppedUsing`, or `LivingEntity#tryUseDeathProtector` / `tryUseTotem`). Inventory operations (drag, shift-click, hopper transfer, drop) take place outside this context, so counts decrement normally — no duplication. ## Links **YouTube:** [MC clip](https://youtube.com/channel/UCGrw0wd3fF-l-m3wfCLbFKw) Subscribe for updates and tutorials! --- # 日本語 コマンド一発でメインハンドのアイテムを **無限化** するFabric MOD。 ## 特徴 - **スタック数が減らない** — 食べる・置く・スプラッシュポーション投擲・矢発射・エンダーパール・ポーション飲み・バケツ使用…全部減りません - **耐久値が減らない** — 剣・ピッケル・ハサミ・弓・釣竿・クロスボウ・エリトラ…バーは常に満タン - **トーテム・オブ・アンダイング無限** — 1個のトーテムで何度でも蘇生 - **エンドクリスタル / ボート / 卵 / 雪玉 / スプラッシュポーション / その他サブクラス系アイテム** — `ItemStack` の統一エントリで全部カバー マーカーは NBT タグ(1.16.5〜1.20.4)または カスタム DataComponent(1.20.5以降)で保存。セーブ&ロードを跨いでも維持され、専用サーバでも動作します。 ### アイテム移動時の複製を解決済み 素朴な実装だとシフトクリック移動時に「移動先には入る・移動元は減らない」で複製になります。本MODは **スレッドローカルの消費コンテキスト** を使い、実際にアイテムを *消費* する経路(使用/設置/食べる/トーテム発動)でのみキャンセルが発動します。インベントリ移動・ホッパー輸送・ドロップは通常通りに進むので複製しません。 ## コマンド OP権限(レベル2)が必要。 | コマンド | 動作 | |---|---| | `/infiniteuse` または `/iu` | メインハンドのアイテムを無限化トグル | | `/iu on` | 無限化をON | | `/iu off` | 無限化をOFF | | `/iu toggle` | 引数なしと同じ | | `/iu status` | 現在の状態を表示 | ## 対応バージョン 各 jar は **1 つの Minecraft バージョン専用** です。お使いの Minecraft バージョンに合った jar を選んでください。 ### jar と対応 Minecraft バージョン対応表 | jar ファイル | 対応 Minecraft バージョン | |---|---| | `infiniteuse-mc1.16.5-1.0.0.jar` | 1.16.5 | | `infiniteuse-mc1.17.1-1.0.0.jar` | 1.17.1 | | `infiniteuse-mc1.18.2-1.0.0.jar` | 1.18.2 | | `infiniteuse-mc1.19.4-1.0.0.jar` | 1.19.4 | | `infiniteuse-mc1.20.1-1.0.0.jar` | 1.20.1 | | `infiniteuse-mc1.20.4-1.0.0.jar` | 1.20.2 / 1.20.3 / 1.20.4 | | `infiniteuse-mc1.20.6-1.0.0.jar` | 1.20.5 / 1.20.6 | | `infiniteuse-mc1.21.1-1.0.0.jar` | 1.21 / 1.21.1 | | `infiniteuse-mc1.21.2-1.0.0.jar` | 1.21.2 | | `infiniteuse-mc1.21.3-1.0.0.jar` | 1.21.3 | | `infiniteuse-mc1.21.4-1.0.0.jar` | 1.21.4 | | `infiniteuse-mc1.21.5-1.0.0.jar` | 1.21.5 | | `infiniteuse-mc1.21.6-1.0.0.jar` | 1.21.6 | | `infiniteuse-mc1.21.7-1.0.0.jar` | 1.21.7 | | `infiniteuse-mc1.21.8-1.0.0.jar` | 1.21.8 | | `infiniteuse-mc1.21.9-1.0.0.jar` | 1.21.9 | | `infiniteuse-mc1.21.10-1.0.0.jar` | 1.21.10 | | `infiniteuse-mc1.21.11-1.0.0.jar` | 1.21.11 | 上記に載っていないバージョン(1.16.0〜1.16.4、1.17.0、1.18.0/1.18.1、1.19.0〜1.19.3、1.20.0 など)は **非対応** です。Minecraft の API がポイントリリース間で十分に変化するため、合わない jar はロードに失敗するかクラッシュします。 ## 仕組み `ItemStack#decrement` と `ItemStack#setDamage` をMixinで横取りし、以下の条件を**両方**満たす場合にだけキャンセルします: 1. 対象スタックに InfiniteUse マーカーが付いている 2. 「消費パス」内(`Item#use` / `useOnBlock` / `finishUsing` / `onStoppedUsing` / `LivingEntity#tryUseDeathProtector` ・ `tryUseTotem`) インベントリ操作(ドラッグ・シフトクリック・ホッパー輸送・ドロップ)はこの条件外なので普通にスタックが減り、複製しません。 ## YouTube **チャンネル:** [MCクリップ](https://youtube.com/channel/UCGrw0wd3fF-l-m3wfCLbFKw) チャンネル登録よろしく!