Jillian Polsin
Minecraft Actor Permutation Tool Final Report
difficult challenges in the early stages of the project, but was eventually overcome by
carefully cherrypicking the submodule out of build.
2. All of the entity’s data is stored on the server, while ImGui requires all of the information
to be on the client. This was solved by intercepting the data as soon as it was parsed to be
sent to the client. Luckily, the framework needed to send the data down to the client
already exists.
3. Ensuring that ImGui has the capability to render the information we want to show the
way we want it to show and no other library is available. This did not end up being as big
an issue as it could have been, as ImGui was able to represent the data we wanted
perfectly without any major additions to the ImGui code.
4. How do we determine a unique name for each component?
○ The node editor requires that all the names of the inputs and outputs are unique.
However, Minecraft allows for a component to exist at multiple different stages in
an entity’s life span.
○ While the same component can exist at multiple places in the entity's life span, the
data in the component can be different. For example, both a baby sheep and an
adult sheep have the loot table component, but the loot for a baby sheep is
extremely different from an adult sheep. How do we represent that the component
itself is the same, but the data is different?
○ The issue of identity also needs to be considered at this time. Minecraft views the
component’s identity as the whole component and its data while ImGui views the
components identity as just the name of the component. If the name needs to be
unique, how do we make it unique in a way that the information can correctly be
transferred from the server to the client and vice versa without mass confusion
between the two systems?
○ This sort of identity issue was fixed by manipulating the data on the client side to
contain a unique ID that matches the specific component with the permutation so
ImGui knows which permutation belongs to which component. Even though this
was fixed, this is something we’d like to see ImGui handle to replace the string
manipulation that happens on the client.
5. How will future tool developers be able to get the data from the components in string
format? The data’s string version is discarded very early in the entity parsing process, and
it’s unclear if we can send that data to the client before it is discarded. Luckily, a class
already exists to keep the data from the JSON throughout the lifespan of the game and
contains a method to display the JSON in the desired format.
6. Determining a unique name for each actor. There may be thousands of squids in the user
selected radius. How do we represent them as unique mobs? They all have the same
identifier, minecraft:squid, and they need to be told apart so the debug entity can be
selected appropriately. This was fixed by mapping all Minecraft identifiers to a specific
ID and suffix combo so the mob can be kept and rendered uniquely.