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(final String lvt_1_0_, Dynamic<?> lvt_2_0_) {
    if(Objects.equals("minecraft:ocelot", lvt_1_0_)) {
      final int i = lvt_2_0_.get("CatType").asInt(0);
      if(i == 0) {
        final String s = lvt_2_0_.get("Owner").asString("");
        final String s1 = lvt_2_0_.get("OwnerUUID").asString("");
        if(s.length() > 0 || s1.length() > 0) {
          lvt_2_0_.set("Trusting", lvt_2_0_.createBoolean(true));
        }
      } else if(i > 0 && i < 4) {
        lvt_2_0_ = lvt_2_0_.set("CatType", lvt_2_0_.createInt(i));
        lvt_2_0_ = lvt_2_0_.set("OwnerUUID", lvt_2_0_.createString(lvt_2_0_.get("OwnerUUID").asString("")));
        return Pair.of("minecraft:cat", lvt_2_0_);
      }
    }

    return Pair.of(lvt_1_0_, lvt_2_0_);
  }

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

Retrieved