Add dropper location selector: discover available droppers on network, pass through server, and add dropdown in order panel for location-based dispensing
This commit is contained in:
@@ -15,6 +15,9 @@ function InventoryGrid() {
|
||||
const [orderAmount, setOrderAmount] = useState(1);
|
||||
const [sortBy, setSortBy] = useState('count');
|
||||
const [activeCategory, setActiveCategory] = useState('all');
|
||||
const [selectedDropper, setSelectedDropper] = useState('');
|
||||
|
||||
const droppers = inventory.droppers || [];
|
||||
|
||||
const items = getFilteredItems();
|
||||
|
||||
@@ -33,8 +36,8 @@ function InventoryGrid() {
|
||||
|
||||
const handleOrder = useCallback(async () => {
|
||||
if (!selectedItem || orderAmount <= 0) return;
|
||||
await orderItem(selectedItem.name, orderAmount);
|
||||
}, [selectedItem, orderAmount, orderItem]);
|
||||
await orderItem(selectedItem.name, orderAmount, selectedDropper || undefined);
|
||||
}, [selectedItem, orderAmount, orderItem, selectedDropper]);
|
||||
|
||||
const handleItemClick = (item) => {
|
||||
setSelectedItem(item);
|
||||
@@ -162,6 +165,22 @@ function InventoryGrid() {
|
||||
<div className="order-section">
|
||||
<h4>📤 Order Items</h4>
|
||||
<div className="order-controls">
|
||||
{droppers.length > 1 && (
|
||||
<div className="dropper-select-wrapper">
|
||||
<label className="dropper-label">📍 Dispense to:</label>
|
||||
<select
|
||||
className="dropper-select"
|
||||
value={selectedDropper}
|
||||
onChange={(e) => setSelectedDropper(e.target.value)}
|
||||
>
|
||||
{droppers.map((d) => (
|
||||
<option key={d.name} value={d.name}>
|
||||
{d.name.replace(/^minecraft:/, '')}{d.isDefault ? ' (default)' : ''}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
</div>
|
||||
)}
|
||||
<div className="order-amount-controls">
|
||||
<button className="mc-btn" onClick={() => setOrderAmount(Math.max(1, orderAmount - 1))}>-</button>
|
||||
<input
|
||||
|
||||
Reference in New Issue
Block a user