minecraft-inventory 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +566 -0
- package/package.json +37 -0
- package/src/InventoryGUI.tsx +108 -0
- package/src/cache/textureCache.ts +95 -0
- package/src/components/CursorItem/CursorItem.tsx +94 -0
- package/src/components/CursorItem/index.ts +1 -0
- package/src/components/HUD/HUD.tsx +11 -0
- package/src/components/HUD/index.ts +1 -0
- package/src/components/Hotbar/Hotbar.tsx +180 -0
- package/src/components/Hotbar/index.ts +1 -0
- package/src/components/InventoryOverlay/InventoryOverlay.tsx +196 -0
- package/src/components/InventoryOverlay/index.ts +2 -0
- package/src/components/InventoryWindow/EnchantmentOptions.tsx +109 -0
- package/src/components/InventoryWindow/InventoryBackground.tsx +110 -0
- package/src/components/InventoryWindow/InventoryWindow.tsx +120 -0
- package/src/components/InventoryWindow/ProgressBar.tsx +78 -0
- package/src/components/InventoryWindow/VillagerTradeList.tsx +136 -0
- package/src/components/InventoryWindow/index.ts +5 -0
- package/src/components/ItemCanvas/ItemCanvas.tsx +154 -0
- package/src/components/ItemCanvas/index.ts +1 -0
- package/src/components/JEI/JEI.module.css +37 -0
- package/src/components/JEI/JEI.tsx +303 -0
- package/src/components/JEI/index.ts +2 -0
- package/src/components/RecipeGuide/RecipeInventoryView.tsx +293 -0
- package/src/components/RecipeGuide/index.ts +1 -0
- package/src/components/Slot/Slot.module.css +111 -0
- package/src/components/Slot/Slot.tsx +363 -0
- package/src/components/Slot/index.ts +1 -0
- package/src/components/Text/MessageFormatted.css +5 -0
- package/src/components/Text/MessageFormatted.tsx +79 -0
- package/src/components/Text/MessageFormattedString.tsx +74 -0
- package/src/components/Text/chatUtils.ts +172 -0
- package/src/components/Tooltip/Tooltip.module.css +56 -0
- package/src/components/Tooltip/Tooltip.tsx +130 -0
- package/src/components/Tooltip/index.ts +1 -0
- package/src/connector/demo.ts +213 -0
- package/src/connector/index.ts +4 -0
- package/src/connector/mineflayer.ts +113 -0
- package/src/connector/types.ts +41 -0
- package/src/context/InventoryContext.tsx +157 -0
- package/src/context/ScaleContext.tsx +73 -0
- package/src/context/TextureContext.tsx +70 -0
- package/src/globals.d.ts +4 -0
- package/src/hooks/useKeyboardShortcuts.ts +41 -0
- package/src/hooks/useMobile.ts +28 -0
- package/src/index.tsx +65 -0
- package/src/mount.tsx +52 -0
- package/src/registry/index.ts +21 -0
- package/src/registry/inventories.ts +612 -0
- package/src/styles/tokens.css +47 -0
- package/src/types.ts +176 -0
package/src/types.ts
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
export interface ItemStack {
|
|
2
|
+
type: number
|
|
3
|
+
count: number
|
|
4
|
+
/** Snake_case item name, e.g. "diamond_sword". Used for texture lookup. */
|
|
5
|
+
name?: string
|
|
6
|
+
metadata?: number
|
|
7
|
+
nbt?: Record<string, unknown>
|
|
8
|
+
displayName?: string
|
|
9
|
+
enchantments?: Array<{ name: string; level: number }>
|
|
10
|
+
lore?: string[]
|
|
11
|
+
durability?: number
|
|
12
|
+
maxDurability?: number
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface SlotState {
|
|
16
|
+
index: number
|
|
17
|
+
item: ItemStack | null
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export type MouseButton = 'left' | 'right' | 'middle'
|
|
21
|
+
export type ClickMode = 'normal' | 'shift' | 'number' | 'middle' | 'drop' | 'drag' | 'double'
|
|
22
|
+
|
|
23
|
+
export interface SlotClickEvent {
|
|
24
|
+
slotIndex: number
|
|
25
|
+
button: MouseButton
|
|
26
|
+
mode: ClickMode
|
|
27
|
+
numberKey?: number
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface DragEvent {
|
|
31
|
+
startSlot: number
|
|
32
|
+
endSlot: number
|
|
33
|
+
button: MouseButton
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export type InventoryAction =
|
|
37
|
+
| { type: 'click'; slotIndex: number; button: MouseButton; mode: ClickMode; numberKey?: number }
|
|
38
|
+
| { type: 'drop'; slotIndex: number; all: boolean }
|
|
39
|
+
| { type: 'drag'; slots: number[]; button: MouseButton }
|
|
40
|
+
| { type: 'close' }
|
|
41
|
+
| { type: 'trade'; tradeIndex: number }
|
|
42
|
+
| { type: 'rename'; text: string }
|
|
43
|
+
| { type: 'enchant'; enchantIndex: number }
|
|
44
|
+
| { type: 'beacon'; primaryEffect: number; secondaryEffect: number }
|
|
45
|
+
| { type: 'hotbar-swap'; slotIndex: number; hotbarSlot: number }
|
|
46
|
+
|
|
47
|
+
export interface InventoryWindowState {
|
|
48
|
+
windowId: number
|
|
49
|
+
type: string
|
|
50
|
+
title?: string
|
|
51
|
+
slots: SlotState[]
|
|
52
|
+
properties?: Record<string, number>
|
|
53
|
+
heldItem: ItemStack | null
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface PlayerState {
|
|
57
|
+
activeHotbarSlot: number
|
|
58
|
+
inventory: SlotState[]
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export interface TextureAtlas {
|
|
62
|
+
url: string
|
|
63
|
+
tileSize: number
|
|
64
|
+
tilesPerRow: number
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export type ScaleValue = number | string
|
|
68
|
+
|
|
69
|
+
export interface InventoryGUIConfig {
|
|
70
|
+
scale?: ScaleValue
|
|
71
|
+
slotSize?: number
|
|
72
|
+
showJEI?: boolean
|
|
73
|
+
jeiPosition?: 'left' | 'right'
|
|
74
|
+
showTooltips?: boolean
|
|
75
|
+
resourcePackUrl?: string
|
|
76
|
+
textureAtlas?: TextureAtlas
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
export interface SlotDefinition {
|
|
81
|
+
index: number
|
|
82
|
+
x: number
|
|
83
|
+
y: number
|
|
84
|
+
size?: number
|
|
85
|
+
group: string
|
|
86
|
+
label?: string
|
|
87
|
+
acceptsItem?: (item: ItemStack) => boolean
|
|
88
|
+
resultSlot?: boolean
|
|
89
|
+
fuelSlot?: boolean
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export interface ProgressBar {
|
|
93
|
+
id: string
|
|
94
|
+
x: number
|
|
95
|
+
y: number
|
|
96
|
+
width: number
|
|
97
|
+
height: number
|
|
98
|
+
direction: 'right' | 'up' | 'down' | 'left'
|
|
99
|
+
textureX: number
|
|
100
|
+
textureY: number
|
|
101
|
+
emptyTextureX?: number
|
|
102
|
+
emptyTextureY?: number
|
|
103
|
+
getValue: (props: Record<string, number>) => number
|
|
104
|
+
getMax: (props: Record<string, number>) => number
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export interface InventoryTypeDefinition {
|
|
108
|
+
name: string
|
|
109
|
+
title: string
|
|
110
|
+
backgroundTexture: string
|
|
111
|
+
backgroundWidth: number
|
|
112
|
+
backgroundHeight: number
|
|
113
|
+
/** Minecraft version for GUI texture lookup, e.g. '1.16.4' or '1.21.4'. Defaults to base URL version. */
|
|
114
|
+
guiTextureVersion?: string
|
|
115
|
+
slots: SlotDefinition[]
|
|
116
|
+
progressBars?: ProgressBar[]
|
|
117
|
+
playerInventoryOffset?: { x: number; y: number }
|
|
118
|
+
properties?: Record<string, { dataSlot: number; description: string }>
|
|
119
|
+
windowType?: number | string
|
|
120
|
+
hasTitle?: boolean
|
|
121
|
+
extraData?: Record<string, unknown>
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export interface RecipeGuide {
|
|
125
|
+
title: string
|
|
126
|
+
description?: string
|
|
127
|
+
/** 'crafting' = 3×3 grid, 'smelting' = input+fuel→result, 'custom' = description only */
|
|
128
|
+
type: 'crafting' | 'smelting' | 'custom'
|
|
129
|
+
/** For crafting: 9-element array (null = empty slot) */
|
|
130
|
+
ingredients?: (ItemStack | null)[]
|
|
131
|
+
input?: ItemStack | null
|
|
132
|
+
fuel?: ItemStack | null
|
|
133
|
+
result?: ItemStack | null
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/** A single entry in the recipe navigation stack */
|
|
137
|
+
export interface RecipeNavFrame {
|
|
138
|
+
/** The item whose recipes/usages are being viewed */
|
|
139
|
+
item: { type: number; name: string; displayName: string; count?: number; metadata?: number }
|
|
140
|
+
mode: 'recipes' | 'usages'
|
|
141
|
+
guides: RecipeGuide[]
|
|
142
|
+
/** Currently displayed guide index within `guides` */
|
|
143
|
+
guideIndex: number
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export interface TradeOffer {
|
|
147
|
+
inputItem1: ItemStack
|
|
148
|
+
inputItem2: ItemStack | null
|
|
149
|
+
outputItem: ItemStack
|
|
150
|
+
disabled: boolean
|
|
151
|
+
uses: number
|
|
152
|
+
maxUses: number
|
|
153
|
+
xp: number
|
|
154
|
+
priceMultiplier: number
|
|
155
|
+
demand: number
|
|
156
|
+
specialPrice: number
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export interface VillagerWindowState extends InventoryWindowState {
|
|
160
|
+
trades: TradeOffer[]
|
|
161
|
+
selectedTrade: number
|
|
162
|
+
villagerLevel: number
|
|
163
|
+
villagerXp: number
|
|
164
|
+
isRegularVillager: boolean
|
|
165
|
+
canRestock: boolean
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export interface EnchantingWindowState extends InventoryWindowState {
|
|
169
|
+
enchantmentOptions: Array<{
|
|
170
|
+
level: number
|
|
171
|
+
enchantmentId: number
|
|
172
|
+
enchantmentLevel: number
|
|
173
|
+
requiredXp: number
|
|
174
|
+
}>
|
|
175
|
+
seed: number
|
|
176
|
+
}
|