netease-ui-binder

Implements NetEase Minecraft JSON UI layouts and declarative Python binding decorators.

Updated Apr 11, 2026
One-click install
npx skills add https://github.com/Coral5644/NekansModPack --skill netease-ui-binder-coral5644
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: netease-ui-binder
Source: https://github.com/Coral5644/NekansModPack/tree/main/.cursor/skills/netease-ui-binder
Command: npx skills add https://github.com/Coral5644/NekansModPack --skill netease-ui-binder-coral5644

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Building NetEase Minecraft UIs requires coordinating JSON UI files with Python backend logic through hash-derived binding names, and mistakes in paths, decorators, or escaping cause silent UI failures that are hard to debug. ## Core Features & Use Cases - JSON UI Authoring: Rules for text escaping (%% for percent, \n for newlines), clip_ratio progress bars, dynamic texture binding via binding_name_override, and button bindings through $pressed_button_name. - Declarative Binding Backend: ScreenNodeWrapper pages with nested Bindable classes using @bindString, @bindFloat, @onButtonUp, @toggle, @editBox, @slider, and @collection decorators driven by centralized UIPath constants. - Binding Name Stability: Hash names derived from md5(path + type tag), with the gen_bindable_map.py tool to detect drift when paths change. - Use Case: When adding a settings page with a toggle, slider, and input box, declare UIPath constants, write the Bindable class with composite decorators, wire the JSON bindings, and regenerate the bindable map to verify hashes. ## Quick Start Ask the assistant to create a new NetEase Minecraft UI page with a close button and a progress bar using the NekansLibs binding decorators.

Frequently Asked Questions about netease-ui-binder

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I bind a Python value to a NetEase Minecraft JSON UI control?▼

Declare the control path in the UIPath class in Config.py, then write a method in the page's nested Bindable class decorated with @bindString, @bindFloat, @bindInt, or @bindBool passing that path. The decorator generates an #nkui_ hash binding name used in the JSON bindings array.

How do I create a toggle, slider, or edit box binding in NekansLibs?▼

Use the composite decorators @toggle, @slider, or @editBox with the control path. Capture owner = self, define inner functions like onChange and value, and return them as a tuple; inner function names must stay fixed because they feed the binding hash.

Why did my NetEase UI binding name change after editing the code?▼

Binding names are md5 hashes of the control path plus a type tag, so renaming a UIPath constant or a composite inner function changes the hash. Renaming classes, methods, or moving files does not. Run tools/gen_bindable_map.py to see added or changed bindings.

How do I make a progress bar with clip_ratio in NetEase JSON UI?▼

Bind a @bindFloat method returning 1.0 - progress, then on the image control add a binding with binding_name_override set to #clip_ratio and clip_direction set. clip_ratio 0 means full bar and 1 means empty.

Why does my label show a literal percent sign error in NetEase JSON UI?▼

Label text is parsed as an expression, so a single % breaks rendering. Escape it as %% in JSON and in Python binding return values, for example "{:.0f}%%".format(value), and use \\n for newlines.

Can I dynamically change an image texture through a NetEase UI binding?▼

Yes. Return a texture path from a @bindString method and add binding_name_override set to #texture on the image control itself, since bindings do not propagate from parent to child. Keep $default_texture as a fallback value.