aboutsummaryrefslogtreecommitdiff
path: root/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2020-09-07 22:08:32 +0800
committershedaniel <daniel@shedaniel.me>2020-09-07 22:08:32 +0800
commit5d94a3178457ec240030fc3162e7c2a6f4d41c6c (patch)
tree2df92ddfa1751e3088d798b0f8137989fa525cec /RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java
parent5533e1734362ab93248ebc6d0b67f2806cc5a53a (diff)
downloadRoughlyEnoughItems-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.java17
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;