mojira.dev
MC-150635

EntityCatSplitFix does not properly retain newly set Trusting tag during datafixing

EntityCatSplitFix does not properly retain the newly set Trusting tag when datafixing minecraft:ocelot - the Dynamic is not re-assigned after setting Trusted, and Dynamic instances are not mutable:

protected Pair<String, Dynamic<?>> getNewNameAndTag(String name, Dynamic<?> tag) {
	if (Objects.equals("minecraft:ocelot", name)) {
		int type = tag.get("CatType").asInt(0);
		if (type == 0) {
			String ownerName = tag.get("Owner").asString("");
			String ownerUUID = tag.get("OwnerUUID").asString("");
			if (!ownerName.isEmpty() || !ownerUUID.isEmpty()) {
				tag.set("Trusting", tag.createBoolean(true));
			}
		} else if (type > 0 && type < 4) {
			tag = tag.set("CatType", tag.createInt(type));
			tag = tag.set("OwnerUUID", tag.createString(tag.get("OwnerUUID").asString("")));
			return Pair.of((Object)"minecraft:cat", (Object)tag);
		}
	}
	return Pair.of((Object)name, tag);
}

Linked issues

Comments 1

Can confirm in 1.19.3 and 23w04a

Riley Park

(Unassigned)

Confirmed

Datafixer

Minecraft 1.14, 1.15 Pre-release 6, 1.19.3, 23w04a, 26.2

Retrieved