GeckoLib

GeckoLib

155M Downloads

Client stalls on startup & resourcepack load/reload when loading a model with missing parent bones

Elenterius opened this issue · 1 comments

commented

GeckoLib Version

geckolib-forge-1.20.1-4.4.4

Bug Description

The client stalls on startup or resourcepack load/reload when geckolib tries to load model geometry with bones that reference a non-existing parent bone.

Profiling has shown that GeometryTree.fromModel() is the culprit for the stalling.

public static GeometryTree fromModel(Model model) {

Expected Behavior

The client should crash or skip loading of the faulty model.

How to replicate

Place the following model into your assets/<namespace>/geo folder or use this resourcepack geckolib_bug.zip

{
	"format_version": "1.12.0",
	"minecraft:geometry": [
		{
			"description": {
				"identifier": "geometry.unknown",
				"texture_width": 16,
				"texture_height": 16,
				"visible_bounds_width": 2,
				"visible_bounds_height": 1.5,
				"visible_bounds_offset": [0, 0.25, 0]
			},
			"bones": [
				{
					"name": "orphan",
					"parent": "missing_parent",
					"pivot": [0, 0, 0],
					"cubes": [
						{"origin": [-1, 0, -1], "size": [2, 2, 2], "uv": [0, 0]}
					]
				}
			]
		}
	]
}

Important

The bone "orphan" is referencing the non-existing parent bone "missing_parent"

How to easily produce faulty models with Blockbench

image

Important

Please take note of how i disabled the export of the parent bone

commented

This is fixed in 4.5 and if backported will be fixed in 1.20.1