#JSON-UI General
1 messages · Page 50 of 1
first time ever majorly editing a ui file
cool
and it was successful
really cool
most other times ive tried ive broken it
relatable
Wait, can a block be « Minecraft:empty » ?? Instead of air??
well, air is empty or unfefined
Ok
@weak cape I tried quite a lot and I couldn't
Finally, I deleted the script completely.
yeah
i think air is the default block if the identifer matches nothing else
so you gave up?
I'm still trying
{
"root_panel/hud_title_text_area": {
"type": "panel",
"factory": {
"name": "hud_title_text_factory",
"control_ids": {
"hud_title_text": "[email protected]_title_text"
}
}
},
"custom_title_text": {
"type": "panel",
"size": [
"100%cm",
"100%cm"
],
"controls": [
{
"here the vanilla title": {
// rest of the code + conditional rendering
}
},
{
"Here the element of the animation": {
// rest of the code + conditional rendering
}
}
]
}
}
Do you know why it hides the jotbar, making it unusable even before I run the command?
I need more context
The code I sent you does not hide the hotbar, nor makes the hotbar unusable
I will try to find out why then
Like, did you try my code without any changes?
-# Just to state te obvious, you will have to fix the elements, according to the comments
I placed it like this on the HUD screen.
root_panel": {
"type": "panel",
"controls": [
{
"hud_title_text_area": {
"type": "panel",
"factory": {
"name": "hud_title_text_factory",
"control_ids": {
"hud_title_text": "[email protected]_title_text"
}
That is not the entire file, is it...
Why is this not working
{
"namespace": "custom_shop",
"shop_background": {
"type": "image",
"texture": "textures/ui/shop_background", // Change to your texture path
"size": [ "100%", "100%" ]
},
"exit_button": {
"type": "button",
"size": [ 32, 32 ],
"anchor_from": "top_right",
"anchor_to": "top_right",
"offset": [ -5, 5 ],
"controls":,
"button_mappings": [
{
"from_button_id": "button.menu_exit",
"to_button_id": "button.menu_exit",
"mapping_type": "global"
}
]
},
"custom_button_panel": {
"type": "panel",
"size": [ "100%", 36 ],
"controls": [
{
"button_content": {
"type": "button",
"size": [ "100%", "100%" ],
"controls":
}
},
{
"hover": {
"type": "image",
"texture": "textures/ui/thick_default_hover" // <-- Changed to your thick hover
}
},
{
"pressed": {
"type": "image",
"texture": "textures/ui/thick_default_pressed" // <-- Changed to your thick pressed
}
}
],
"button_mappings": [
{
"from_button_id": "button.menu_select",
"to_button_id": "button.menu_select",
"mapping_type": "focused"
}
]
}
}
]
},
"shop_screen_content": {
"type": "panel",
"controls": [
{ "background": { "bundle": "shop_background" } },
{ "exit": { "bundle": "exit_button" } },
{
"scrolling_panel": {
"type": "stack_panel",
"size": [ "90%", "80%" ],
"factory": {
"name": "buttons",
"control_name": "custom_shop.custom_button_panel"
}
}
}
]
}
}
@hoary skiff or anyone else that knows
It looks like it was made with AI
You got me it was but I use Gemini and Gemini coded a whole shop menu and model form stuff for it and it works
This is the biggest problem
Bundle does not exist, it must be called this way: json "background@custom_shop.shop_background": {}.
@deft shadow
I fixed it already I took textures for Zeqa Network Ui Json ui
To fix mine
And no I didn't copy them
happy new year yall (:
I found that when my form UI generates fewer than a certain number of buttons, it automatically creates some unnecessary extra buttons.Are there some ways to solve this problem?
I only gave the form 5 buttons. but it would give me 5 functional buttons and 1 useless button.
Try this
^^^
I can’t open the file cuz I’m on my phone so I hope my thing helps
and how that would be done is that I don't know much about it
In the end I couldn't. I spent all night trying and part of today too, and even then I couldn't. I don't understand why.
I appreciate that you tried to help me anyway.
how to stop a scrolling element from clipping elements from the side?
or rather, is it possible to make certain elements escape the clipper element and not be clipped by it ever?
i am trying to solve this problem...
Put "allow_clipping": false on that element
thank you very very much
is it possible to make an element take the size of one of its children rather than the combined size of all elements?
the funny thing is that i have the wiki open on that page exactly at this part, yet i couldn't see it
i thought it meant centimeters so my brain just brushed it off and ignored it
it works flowlessly thank you very much
Me too 😅😂
Does anyone know how to make it so that when clicking on either of the two toggle buttons, an image is displayed? json "source_control_name": "(#name = 'next') or (#name = 'back)" I tried this and it doesn't work.
is it possible to create a server form that shows any entity through the entity renderer?
You forgot one ' after back
any ideas of how i can make title render an image when inputting the correct text?
How do I make a custom collection
If it's a complex thing to make, I'll patiently listen more
hope this works
or this one from the wiki:
"namespace": "hud",
"black_conditional_image": {
"type": "image",
"texture": "textures/ui/Black",
"size": [16, 16],
"layer": 10,
"bindings": [
{
"binding_name": "#hud_title_text_string"
},
{
"binding_type": "view",
"source_property_name": "(#hud_title_text_string = 'hello world')",
"target_property_name": "#visible"
}
]
},
"black_conditional_image_factory": {
"type": "panel",
"factory": {
"name": "hud_title_text_factory",
"control_ids": {
"hud_title_text": "[email protected]_conditional_image"
}
}
},
"root_panel": {
"modifications": [
{
"array_name": "controls",
"operation": "insert_front",
"value": {
"[email protected]_conditional_image_factory": {}
}
}
]
}
}```
Oh and you forgot to put the whole thing in parenthesis.
"source_property_name": "((#name = 'next') or (#name = 'back'))"
And it is "control_name" you have to use "property_name"
(unless you want to get a control names after a boolean)
{
"namespace": "progress",
"nether_loading_background": {
"type": "image",
"texture": "textures/ui/transfer_screen",
"color": [
0.5,
0.5,
0.5
]
}
}
For some reason, this only shows a small part that is the top left of the texture image
I want it to show the whole image
Try setting "tiled": false
It is works thx
{
"your_element":{
"type":"image",
"$texture|default":"textures/ui/your_texture",
"texture": "$texture", //$texture is a variable
"variables":{
"requires": "$condition", //returns a boolean
"$texture":"textures/ui/your_second_texture" //this value overwrites the default $texture value if the $condition is true
}
}
}
something like this @timber smelt
What is the mistake?
.button("§l§rButton 24")
.button("§l§rButton 25")
I only want these buttons to be hidden; if "Button 1" is hidden, they don't appear.
I tried that, but it didn't work.
"ores_page_salt": {
"type": "image",
"layer": 4,
"offset": [-75, -5],
"size": ["21%", "21%"],
"texture": "textures/ui/spell_book/page_salt",
"bindings": [
{
"binding_type": "view",
"source_property_name": "((#name = 'next') or (#name = 'back'))",
"target_property_name": "#visible"
}
]
}
How do you know #name exists...
#name is the name of the toggle button.
you gotta get it using the binding too
"ores_page_salt": {
"type": "image",
"layer": 4,
"offset": [-75, -5],
"size": ["21%", "21%"],
"texture": "textures/ui/spell_book/page_salt",
"bindings": [
{
"binding_type": "view",
"source_control_name": "the name of the toggle",
"source_property_name": "((#name = 'next') or (#name = 'back'))",
"target_property_name": "#visible"
}
]
}
Toggle name is back and next
Tyy works! How can I remove the loading progress form with the cancel button?
This
what is it called?
I tried this:
"progress_screen_content": {
"ignored": true
},
And
"progress_content_panel": {
"ignored": true
},
what about visible
doesn't work for both
There are multiple screen elements in that file. I don't really remember which one was it
I tried progress_screen and it kept crashing my minecraft
aight I'll keep trying and hopefully one of them works
It was world_convert_modal_progress_screen_content!
Utilizing factories is it possible to fire hotbar_left multiple times in a frame?
utilizing factories? idk
i think you can add the hotbarleft twice so it fires twice but idk if it works
I've been trying to make something that would help controller players a lot but keep running into brick walls
There's 1 pack I've seen that's able to fire multiple events at once but I'm not sure if I can duplicate inputs the same way for this
^^
Thanks for your time
https://discord.com/channels/523663022053392405/1455314239219695702
if you need some samples
I wish a lot of the "remap gods" actually decided to teach ppl
yeah but sometimes json ui is annoying enough for them. someone that doesnt understand the help they offer just annoys them even more 😂
thats why most gave up or rarely help
The people who make those giant technical UI packs are amazing tbh. I just want to be able to do stuff like that too yk?
i rarely ask for help, my main source is bedrock samples and bedrock wiki
But when I compare myself to other people, others find it utterly hard to understand json ui
depends on the person tbh
I am 1 of them sadly
I don't get half of it
I know it's frowned upon but I've been trying to use vibe coding to understand it better
Yeah, no 😅. Not sure if it helps you. Back when I tried AI in JSON UI it failed big time haha
It has like 0 knowledge
Only helps with JSON syntax.
I do a sort of guided method. Pointing to resources / providing examples of working code
But practice makes master, so coding each time a different thing helps a ton to understand all kinds of concepts.
AI is better at recognizing patterns than me
I see, if it works for you. Why not.
AI explaining can do something. Not really a fan but if it helps, why not
I wish I could get a hold of the creator of deezii UI or whatever it's called
They seem to understand the field better than 90% here
I would say most of the "JSON UI gods" aint that rare.
There are more experts than people may think
It seems all comfortable-ish until you try applying any rendering / binding logic
yup some binding logics just straight up refuse to work
had this happened couple days ago
I've seen a lot of undocumented things that you can only know through trial & error Or if someone tells you
Making layout is quite simple but adding functionality to it is the hard part and can be confusing in many ways
That's the problem tbh, so much is gatekept
It's actively hindering me in creating some QoL for controller users
@manic dragon
For something like JSON UI with no proper documentation, gatekeeping is to be expected tbh
I've seen the concept of input duplication in 1 pack and I've been trying to apply it but it keeps failing
The current wiki is great for starting but unless you try making something with the info, the wiki won't be of much help
Input duplication? I'm not familiar with the term
It's a method to turn 1 input into multiple using factories and panels
Like have you ever seen a resource pack with a drop all items function?
@manic dragon
Yeah
I see what you mean, that's done via "consume_event": false on the element that receives the input. So other elements can also utilize that same input
And the factory is to have all the elements that will use this input at one place but it's not a necessary thing
I was trying to do the same to turn hotbar left into many hotbar left under a conditional
Controllers require multiple inputs to go from slot 1 to slot 8 for example my logic was pretty much
if slot = air then
skip
end
trying to do it in all 1 action
I even have a way to turn it on / off due to a redundant bind
@manic dragon
I can think of a way but it's repetitive and not very efficient ig.
Edit: it probably won't work
Please anything is better than no solution
I can't really code it for you but using my code you can probably do it yourself https://discord.com/channels/523663022053392405/1455314239219695702
You set the button mapping to a specific slot if the condition is met, which condition? up to you
Radwl has tried (the person I am working with) but this doesn't work as you need to manually compute how far to travel in every single circumstance
If slot 1, 4 are filled you go from 1 straight to 4 but what if the numbers change?
You can't hardcode every outcome
That's what I thought of at first xD
I'm a logic grounded systems designer but not a good developer
Oh like that, now it makes more sense. I guess you will have to hardcode every single out come? Or make a loop to check with variables but idk if it will work properly
That is a concept you havent yet learned
We've tried
"Binding loop" to be percise
The only loop that I've seen thus far is via factories
Do you have any examples cause iirc I don't you you'll be able to store indexing like that
I was searching for it.
I believe EchoRif coded it. Maybe someone else. There is a post somewhere hidden. Discord loves to hide important posts 
Lemme see
Yes! This one!
I wish I could see the code without downloading it .. I'm on mobile atm
Well that was sure an experience
It's a type converter using an iterative system
Do we have a join method?
cause I would need to check hotbar_"X"
For a valid value
Tbh tho I might already know the problem and if I'm right it makes this a whole lot more difficult
yeah just "string" + #binding
@manic dragon
Is there a simple slice of code that can be written to quickly check if you can process 2 hotbar move binding events in the same tick?
Im hoping there isn't a priority system and instead that they stack
I don't have any atm
Anyone had an issue with glyphs/ Unicode emojis looking super pixelated on certain devices (mainly switch)? 🙏
i have before
Yeah I saw this issue before. If you use glyphs of large size they get pixelated
i hope switch 2 fixes this
It's probably because switch has issues loading large images. So the image gets scaled down. I'm not fully sure tho
I want to show unicode in label based on level number; 0xF020 + #level_number
I got this
"bindings": [
{
"binding_name": "#level_number"
},
]
How can I show this?
"text": "#text",
"bindings": [
{
"binding_name": "('\uF020' + #level_number)",
"binding_name_override": "#text"
}
]
It shows both numbers
As if it concatenated the unicode with the string number
That's what it did. Added the number with that Unicode string
Oh nono I don't want it to concatenate. I want it to increase the unicode
e.g. \uF020 + 1 = \uF021
{
"fourth_slot_panel": {
"type": "collection_panel",
"collection_name": "$hotbar_collection_name",
"$hotbar_collection_name": "hotbar_items",
"size": [
"20px",
"22px"
],
"controls": [
{
"[email protected]_hotbar_grid_item": {
"collection_index": 3
}
}
]
}
}
Any idea why the gui_hotbar_grid_item is broken? It works only when it is in a grid but when I put it in a collection panel the texture stops working.
That type of addition can't be done afaik
Are you trying to convert the font or smth? You can use property_bag and bindings. 0-9 will be easy but values after that will need calculations
Ig try stack_panel
Understood
Yeah I'm tryna convert from number to font
nah still the same
i guess i will have work with mojangs extremely nested elements again, yippie
although it is pretty interesting why that happens lol
I want to add this
Is it possible, in a binding, to use source_control_name to target an item of a factory?
I want to get bindings like #item_id_aux and #slot_selected from a hotbar items collection
I know the index of the hotbar item i need to get the data of, but i have no idea how to access these outside of the items created by the factory
you had it in my code no?
the one with hidden slots
@weak cape
How did you get into Json UI? Because every single time I think of a cool resource pack idea. 90% of it is UI....
@manic dragon you too. I just wanna know how you deal with it without wanting to tear your hair out
Yes, i think i have most of it, but is it possible to read the item_aux_id of the slot index 1 from within slot index 0?
I was creating a minecraft server, but I couldnt find a sidebar for it. So i decided to code my own. it took a while but I liked it.
I invested more time into json ui and developed new cool stuff and continued doing this and making this my job haha
item_aux_id? idk, i tried it once but couldnt get it to work. if you want a way to do so you can have two slots in the parent "collection panel", slot1, and slot2 and use
{
"type": "view",
"source_control_name": "slot2 control name",
"resolve_sibling_scope": true,
"source_property_name": "#binding",
"target_property_name": "#value"
}
Ohh okay, they have to be in the same panel?
yeah
I had my "data" slot in a completely differnet place
Let me try
Actually can multiple elements with the same collection_index be defined?
yeah
okay fire
Isnt it frustrating and extremely confusing a lot?
the beginning was pretty fun, but when i came to more than simple edits, it was getting more difficult and confusing indeed
I've been trying to create a custom global resource pack for years atp
Full of handy UI changes
Also figured out a cool way to create toggles but design and code do not agree with me
I keep getting stuck with the cool ideas but either impossible to execute or I don't have the skill to do so
The idea I had here (it's a rough drawing sorry) is that I could toggle certain UI elements by hotbar nav + a rebound crafting button
Since inventory and crafting screen binds do pretty much the same thing
I defined this element to use as an item aux id provider for other elements to use
"slot_data": {
"type": "input_panel",
"bindings": [
{
"binding_type": "collection",
"binding_collection_name": "$hotbar_collection_name",
"binding_name": "#item_aux_id"
}
]
},
"mappings": {
"type": "collection_panel",
"collection_name": "hotbar_items",
"size": [ 0, 0 ],
"controls": [
{
"[email protected]_data": {
"collection_index": 0
},
"[email protected]_data": {
"collection_index": 1
},
// ...
But the two slotX_data elements error, saying "type not specified (or @-base not found) for control: " (blank)
Any idea why this happens??? I've had this before when defining invalid elements but these seem perfectly fine
Yes, the $hotbar_collection_name is defined on the parent hud_content
i see ty ty, just making sure
Hello anyone know why this button/toggle only works in desktop with mouse and not with mobile? Although if i hover it in mobile, then release my finger, it works pressing it or dropping the item. However, if you just press it normally, like u don't hover it, it doesn't drop the item.
Would really appreciate, if you know. I tried everything and i can't seem to solve this particular issue.
It works fine, when you are in PC or desktop cause it hover's first, before clicking, however in mobile since mobiles are built pressing it instantly that hover it.
Hey everyone, is there a variable like #hp to determine a player's current health?
You can get player hp from script and use it in labels or button names in script. I think that such a variable does not exist in json ui.
Maybe check the device and if its a mobile, use toggles instead of buttons.
Can toggles trigger drop_app button mapping?
Cool
I would have to hop on my pc will let you know when
is there a color element in json ui? and if so, how can I use it?
You can color an image
thanks! I found this element in someone else's code. what color code is it using?
is anyone able to confirm that this page is outdated?
https://wiki.bedrock.dev/json-ui/string-to-number
does anyone know how to set a basic panel texture to an item texture from the inventory? like using item renders
It's not outdated
ive confused in form buttons where is the button text stored as?
there is #form_button_texture
I fixed it, it was happening simply because i put multiple elements in the same controls object
i dont know how to make my custom form show the button text
nvm im stupid its just #form_button_text
still finding trouble with displaying the text
Oh alright. Forgot to reply haha so I’m glad you got this to work
Yeah, appreciate the help with the file though!
By the way, were you able to get those sibling bindings to work?
What bindings do you have in your mind
"slot_data": {
"type": "input_panel",
"bindings": [
{
"binding_type": "collection",
"binding_collection_name": "$hotbar_collection_name",
"binding_name": "#item_aux_id"
}
]
}
This is the data i am trying to read
// ...
"mappings": {
"type": "collection_panel",
"collection_name": "hotbar_items",
"size": [ "100%", 0 ],
"controls": [
{ "[email protected]_data": { "collection_index": 0 } },
{ "[email protected]_data": { "collection_index": 1 } },
{
"test": {
"type": "input_panel",
"collection_index": 0,
"button_mappings": [
{
"from_button_id": "button.inventory_right",
"to_button_id": "button.slot_3",
"mapping_type": "global"
}
],
"property_bag": {
"#item1": -1
},
"bindings": [
{
"binding_type": "collection",
"binding_collection_name": "$hotbar_collection_name",
"binding_name": "#slot_selected"
},
{
"binding_type": "view",
"source_control_name": "slot1_data",
"resolve_sibling_scope": true,
"source_property_name": "#item",
"target_property_name": "#item1"
},
{ // this doesnt work at all
"binding_type": "view",
"source_property_name": "((#slot_selected=true) and (#item1 = -1))",
"target_property_name": "#enabled"
}
]
}
}
]
}
You can see how slot0 and slot1 data elements are siblings of the test
But nothing works inside of that 😭
I tried to use your trick with "#enabled" to toggle button mappings on/off
I tested and it does indeed work, however the moment i do something a little more complex it seems to stay enabled forever
For #slot selected you can just use slot selected without checking if it’s true
Just a side note for future so your bindings don’t get longer
Any idea?
It seems to work with #visible
Still though, this binding doesnt correctly save item aux id into #item1 (property bag):
{
"binding_type": "view",
"source_control_name": "slot1_data",
"resolve_sibling_scope": true,
"source_property_name": "#item_aux_id",
"target_property_name": "#item1"
},
you will have to set the override binding to #item no?
this is the binding on the data sibling
{
"binding_type": "collection",
"binding_collection_name": "$hotbar_collection_name",
"binding_name": "#item_aux_id"
}
and this is what i have on the main problematic element:
"property_bag": {
"#item1": -1
},
"bindings": [
{
"binding_type": "collection",
"binding_collection_name": "$hotbar_collection_name",
"binding_name": "#slot_selected",
"binding_name_override": "#visible"
},
{
"binding_type": "view",
"source_control_name": "slot1_data",
"resolve_sibling_scope": true,
"source_property_name": "#item_aux_id",
"target_property_name": "#item1"
},
{
"binding_type": "view",
"source_property_name": "(#visible and (#item1 = -1))",
"target_property_name": "#visible"
}
]
I changed it back to item_aux_id
To my guess it doesnt work* right?
The #slot_selected overriding #visible works
But the #item1 = -1 will only return the initial value that i give it in the property bag, #item1 never gets updated
maybe because #item_aux_id isnt valid
It should be
I put a label inside of the slot_data, where the item_aux_id is supposed to be read from and the label displays it correctly
oh really? nice
With the exact same binding as its data parent
I think you made a "binding loop" with that
{
"binding_type": "view",
"source_property_name": "(#visible and (#item1 = -1))",
"target_property_name": "#visible"
}
because you set visible as visible, and it cycles every frame
like yeah they do
I tried to do it like a "set" operation, because using #slot_selected directly wasnt working in the 3rd binding for some reason
So i first set #visible
Then i use its value to set itself again
The logic initially was
get #slot_selected (1st binding)
get #item_aux_id from the sibling (2nd binding)
set #visible to (#slot_selected and #item1 = -1)
wait, did you set the $hotbar_collection_name variable in the parent?
{
"binding_type": "view",
"source_control_name": "slot1_data",
"resolve_sibling_scope": true,
"source_property_name": "(#item_aux_id * 1)",
"target_property_name": "#item1"
}
maybe this?
That actually might work
Nope, it still gets ignored
The value isn't set
Still uses the default value from the property bag
But i did get the #slot_selected working
Now it works
in that case idk
😭
you could send me the code and i could possibly maybe help
dms or thread?
i will go snowboarding tomorrow till wednesday or so wont be online
dms seem alright
But after that if i find some time will take a look
acabo de ver como llega 50k de mensajes ejej
its item_id_aux
Thank you! That fixed it
damn
XD
what texture is the elipsis on? (the inventory button)
how to I cut A100 to only take A from it using %. string formmating
('%.1s' * #string)
ok
can anyone help me fixing the preserved title text I am using it with action bar and the values are not updating until actionbar comes over it while scrolling
Also the preserved Titles are not visible after I re-enter the world, unless I start to scroll only do they appear, only 1st is visible when I enter the world
does anyone know where can i find this texture or how do i do it.
button.form_button_click
thankksss but the form still detect that i closed the form
..
when i click on the button who has the form_button_click the script detect so that i closed the form
and r.selection = undefined
Can you send just the button?
You're probably missing the collection_details binding
where do i put this
This one
now, it doesnt do anything
form.show(player).then((r) => {
world.sendMessage([UI] Choosed button index: ${r.selection})
if (r.canceled) {
world.sendMessage([UI] Closed the form)
}
})
this is what i have in my script
no messages are sent
when i close the form it says: closed the form and index: undefined
mb
"controls": [
{
"default": {
"type": "image",
"size": "$button_size",
"texture": "$texture"
}
},
{
"hover": {
"type": "image",
"size": "$button_size",
"texture": "$hover_texture"
}
},
{
"pressed": {
"type": "image",
"size": "$button_size",
"offset": [0, 2],
"texture": "$hover_texture"
}
}
],
"button_mappings": [
{
"from_button_id": "button.menu_select",
"to_button_id": "button.form_button_click",
"mapping_type": "pressed"
},
{
"from_button_id": "button.menu_ok",
"to_button_id": "button.form_button_click",
"mapping_type": "focused"
}
],
"bindings": [
{
"binding_type": "collection_details",
"binding_collection_name": "form_buttons"
}
]
}
}
]
Did you give it a collection index
it works XD
thanks
its because i made a json ui test command and i just sent /ui COMBAT and nothing for the buttons so yeah
Are there any known limits for UI bindings, properties etc? I generated a file with a little over 126 ui controls, 756 bindings and 504 property bag properties that are used in those bindings
It's ~7700 lines long and i noticed that when absolutely none of the bindings work until i delete like half of those and then that half starts working
is it possible to implement hold and press state for action form buttons
Do you know how can I make the controllers be able to navigate in my panels with custom buttons
?
Kinda yeah
Is it complicated?
Depends but mostly no
So can you show me an example ? Please
I don’t think there’s something about this on the wiki
Nope
But I think I can tell you how
I'm on vacation rn
Yeah please
Oh ok then don’t worry about me
focus_enabled: true perhaps?
Not sure if that's the one
Place it in the button element
Whattt just this???
I thought that it would be a lot difficult
Like most of the time people just forget this but if that doesn't work gotta add more stuff. But yeah. Its mostly just this.
But yeah thanks
No problem happy to help
yeah mojang thought it was a great incredible wonderful useful idea that the default value should be false
Of course.
Story time: forgot to add this to my UIs and released it for Mineville without that and immediately found out console players were doomed 😬
Gadly it's only just this.
Mojang could have made it much worse
I would be a good idea to put a BIG WARNING box of this information in the wiki
Is the wiki made by this discord server?
Hi,
What does frame_step mean in animation?
And how can I get elements that are similar to ore ui, is there a library?
The animation advances through the spritesheet horizontally by this amount of pixels each step. Ideally, you would want the value to be the width of each frame in pixels
But why in the auto_save image in hud_screen.json, the frame_step is 18, while the frame_count is 9, and in the image there are only 9 steps
Sorry, I don't really understand your explanation ;v
You're right about the frame count and the steps. There are 9 frames in the spritesheet, so 9 steps. frame_step however is the width of each step/frame. So it'll be the width of a frame which is 18
Well not really a big warning but adding a new page or updating one would be good
Mainly but it’s OpenSource and can be edited by anyone
that why u usually just need to copy from already existing templates common.button
Ooo, thanks!!
Oh yeah, one more thing, where can I get elements similar to oreui, is there a library?
I don't know of any such library. You can make the texture yourself but If you want the original ones you'll need to get it from Minecraft assets
Can i get a link?
I looked in asset textures/ui but there was nothing similar :/
Or am I missing the point?
how to change animation of form arriving?
Oh you will need to go to this C:\XboxGames\Minecraft for Windows\Content\data folder and search there because I forgot the actual folder name :)
Owh okay thank you so muchh
Am I the only one to which modification errors don't appear?
is it possible to store more than 1 dynamically sized string in the action bar for use by UI?
i know i can split the string into fixed parts and fill the remanning characters with spaces, but is it possible without?
{
"namespace": "hud",
"hud_title_text": {
"type": "stack_panel",
"size": [
400,
400
],
"anchor_from": "top_right",
"anchor_to": "top_right",
"offset": [
60,
10
],
"orientation": "vertical",
"controls": [
{
"sidebar_bg": {
"type": "image",
"texture": "textures/ui/title_backround",
"size": [
350,
180
],
"controls": [
{
"sidebar_text": {
"type": "label",
"text": "$title_text",
"anchor_from": "top_left",
"anchor_to": "top_left",
"offset": [
60,
10
],
"text_alignment": "left",
"font_scale_factor": 0.8,
"shadow": true
}
}
]
}
}
]
}
}
Can someone please tell me how do add a custom logo texture to this and get above the sidebar
Are paper dolls treated as being "rendered"?
Im trying to see if Json UI could be able to indirectly affect any molang queries
you can use query.is_in_ui, but only that
Helppp
was really hoping that there would be something numerical tbh but I'll take what I can get
have you found the textures?
in the meantime I found those leaked container textures. Am I the only one who is not a big fan of them and prefers something like GUI Revision?
Wait I might have found them
from there @marble rover, in case you haven't found it yet, go to gui\dist\hbui\assets. I would now like to know why they are called like that. And also I can't find the nineslice files
nineslice is applied script side
Is there a way to access those scripts?
somewhere in the game files (idk where lol)
Noice
how do I make my image stretch to fit the whole screen?
"keep_ratio": false
Or "fill": true
Note that this keeps the ratio and resizes the image
@deft shadow bind a key so pc players can press a binding to use the button
Because the can’t use their cursor
Same for controllers
I haven't even made it yet
I was asking if it was possible
For PC I will do like h or f3 button, controller the x button
How can I bind a keyboard key to perform a custom action?
Idk yet I currently learning rn I learning form errors and stuff
When I learn how to do it I will probably make a template or something for people to use
You asked how do you make it pressable by PC. I answered how.
is h a default keybinding for an action?
you will have to replace some function.
form_button@common_buttons.light_text_button
How can I offset the button text?
I love Serenity ❤️
For those who want to know what this is, it's the Serenity API that handles the game's packages.
isnt there also userBusy in script api
change states' offset or use "$button_offset"
??
In Serenity, there's a packet that allows you to change the number of inventory slots a player can have, something that's not possible in vanilla.
Yes, it can generate more buttons from the container, but it's not possible to exceed the default value of the game client in vanilla mode; Serenity can do that.
That's the problem, it's script API
But I see the same amount as in vanilla
Oh, I must be blind because I already saw that there are 5 rows
The vanilla client doesn't accept this, but Serenity can intercept the vanilla packet and tamper with the game's default value.
How do you check if player is using mobile and desktop? Like for binding
I don't think there is anything for that. But you can check if the player is using touch input or not using $touch variable
I'm converting a string into a number it seems to truncate the decimal part, any solutions?
Ah okay, thanks! How do i use it as binding like when it detected it is using touchscreen, and when it is not, sorry for pinging.
"property_bag": {
"#touch": "$touch"
}
you can use this #touch in bindings
What's the output of it? Is it just true and false like the "#enabled" ? 😅
yeah
Thank you so much!
np
don't pass it as float. send an integer and divide it in ui to get float value. alternatively you can multiply with another float instead of dividing. because trying to divide anything accecpt a number will crash the game
I am doing that but it seems to truncate the decimal part
"bindings": [
{
"binding_name": "#hud_title_text_string"
},
{
"binding_type": "view",
"source_property_name": "(((#hud_title_text_string - 'sam:alpha_') * 1.0) / 100.0)",
"target_property_name": "#alpha"
}
]```
it's throwing out integers
use a variable because floats sometimes don't get parsed properly like that
how do I do that?
"$hundred": 100.0,
"$one": 1.0,
"bindings": [
{
"binding_name": "#hud_title_text_string"
},
{
"binding_type": "view",
"source_property_name": "(((#hud_title_text_string - 'sam:alpha_') * $one) / $hundred)",
"target_property_name": "#alpha"
}
]
oh wow
Is there a way to make a keyboard key perform a custom action in Minecraft when I press it?
Lmao that worked, tysm
not all keys and also not any custom action. but yeah you can add the button mapping for the key and perform some actions
wakey wakey another JSON-UI changes on the latest preview has been found.
What does this do?
damn
i have awaited for this for my whole life
i have absolutely no idea what does this mean ngl
oh yk, you can now have the priority of stack_panel children to be bindable
😭
This is Peak!
Jokes aside, could this be about being able to change child control order using bindings? (Maybe not...)
{
"health_bar": {
"layer": 4,
"type": "image",
"texture": "textures/ui/healthbarempty",
"size": [108, 8],
"controls": [
{
"progress": {
"type": "image",
"layer": 5,
"$one": 1,
"$bar_max": 20.0,
"clip_direction": "left",
"clip_pixelperfect": false,
"texture": "textures/ui/healthbarfull",
"bindings": [
{
"binding_name": "#hud_title_text_string"
},
{
"binding_type": "view",
"source_property_name": "((('%.5s' * #hud_title_text_string) - ('%.3s' * #hud_title_text_string)) * $one)",
"target_property_name": "#health"
},
{
"binding_type": "view",
"source_property_name": "(($bar_max - #health) / $bar_max)",
"target_property_name": "#clip_ratio"
}
]
}
}
]
}
}
Does anyone here know what might be wrong with my health bar?
When I send this title to the player:
§z16
The progress of the bar remains at 0.
{
"binding_type": "view",
"source_property_name": "(('%.5s' * #hud_title_text_string) - '%.2s' * #hud_title_text_string) ",
"target_property_name": "#health"
},
this will return a number value
tho u may need padding like 016
so example title would be
§z010
also make sure ur %.ns lines up with the title u send
Also remember that some special characters have more bytes; for example, if you send the letter "A," it means 1 byte, but if you send an emoji, it can be 2 bytes or more.
Send us your TRANS code and we'll send the title.
Hey, Ding!! How's it going?
big chillin 😎 lmk if it works
Also, in line with both of your suggestions, I tried modifying to this:
{
"binding_type": "view",
"source_property_name": "((('%.6s' * #hud_title_text_string) - ('%.3s' * #hud_title_text_string)) * 1)",
"target_property_name": "#health"
},
Using this new title:
§z016
I remembered from previous experience that the § character counts as two bytes, which is why I think that should be right. Is that not the case anymore, maybe?
try my way also (('%.5s' * #hud_title_text_string) - '%.2s' * #hud_title_text_string)
i think it counts as one byte
but trial and error ig
{
"binding_type": "view",
"source_control_name": "player_hud_data_control",
"source_property_name": "#preserved_text",
"target_property_name": "#info",
"resolve_sibling_scope": true
},
{
"binding_type": "view",
"source_property_name": "($min * (#info - ('%.1000s' * #info)))",
"target_property_name": "#value"
},
{
"binding_type": "view",
"source_property_name": "(($max_value - #value) / $max_value)",
"target_property_name": "#clip_ratio"
}```
§ counts as 2 bytes
I tried this:
{
"binding_type": "view",
"source_property_name": "(('%.5s' * #hud_title_text_string) - '%.2s' * #hud_title_text_string)",
"target_property_name": "#health"
}
with this:
§z010
And it didn't seem to work. Is that what you had in mind?
In my case, I use preserved, but I think the calculation is the same as for binds.
oh dang never knew lol i just use ;
in my long title string
I'll try switching. I have no reason I need to use §z specifically as a seperator.
yeah just use a single character
I only use §z to display numbers.
i just use ;
nice
Ayyy
lesss gooo
Thank you both for your help, that was a very easy fix!
any examples? Imagine if mojang provided one (not possible)
no idea what kind of data it takes, or if its even truncable
uuh
I guess its just layer related lmao
LOOOOOOOl
Could this be about being able to change child control order using bindings?
@weak cape or anyone and srry for ping I just don't know if your online syylaxx
Can you tell me if this is right
New updated one
{
"namespace": "daily",
"reward_button@common_buttons.light_text_button": {
"size": [ 40, 40 ],
"$button_text": "Item"
},
"spinning_container": {
"type": "panel",
"size": [ 200, 50 ], // Visible window for the rewards
"clips_children": true, // Hides buttons outside the window
"controls": [
{
"button_row": {
"type": "stack_panel",
"orientation": "horizontal",
"size": [ "100%c", 40 ],
"anims": [ "@daily.scroll_spin" ],
"controls": [
{ "[email protected]_button": {} },
{ "[email protected]_button": {} },
{ "[email protected]_button": {} },
{ "[email protected]_button": {} },
{ "[email protected]_button": {} }
]
}
}
]
},
"scroll_spin": {
"anim_type": "offset",
"duration": 4.0,
"from": [ 200, 0 ], // Start off-screen to the right
"to": [ -150, 0 ], // End at a specific reward button
"easing": "out_expo" // Smoothly slows down at the end
}
}
Nvm
I using Kitty Shizz daily rewards
But how do I make the daily rewards thing open when you right click a NPC with kitty Shizz daily rewards
there's this property use_priority on stack panels that allows it's children to use priority
tried messing with it, no idea what it does though
ignored binding coming soon
Seriously?! 'Cause that would be PEAK
Although I highly doubt
Always trial and error ;-;
Mojang's not going to give any explanation
JSON UI might get ignored before that xD
hello, how to render a skin model on a form?
Custom chat panel and factory:
{
"stack_panel": {
"type": "stack_panel",
"anchor_from": "bottom_left",
"anchor_to": "bottom_left",
"factory": {
"name": "chat_item_factory",
"control_ids": {
"chat_item": "[email protected]_ui"
}
}
}
}
Notification element:
"notification_ui": {
"type": "panel",
"size": ["100%c", "100%c"],
"anchor_from": "bottom_left",
"anchor_to": "bottom_left",
"controls": [
{
"notification": {
"type": "image",
"texture": "textures/ui/greyBorder",
"size": ["100%cm + 10px", 30]
}
}
],
"bindings": [
{
"binding_name": "#chat_text",
"binding_name_override": "#text"
},
{
"binding_type": "view",
"source_property_name": "(not (#text - '§1') == #text)",
"target_property_name": "#visible"
}
]
}
I am trying to create a custom chat panel that only displays chat messages with a certain flag (§1). Currently, all messages are being displayed. Does anyone know what's wrong with my bindings?
Also, there's a few ways. I think you can use the paper doll renderer, or the live player or horse renderer. Here's an old example I have:
{
"player_doll_panel": {
"type": "stack_panel",
"size": ["46%", "46%"],
"layer": 3,
"offset": [0, "-7.5%"],
"collection_name": "form_buttons",
"controls": [
{
"index_0@form_buttons": {
"type": "custom",
"anchor_from": "center",
"anchor_to": "center",
"renderer": "live_horse_renderer",
"collection_index": 0,
"$item_collection_name": "form_buttons",
"offset": [0, 0],
"anims": [],
"property_bag": {
"#look_at_cursor": true
},
"bindings": [
{
"binding_name": "#form_button_text",
"binding_name_override": "#entity_id",
"binding_type": "collection",
"binding_condition": "once",
"binding_collection_name": "$item_collection_name"
}
]
}
}
]
}
}
I then passed the entity's id (entity.id or player.id with Script API) as the text for the first button in the form.
Try this
(not (('@' + #text) - '§1' = ('@' + #text)))
I think that worked! Thank you so much!
Also wrap the notification_ui in a panel
Notification ui is a panel. You're saying I need to wrap it in another panel though?
Yea because if I remember correctly #text for chat is not accessible from the directly generated contents of the factory. But can be accessed from their children
But if it's working now no need to change anything
That's why, that makes sense. I was wondering.
What I did was just put the bindings in the image instead of the panel.
I do have another question about this, if it's not too much of a bother:
How do I invert this? I tried (('@' + #text) - '§1' = ('@' + #text)), but it still seems to hide those with the tag instead of the reverse.
That's what it's supposed to do. If text contains §1 it'll be invisible
I know, I just also need the inverse for a different part of my UI.
I've used both of these types of bindings before, for some bizarre reason what I've done in the past isn't working.
Just add not in front ig
Can we asign custom button id to a button?
yes
thanks
is there a nineslice max base size?
bcs i had a 16x16 texture and it was not working
then i changed to a 10 by 10 and it worked
Did you adjust the nineslice file/json accordingly?
What caused the error?
its the same name
Did you adjust the nineslice json code itself
how
{
"base_size": 10,
"nineslice_size": 4
}
Upload the 16x16 into this then calculate it until it looks correct
https://minato.beyondbedrock.org/web-apps/9slice/index.html
Then copy the nineslice settings and paste it into your nineslice json
thanks
why does the stack panel bug there
"spin_container": {
"type": "panel",
"size": ["100%", "100%"],
"clips_children": true,
"controls": [
{
"[email protected]_content_stack": {
"anchor_from": "left_middle",
"anchor_to": "left_middle"
}
}
]
}
Does anyone know what the binding is for being inside of a crafting table (versus the player's inventory) for the inventory_screen?
they are two different screens
inventory_screen and crafting_screen
both extends @crafting.inventory_screen_base
solved

I haven't been able to find that, do you have a copy of the vanilla version by chance?
in inventory_screen.json
Oh!

I'll try, just a second
yep
Omg, that did it! Thank you so much!
Does anyone know why my game crashes when I use the title command?
I'm slowing becoming proficient at JSON UI, I appreciate you and everyone else in this server who has helped me along.
Sorry to bother you, do you know why my game crashes when I use the title command with preserved title text together with a custom bar?
Let me guess. You're doing divisions and you didn't extract values properly so you got a string where you should've got a number and that's crashing it
._. xd
Could you help me fix it?
Instead of directly using the title for the custom bar, use a preserved title. And try not to do division. Instead, multiply with a float. e.g- instead of dividing by 100, multiply with 0.01
I will try
Like this?
"bindings": [
{
"binding_name": "#poste_bar_reserved_title"
},
{
"binding_type": "view",
"source_property_name": "(#poste_bar_reserved_title - 'poste:')",
"target_property_name": "#poste_bar"
},
{
"binding_type": "view",
"source_property_name": "(1 - (#poste_bar * $inverse_max))",
"target_property_name": "#clip_ratio"
}
]
Just the bindings are enough no need for the whole file.
Where did you get #poste_bar_reserved_title from. This binding name doesn't exist
then I remove it?
"bindings": [
{
"binding_name": "#title"
},
{
"binding_type": "view",
"source_property_name": "(#title - 'poste:')",
"target_property_name": "#poste_bar"
},
{
"binding_type": "view",
"source_property_name": "(1 - (#poste_bar * $inverse_max))",
"target_property_name": "#clip_ratio"
}
]
},
"bar_template": {
"type": "image",
"layer": 28,
"$update_string": "poste:",
"clip_direction": "left",
"clip_pixelperfect": true,
"texture": "textures/ui/minus",
"$max_bar": 50.0,
"$inverse_max": 0.02,
"keep_ratio": false,
"bindings": [
{
"binding_type": "view",
"source_control_name": "data_control_x00",
"source_property_name": "(#preserved_text - $update_string)",
"target_property_name": "#poste_bar"
},
{
"binding_type": "view",
"source_property_name": "(1 - (#poste_bar * $inverse_max))",
"target_property_name": "#clip_ratio"
}
]
}
just replace the current bar_template with this and in root panel
"root_panel": {
"modifications": [
{
"array_name": "controls",
"operation": "insert_front",
"value": [
{
"[email protected]_title_display_1": {}
},
{
"[email protected]_title_display_2": {}
},
{
"[email protected]_squid_hud": {}
},
{
"data_control_x00": {
"type": "panel",
"size": [0, 0],
"$update_string": "poste:",
"bindings": [
{
"binding_name": "#hud_title_text_string"
},
{
"binding_name": "#hud_title_text_string",
"binding_name_override": "#preserved_text",
"binding_condition": "visibility_changed"
},
{
"binding_type": "view",
"source_property_name": "(not (#hud_title_text_string = #preserved_text) and not ((#hud_title_text_string - $update_string) = #hud_title_text_string))",
"target_property_name": "#visible"
}
]
}
}
]
}
]
}
thx u brother🥺
Can I call properties from animations?
Like this:
"a": {
"anim_type": "size",
"from": [ "100%", 5 ],
"to": [ 0, 5 ],
"duration": "0 + #form_title"
}
thats bindings and no
So there is no way to affect an animation based on the #form_title?
there is
just have animations on 1 panel
bindings on that panel
and animations on another panel
with bindings on that one
So multliple animations for each situation?
Or each panel has its own variables for the same animation
I'm gonna try
How should I cut the string so that it works? Clearly it looks really reasonable, but it bugs out when I enter the game. Does anyone know how to fix it?
In the line above, I only use this method, so it will display, but the excess part will not be removed.
Add §r or something like this in front the number
is there a way to stop flip book animation at the end?
Iirc there should be a property for that
Should be in the wiki
Love your hotbar! 😁
"[email protected]_edit_box": {
"anchor_from": "top_left",
"anchor_to": "top_left",
"size": ["93%", 12],
"offset": [14, 0],
"$text_box_name": "search_text_box",
"$text_edit_text_control": "search_test",
"$place_holder_text": "Search...",
"$text_clear_button_enabled": true,
"$text_edit_box_clear_to_button_id": "button.text_edit_box_deselected"
}
I'm using this text box to search an inventory (grid of input panels), and I'm trying to make it clear itself when it is either deselected or an item/panel is clicked.
Either works as a solution for me, but I've had no luck with either method. Does anyone know how I could get this to work?
who did you do that broo 
I did it
Why does it only show "Button 15" at the bottom of the search bar when I type it, and not at the top?
what is the size array of the stackpanel?
Which one i don't see it
"looping": false ig
of the stackpanel? like the one with the buttons that are hidden?
thankyou, i also found it in start screen..
there's no documentation in wiki about this LoL
Yeah
on the right side
but probably ore ui will kill everything
I hope not
nope
bundle_tooltip_renderer can be used to make custom tooltip without being cropped by the screen
is the whole thing customizable?
like contents and texture and all that?
@analog snow
thats sick
does it work on localizable strings or custom tooltips
the only problem that prevented me from using renderers are not allowing localizable texts
yes
woah
maybe yes, i havent tried it
mine kept crashing though
hmm mine doesnt
mightve messed it up
It's just the corner pixels of the button image, not a divider image
Hello, is it possible to render an entity with the same entity renderer from donkey or horses, but they're not alive or summoned in the world, like i just want to render their models and such with their entityID.
Is this possible?
no
Ah okay, sadge
does anyone know how the texture of the background is called?
You can see this grey texture better in this left panel
nvm found it. It's textures/ui/recipe_book_pane_bg
(
Is there a way to make it so the first button in my form is not focused by default?
Hey can you check your dms? It's been 1 week+ and I'd need to be updated
i believe you can change the default focus number
not sure if it actually works though
Let me check
I tried but there always has to be a button focused by default
I wanted to make it so it doesn't focus any button by default
you can just turn focus off
Ficou muito bom Drexy
obrigado ;-;
Is it possible to prevent player renderer from overflowing?
clips_children: true
thank you
Looks awesome!
Just a notice for help: https://discord.com/channels/523663022053392405/1460674572033724461
here's goes the settings screen
i just hope it doesnt take too long to load
from the logical point, did they wven said it will have back compatibility?
I think for hud and sevrer forms yeah - because a lot of content on marketplace use this stuff
however for the rest?
I don't think so, even about marketplace related stuff
end of jasonUI is now
Only gameplay/in-game UIs will have some backward compatibility yeah. unfortunately no to menu/pre-game
well exactly as I thought
it would be unwise of them somehow removing something featured servers using tbh
but yeah my UI is dead now.
When might the update come out?
Now.
Weeks of work gone for me ;-;
I meant in stable
unfortunately looks like this preview is ending so, we might get that sooner on stable
yeah, I had in plans to rework settings, but I stopped due this fact
i literally just worked on settings screen for hours yesterday
now lmao yeah i just can't.
I completely remade the settings but it's mostly useless because of this
It was to be expected tbh but still sad...
Maybe remake the settings the other way, since it's just a secondary button, why not group it all into one panel like one click access
-# just my idea
That's not how JSON-UI works sadly.
for one, each screens has their own hardcoded bindings and stuff that should only be used on that said screen. including settings.
this means that you can't just fetch some stuff from other screen and expecting it to work.
Thought it's just like accessing button id to open the screen
button ID were affected too so yeah
the ID will remains the same as before but this time it gets you to Ore-UI ver instead.
When might the next stable version be released? 🤔
And no, that's hardcoded by some treatments
When the new drop releases.
Wait so JSON UI settings is completely gone? I thought there will still be some parts available
Not gone, but replaced yeah.
The way it works is essentially detect whenever you have the correct treatment (aka the client "tag" that is given by mojang server if needed) then switch it to Ore-UI.
Death screen and Play screen actually used to have one.
Ohh for backwards compatibility I assume..
though unfortunately this treatment thing doesn't last long until it permanently gets hardcoded into the game that only gets you Ore-UI screen.
probably a few versions after that.
It's likely for just testing if people are facing some issues or anything. considering this is more of a kill switch.
if the Ore-UI version is too laggy or something, they can just pull it out without updating the client.
Makes sense
if it works perfectly fine, yeah they'll hardcode it.
Bedrock is like a huge module stuff going on, known as treatment.
it's just a kill switch OR an exclusive feature to some people.
you may have Ore-UI settings where people may not.
Didn't know that!
@languid girder
@raw barn
can u ban @languid girder
he re uploaded my friends website
Bruh
whats the different between binding types view and global?
'view' is used to obtain the properties of another object, or to operate on the properties of that same object (like obtaining toggle state of a specific toggle)
'global' (default if you dont set type) is for obtaining specific properties of each screen (like obtaining the player experience level)
so hardcoded values?
yeah
tysm bro this helps alot
Hey you there? You didn't reply
https://discord.com/channels/523663022053392405/1459616646187712573
could someone help me if you have the time?
Why, I've put two scrolls in my menu, but only the first one works, it scrolls all the content up to the one in the second scroll. Anyone has any idea?
I already changed the "slider_name" but nothing works
I think U can you render it but not able to control it
???
I would have to use flying_item_renderer to render it, but the collection_name of inventory_items is specific to the inventory itself, so it's not possible.
any idea?
You should update the pause menu screen so they change it next
Already did lmao
lol
Is "variables" accepted as a value for "array_name" in modifications?
Is this mob mazes code? 😭
Could’ve atleast changed up the slider 😭
Fr 😭💔
yep
not really related but what’s the resource pack?
You have the code 
😭💔🙏
it's just for tests, i will change everything, i just get some things from te code, like de horizontal slider and the carousel
yeahh
Does anyone have open source ore ui texture template
but it just works with one slider, when i put two, just one work for both
nah idk json ui sorry
ok...
WE are all using ore ui now ✌️🥶
Okk
youre banned from ore ui
JSON > ore
real
I want them to release it soon so I can start playing around with ORE UI.
Performance-wise JSON UI is much better than Ore UI
And we still don't know how much customizability we will get. What if it's more restricted than JSON UI :)
It depends a lot; they're still migrating, so it's still rendering both systems, so it's heavy.
That's what worries me, but they said I would be completely customized, so all that's left is to wait.
Unfortunately, it is indeed more restricted than JSON-UI.
Like i said before —
- Menu/Pre-game UIs isn't possible anymore.
- Data-driven UIs (That would be Ore-UI based) are extremely basic and lack a lot of stuff.
The only thing that might be a little more customizable is just the server forms, that's it.
are extremely basic and lack a lot of stuff.
You are referencing something that isn't quite done yet though
you can't just say that as it is
It's Bedrock Port of GUI Revision I'm working on
hello anyone knows why my toggle button doesnt work?
it only works when i open the form, but not when touching it
Works
{
"binding_type": "view",
"source_control_name": "stats_data_control",
"source_property_name": "(('%.1s' * (#preserved_text - $tw_hud_key)) = 'a')",
"target_property_name": "#visible",
"resolve_sibling_scope": true
}
Doesn't work
{
"binding_type": "view",
"source_control_name": "stats_data_control",
"source_property_name": "((1 * ('%.1s' * (#preserved_text - $tw_hud_key))) = 1)",
"target_property_name": "#visible",
"resolve_sibling_scope": true
}
Didn't I convert to int properly? What's going on??
this is because of the new update. you can't multiply number with '%.ns'
🤦♂️ Okay I have this tmc.tw::1ꀀꀀꀀ1004ꀐꀐꀐꀰꀰꀠꀠꀠꀠ191919100000 and each number or set of numbers mean something.. I need to read each piece of it
$tw_hud_key = tmc.tw::
The first number is what I want for this
1 = visible, 0 = invisible
do I convert to string, then multiply with %.ns? but then I'd have like
&z1
so I check with that?
"(('%.12s' * #preserved_text) - $tw_hud_key) = 1)"
1ꀀꀀꀀ this part
I'm assuming ꀀ is one byte. idk what's the byte count for this
it's 3 bytes
use characters of 1 byte for consistent result
yeye i understand
??
Am I the only one who still doesn't understand the difference between binding_name_override and target_property_name?
Can a grid return the collection_index of the objects within it?
I remember someone said its grid_position: [x, y]
Yes, that returns its format [x, y], but I wanted to get it individually.
one is for type global, other is for type view
global is to return a string, ints etc., while view is for booleans, right?
global (or default) it's for fetching a global property (hardcoded, screen specific, like #level_number in hud_screen) and view is for fetching other control properties and operating with it (like getting the #toggle_state of a toggle or modifying a text output)
I think I got it now, thanks
I'm sorry for bothering you again, but does that mean that I can use bindings boolean values as a condition to override things like for example sizes or textures, for example changing the size of a control if I'm survival mode instead of creative?
or to override variable values
hello, is there a way to pass a binding from a parent to a child?
use source_control_name
{
"parent": {
"bindings": [
{
"binding_name": "#bind"
}
],
"controls": [
{
"child": {
"bindings": [
{
"binding_type": "view",
"source_control_name": "parent",
"source_property_name": "#bind"
}
]
}
}
]
}
}
How can I insert this custom font into the lore? On Java, we can use methods like Negative Space Font or something similar to put images into the lore, but on BE it's not available. What should I do now?
U could use glyphs
I think its the default8 one specifically
Thank you, let me give it a try🤓
no worries
"gender_icon": {
"type": "image",
"texture": "#texture",
"size": [4, 4],
"offset": [4, 0],
"layer":26,
"bindings": [
{
"binding_type": "view",
"source_control_name": "$control",
"source_property_name": "('textures/ui/'+ ((#preserved_text) - ('%.18s' * #preserved_text) - $preserved - $a - $f))",
"target_property_name": "#texture"
}
]
}
},
{
"preserved_title_name": {
"type": "label",
"anchor_from": "center",
"anchor_to": "center",
"layer": 34,
"font_size": "small",
"offset": [-14, 12],
"text_alignment": "left",
"enable_profanity_filter": false,
"text": "#text_0",
"bindings": [
{
"binding_type": "view",
"source_control_name": "$control",
"source_property_name": "(('§z' + #preserved_text) - ('%.18s' * #preserved_text) - $preserved - $a - $f - 'M' - 'F' - ' ')",
"target_property_name": "#text_0"
}
can anyone help with string formatting
preserved title name gives me the name like Azure M (I subtracted M /F in code to only get name)
Here the M can be M/F male or female but how do I extract this male female in gender icon
does anyone know how to add a new font type? theres MinecraftTen, default, etc, i have heard things about font_metadata.json and ttfs
you can use ttf fonts but only works on global resources and you need to reload Minecraft for the font to load
whats the size value limit for px or pixels value.
i tried 640x330 to achieve full screen with my display but i think that value is not dynamic for various screens and is just specific for my display
Maybe you can insert an element in the root panel that has "100%" size
Hello, can I ask about the custom UI that doesn't load properly like this?
When I tried to see it by myself, there was no problem at all. While some users had this issue, I cannot pinpoint the cause of this bug. Any idea what's going on?
This is what the UI should look like.
Could be a different pack interfering with this one
does your nineslice texture in your element say .png?
Yes, it's all formatted in .png
In the element, the texture property/binding
Does it say textues/ui/nineslice.png
it cannot say .png
hmm in that case probably some buckrock moment or rp interfering
send the element maybe
I already turned off my computer. But I think all my elements are fine
Yeah, I'm also thinking that too
Ayo, i search somone who know how to make this type of UI on pocketmine, come dm
Don’t understand
Is it possible to render two paper dolls from different players on the screen without a UI?
Is it possible to make the screen very bright if brightness is set to over 0?
Could I render an item's name like this? If not, how could I do it?
{
"collection_panel": {
"type": "collection_panel",
"collection_name": "hotbar_items",
"controls": [
{
"hotbar_first_name": {
"type": "label",
"anchor_to": "top_left",
"anchor_from": "top_left",
"collection_index": 0,
"text": "#item_text",
"size": [ 40, 16 ],
"layer": 15,
"shadow": true,
"font_size": "normal",
"bindings": [
{
"binding_type": "collection",
"binding_name": "#item_text",
"binding_collection_name": "hotbar_items"
},
{
"binding_type": "collection_details",
"binding_collection_name": "hotbar_items"
}
]
}
}
]
}
}
I don't think you can get it without the factory
What does > and < do with string comparisons?
(#text < '%') or (#text > '&')
No idea tbh
I just noticed it in some UI im looking at for reference and had never seen it before xD
Never seen that so seems kinda weird
Wiki doesn’t say anything so maybe some experts could perhaps say something
my only thought is it might be a string doesnt include condition?
wait yeah im testing in game atm, it seems to check if the string contains those chars
the lexicographical order perhaps?
^it doesnt work with longer string on the rhs either it seems, so 1 char only(?), or wait no idk
Guys I need help when I'm clicking the button the slot are not selected
Check if it’s lexicographical order
Seems to fit your suspicion
(#text < '%')
I think this might be string starts with character
cus it matched %test but not test%
but the thing that makes me think otherwise is, > does not seem to match for it being at the end which i would've suspected in that case
And it does actually seem to support more chars on the rhs, but only sometimes?
Interesting
I remember trying something like this before to see if two strings can be compared lexicographically. But didn't work
Weird lol
Is it something intended?!
by global do you mean packs in the main menu, whilst others being in the world are not global?
if yes i guess i would just modify a barely used glyph then
Yea I mean the packs you activate in global resources in settings
ah
thats not fun
Yes, but add collection_index
But im not sure if #item_text is Correct
That's because hud_screen uses it to render their names, so I'm testing it to filter the player's inventory so I don't have to do it through the API.
Try #hover_text instead
I don't think #item_text can be accessed outside the item name factory
remember to remove color codes
I understand, it gave an error when I tried to find the item's text, but not when I tried to find its AUX file.
Never saw that before
Useless for the most part, I only ever found a need for it when using chat factory, it seems when using that method as opposed to generic (#text - $flag = #text), it stops the player from being able to input the flag in chat and get the flagged ui element to display, therefore only supporting raw text? Bit weird tbh
I managed to solve it, I had put #item_text but it should be #hover_text. XD
Is it possible to give a slot in the chest UI a color depending on the item it contains, and make that slot keep its color even when another item is put into it?
Like this
Is there a list of all existing vanilla collection names?
Dumps every up-to-date JSON-UI property based on the newest Bedrock stable release
you could probably with bindings and property bag
i dont know anything about chests or items in json ui tho so dont ask me
I'm thinking of something like https://wiki.bedrock.dev/json-ui/preserve-title-texts but using #hover_text
I know almost nothing about JSON UI, it's impossible for me to do this alone.
You can copy the code from the wiki page but you need to make an appropriate condition to trigger the preserved text. Because hover text becomes empty for a split second whenever you interact with any of the slots
Yooooww saw the RLCraft 1.2 Update with new json ui. So Minecraft marketplace now accepts json ui thingies?
Last thing i saw is they were limited with json ui, or were really not using at all, anyone know about this? I just found out
marketplace has had loads of json ui already
something released by lunar client has json ui
the stranger things marketplace addon
loads of stuff
90% of it is just npc screen but some do have forms
like the avatar one by gamemode 1
Ohh, haven't saw that. I saw like the RLCraft uses the chest inventory
Although i saw some like those marketplace worlds that has some addons on it. Kinda new to me seeing somethint like actual addon
yeah
I'm pretty sure you can use JSON UI in world templates but not in addon
This is nicee
i feel like you dont see much json ui because there are already a small amount of people who are good at json ui, let alone on the marketplace
True, just love seeing addons that has some json-ui in it, cuz they're 
This one, right? Says world
Hmmm whatt that's a world template
Do you guys know how I get somehow get buttons on modal form? I tried overlaying an invisible toggle over a button but It acts weird
Last thing i knew about rlcraft is it's a dynamic world thingy
Like same with Realismcraft before
What are you trying to do with it? The only functional button would be the submit button
No because I placed a toggle over it I can just detect if it’s the opposite of the default value in scripts as when you click it triggers the invisible toggle
I added my own buttons by using some bindings with the label
.label()
Because the button isn't doing anything, is it? It's the toggle that's being clicked
Urm that’s what I said
I don’t need the button to do anything only the toggle to be detected from scripts
Yes
Ur joking
where is it in Japan ui
Jason ui
JSON
Some variables
Yeah that’s what I’ve done but would I not need the button then?
Does toggle have hover texture
yes
take a look at this too its pretty cool
Bet
Who tf is this 😭😭🙏
just drowning myself in tears dont mind me
Pretty sure title text is becoming a variable soon
