d5fd2c97e9
KubeJS uses Rhino as its JS engine, which doesn't support array-spread syntax (`[...a, ...b]`). The line `[...WAYSTONE_ITEMS, ...COIN_ITEMS] .forEach(...)` threw EvaluatorException: syntax error at jei_hides.js:46 on client launch, surfacing the KubeJS client script errors dialog. Fix: use Array.prototype.concat() which is universal JS. Also extracted the hide-quietly helper into a named function for readability.
59 lines
1.8 KiB
JavaScript
59 lines
1.8 KiB
JavaScript
// Brass & Sigil — JEI hides
|
|
//
|
|
// Hides all Waystones items + all Numismatics coin items from the JEI
|
|
// item list. Combined with the server-side recipe removal in
|
|
// economy_policy.js, players don't see crafting recipes OR the item
|
|
// icons in the JEI ingredient list -- they only ever encounter these
|
|
// items through the welcome grant or the bank exchange.
|
|
|
|
const COLORS = [
|
|
'white', 'orange', 'magenta', 'light_blue', 'yellow', 'lime',
|
|
'pink', 'gray', 'light_gray', 'cyan', 'purple', 'blue',
|
|
'brown', 'green', 'red', 'black',
|
|
];
|
|
|
|
const WAYSTONE_ITEMS = [
|
|
// regular waystone variants
|
|
'waystones:waystone',
|
|
'waystones:mossy_waystone',
|
|
'waystones:sandy_waystone',
|
|
'waystones:blackstone_waystone',
|
|
'waystones:deepslate_waystone',
|
|
'waystones:end_stone_waystone',
|
|
// handheld + plate
|
|
'waystones:warp_stone',
|
|
'waystones:warp_scroll',
|
|
'waystones:bound_scroll',
|
|
'waystones:return_scroll',
|
|
'waystones:warp_plate',
|
|
// sharestones (16 colors) + shards
|
|
'waystones:sharestone', // base id if registered
|
|
];
|
|
COLORS.forEach(c => {
|
|
WAYSTONE_ITEMS.push(`waystones:${c}_sharestone`);
|
|
WAYSTONE_ITEMS.push(`waystones:${c}_portstone`);
|
|
});
|
|
|
|
const COIN_ITEMS = [
|
|
'numismatics:spur',
|
|
'numismatics:bevel',
|
|
'numismatics:cog',
|
|
'numismatics:crown',
|
|
'numismatics:sun',
|
|
];
|
|
|
|
// Some IDs may not exist (e.g. base 'waystones:sharestone' isn't
|
|
// registered if only colored variants are). Swallow per-item failures
|
|
// so one bad id doesn't break the whole pass.
|
|
function hideQuietly(event, id) {
|
|
try { event.hide(id); } catch (e) {}
|
|
}
|
|
|
|
JEIEvents.hideItems(event => {
|
|
// KubeJS uses Rhino, which doesn't support array-spread syntax
|
|
// (`[...a, ...b]`). Use .concat() for cross-engine safety.
|
|
WAYSTONE_ITEMS.concat(COIN_ITEMS).forEach(function(id) {
|
|
hideQuietly(event, id);
|
|
});
|
|
});
|