Finalizing classes is good practise for types that you do not intend to have extended. This is especially good practise for singleton classes - see below - that should only ever have one implementation of themselves at compile time and/or runtime.
Exposing the mutable proxy field is bad practise and design, and should be handle with encapsulation of the reference. This PR replaces your public proxy field with a private one, pair with a public getter. All usages of the proxy have been updated for the encapsulation design.
Migrating to Mod$InstanceFactory allows you full control over your mod instance, rather than relying on a reflectively assigned mutable field. This PR suggests an implementation of an eagerly loaded singleton, i.e a private static final instance in the root of the class, paired with a private constructor.
public
proxy field with aprivate
one, pair with apublic
getter. All usages of the proxy have been updated for the encapsulation design.Mod$InstanceFactory
allows you full control over your mod instance, rather than relying on a reflectively assigned mutable field. This PR suggests an implementation of an eagerly loaded singleton, i.e aprivate static final
instance in the root of the class, paired with aprivate
constructor.