diff options
| author | shedaniel <daniel@shedaniel.me> | 2020-09-07 22:08:32 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2020-09-07 22:08:32 +0800 |
| commit | 5d94a3178457ec240030fc3162e7c2a6f4d41c6c (patch) | |
| tree | 2df92ddfa1751e3088d798b0f8137989fa525cec /RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java | |
| parent | 5533e1734362ab93248ebc6d0b67f2806cc5a53a (diff) | |
| download | RoughlyEnoughItems-5d94a3178457ec240030fc3162e7c2a6f4d41c6c.tar.gz RoughlyEnoughItems-5d94a3178457ec240030fc3162e7c2a6f4d41c6c.tar.bz2 RoughlyEnoughItems-5d94a3178457ec240030fc3162e7c2a6f4d41c6c.zip | |
Improve memory usage
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java')
| -rw-r--r-- | RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java b/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java index 53f1e79a6..91907294d 100644 --- a/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java +++ b/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java @@ -23,7 +23,7 @@ package me.shedaniel.rei.impl; -import it.unimi.dsi.fastutil.objects.Reference2ObjectMap; +import it.unimi.dsi.fastutil.objects.Reference2ObjectMaps; import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap; import me.shedaniel.rei.api.EntryStack; import net.minecraft.client.gui.GuiComponent; @@ -33,33 +33,38 @@ import java.util.Map; @ApiStatus.Internal public abstract class AbstractEntryStack extends GuiComponent implements EntryStack { - private Reference2ObjectMap<Settings<?>, Object> settings = new Reference2ObjectOpenHashMap<>(); + private static final Map<Settings<?>, Object> EMPTY_SETTINGS = Reference2ObjectMaps.emptyMap(); + private Map<Settings<?>, Object> settings = null; @Override public <T> EntryStack setting(Settings<T> settings, T value) { + if (this.settings == null) + this.settings = new Reference2ObjectOpenHashMap<>(4); this.settings.put(settings, value); return this; } @Override public <T> EntryStack removeSetting(Settings<T> settings) { - this.settings.remove(settings); + if (this.settings != null && this.settings.remove(settings) != null && this.settings.isEmpty()) { + this.settings = null; + } return this; } @Override public EntryStack clearSettings() { - this.settings.clear(); + this.settings = null; return this; } protected Map<Settings<?>, Object> getSettings() { - return settings; + return this.settings == null ? EMPTY_SETTINGS : this.settings; } @Override public <T> T get(Settings<T> settings) { - Object o = this.settings.get(settings); + Object o = this.settings == null ? null : this.settings.get(settings); if (o == null) return settings.getDefaultValue(); return (T) o; |
