This plugin allows you to synchronize text fields between the server and client.
I also didn't implement the procedures called by the "When the GUI is opened" trigger, because when the GUI is opened, the text in the text field will never be different from "".
Supported versions:
- 1.16.5 (forge) 2024.1+ (with generator plugin for 1.16.5) Not fully tested
- 1.18.2 (forge) 2023.1-2023.3
- 1.19.2 (forge) 2023.1-2023.3
- 1.20.1 (forge)
- 1.20.4 (neoforge)
- 1.20.6 (neoforge)
- 1.21.1 (neoforge)
Supported components:
- Procedure called by a button/image button
- Procedure called every tick while the GUI is open
- All 6 procedures called by slot interactions
- Procedure called after GUI is closed
- Boolean checkbox values
- Setting values in a text field:
1.All players (even external trigger)
2.To the player using an entity dependency (even an external trigger)
It adds new procedure blocks for reading the values of checkboxes and text fields, and for setting the value of text fields:
When you click a button on the server, the client side writes all the values of the text fields into a new hash map and sends it over the standard network packet of the mcreator button, in the network packet this hash map is combined with the guistate hash map from mcreator and the new procedure block can read it.
The source code is the plugin itself.
In this case, an unlimited number of text fields and checkboxes is supported, but do not fill the text field to the maximum value, otherwise the network packet will exceed the permissible limit in bytes and you will be kicked from the server!
1.0
- Plugin released.
1.1
- Added synchronization of text fields for procedures called by slot interactions.
- The "Every tick while the gui is open" trigger has been moved from the render method to the containerTick method to reduce the speed of the procedure and improve performance.
1.2
- Added support for the "When GUI is closed" trigger.
1.3
- Added a block for setting the value of a text field for a player (entity) or for all players for the currently open GUI for the server.
1.4
- Added support for checkboxes (if the checkbox is checked).
1.5
- Fixed a critical error leading to a ClassCastException when trying to press a button with a procedure when the trigger “when the gui is closed” or “every tick while the gui is open” is simultaneously attached to this procedure on 1.20.4 (neoforge).
- 1.5.1: fixed a bug where the "every tick while the gui is open" trigger tried to call the textboxstart() method that was not intended for this purpose.
1.6
- Added support for snapshot 2024.2, 2 GUI bug fixes (mouse cursor, slots and blocks) were also ported to NeoForge 1.20.4 (2024.1).
1.7
- The plugin has been updated to version Mcreator 2024.2 and support for NeoForge 1.20.6 has been added.
1.8
- Methods for transmitting synchronized data over the network have been changed from utf to component.literal() .
- 1.8.1:
- Removed duplicate resize method.
1.9
- The plugin has been updated to version Mcreator 2024.3 and support for NeoForge 1.21.1 has been added.
Comments
Hello, i use the code "set text to textfield of player" and i have this error : C:\Users\killi\MCreatorWorkspaces\erinium_roleplay\src\main\java\fr\eriniumgroup\eriniumroleplay\procedures\BankerCreateAccountBtnProcedure.java:172: error: cannot find symbol
EriniumRoleplayMod.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> _player), new EriniumRoleplayMod.TextboxSetMessage("adress", "Already use !"));
VirtualVoyager367, Sorry that this happened, try downloading the plugin from the site again, the mod elements should be unlocked, mcreator sometimes releases patches, all these patches are version 2024.3 and they do not affect the actual operation of the plugin code, but if the patch version is not specified in the plugin.json file zip archive of the plugin, mcreator will basically not load it, even if the plugin can work on it.
ManyaDeath, do you mean a global trigger? just a button in the GUI can't be pressed in the sense that it will switch its boolean state to True like a checkbox does, it doesn't have such a function, and by the way I can't change or add anything to the GUI of the Mcreator mod element itself, I can only change the templates for automatic generation of the mod element code, which is enough for synchronization, if you are talking about the procedure that starts after releasing the GUI button similar to how it works in key bindings, then this is more related to modifying Mcreator itself than correcting its shortcomings in code generation
It's ok 141chit. I had a request about wanting a procedure to detect if a button is pressed from outside the procedure. There is support to run a procedure when button is clicked but I wanted a procedure like(is x button pressed in the currently open gui) I have many uses for this so it's my sincere request that you add this.
_Knifick, I don't think it's possible, synchronization is technically arranged in such a way that when the procedure is called, it packs all the text from all the fields and checkboxes into a network packet, and then this packet is sent over the network to the server, where it receives it and starts the procedure, when the procedure has already been started, and then on the server changed the fields for the client, then these changes will be reflected on the server again only when the procedure is called again, the only option will probably be to separately start the procedure on the server with the initial data and then reflect them on the client, because when you open the GUI, the user has not yet physically entered the data into the GUI, and they are always the same, accordingly, there is no point in synchronizing this procedure, it works exactly the same on the client without a plugin
Does your plugin have older files that support 1.16.5?