mojira.dev
MC-203222

SlotWrapper does nothing and obfuscates behavior

The following internal class does nothing based on its implementation, which is a pure class wrapper that adds 0 behavior. Including minuscule memory and performance implication, this wrapper slot actually adds minor developmental burden, as all slots in a creative inventory need to derive from it, because mouse interaction casts every slot into a creative slot (again, for no actual reason). For additional headache, the wrapper class inhibits some more specific modding attempts regarding the creative inventory.

net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen$SlotWrapper

Comments 1

Can confirm in 1.21.11, the decompiled bytecode proves that the wrapper is still a completely behaviorless delegator that adds unnecessary overhead:

class gua$c extends dji {
  final dji a;

  public gua$c(dji, int, int, int);
    Code:
       0: aload_0
       1: aload_1
       2: getfield      #15
       5: iload_2
       6: iload_3
       7: iload         4
       9: invokespecial #18
      12: aload_0
      13: aload_1
      14: putfield      #20
      17: return

  public void a(ddm, dlt);
    Code:
       0: aload_0
       1: getfield      #20
       4: aload_1
       5: aload_2
       6: invokevirtual #30
       9: return

  public boolean a(dlt);
    Code:
       0: aload_0
       1: getfield      #20
       4: aload_1
       5: invokevirtual #35
       8: ireturn

  public dlt g();
    Code:
       0: aload_0
       1: getfield      #20
       4: invokevirtual #39
       7: areturn

  public boolean h();
    Code:
       0: aload_0
       1: getfield      #20
       4: invokevirtual #43
       7: ireturn

  public void a(dlt, dlt);
    Code:
       0: aload_0
       1: getfield      #20
       4: aload_1
       5: aload_2
       6: invokevirtual #46
       9: return

  public void f(dlt);
    Code:
       0: aload_0
       1: getfield      #20
       4: aload_1
       5: invokevirtual #50
       8: return

  public void d();
    Code:
       0: aload_0
       1: getfield      #20
       4: invokevirtual #54
       7: return

  public int a();
    Code:
       0: aload_0
       1: getfield      #20
       4: invokevirtual #57
       7: ireturn

  public int b_(dlt);
    Code:
       0: aload_0
       1: getfield      #20
       4: aload_1
       5: invokevirtual #61
       8: ireturn

  public amo c();
    Code:
       0: aload_0
       1: getfield      #20
       4: invokevirtual #65
       7: areturn

  public dlt a(int);
    Code:
       0: aload_0
       1: getfield      #20
       4: iload_1
       5: invokevirtual #68
       8: areturn

  public boolean b();
    Code:
       0: aload_0
       1: getfield      #20
       4: invokevirtual #71
       7: ireturn

  public boolean a(ddm);
    Code:
       0: aload_0
       1: getfield      #20
       4: aload_1
       5: invokevirtual #74
       8: ireturn
}

Emily

(Unassigned)

Community Consensus

(Unassigned)

1.16.3, 1.16.4 Release Candidate 1, 1.16.4, 20w45a, 1.21.11

Retrieved