aboutsummaryrefslogtreecommitdiff
path: root/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2020-12-14 00:10:26 +0800
committershedaniel <daniel@shedaniel.me>2020-12-14 00:10:26 +0800
commit1f6137d24153b62c42da129ce5d6373bbf78ee34 (patch)
tree75ae34e8a1db21e08253a3fc424a8989abd20d9f /RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java
parent90b8a8181eb7e642fb88832f8bd8baa3acdcf804 (diff)
downloadRoughlyEnoughItems-1f6137d24153b62c42da129ce5d6373bbf78ee34.tar.gz
RoughlyEnoughItems-1f6137d24153b62c42da129ce5d6373bbf78ee34.tar.bz2
RoughlyEnoughItems-1f6137d24153b62c42da129ce5d6373bbf78ee34.zip
The big refactor
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.java60
1 files changed, 23 insertions, 37 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 fcc256adc..4b8d0ca83 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,20 +23,27 @@
package me.shedaniel.rei.impl;
+import com.mojang.blaze3d.vertex.PoseStack;
import it.unimi.dsi.fastutil.shorts.Short2ObjectMap;
import it.unimi.dsi.fastutil.shorts.Short2ObjectMaps;
import it.unimi.dsi.fastutil.shorts.Short2ObjectOpenHashMap;
+import me.shedaniel.math.Point;
+import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.EntryStack;
-import net.minecraft.client.gui.GuiComponent;
+import me.shedaniel.rei.api.entry.AbstractRenderer;
+import me.shedaniel.rei.api.entry.ComparisonContext;
+import me.shedaniel.rei.api.entry.EntryStacks;
+import me.shedaniel.rei.api.widgets.Tooltip;
import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.Nullable;
@ApiStatus.Internal
-public abstract class AbstractEntryStack extends GuiComponent implements EntryStack {
+public abstract class AbstractEntryStack<A> extends AbstractRenderer implements EntryStack<A> {
private static final Short2ObjectMap<Object> EMPTY_SETTINGS = Short2ObjectMaps.emptyMap();
private Short2ObjectMap<Object> settings = null;
@Override
- public <T> EntryStack setting(Settings<T> settings, T value) {
+ public <T> EntryStack<A> setting(Settings<T> settings, T value) {
short settingsId = settings.getId();
if (this.settings == null)
this.settings = Short2ObjectMaps.singleton(settingsId, value);
@@ -57,7 +64,7 @@ public abstract class AbstractEntryStack extends GuiComponent implements EntrySt
}
@Override
- public <T> EntryStack removeSetting(Settings<T> settings) {
+ public <T> EntryStack<A> removeSetting(Settings<T> settings) {
if (this.settings != null) {
short settingsId = settings.getId();
if (this.settings.size() == 1) {
@@ -72,7 +79,7 @@ public abstract class AbstractEntryStack extends GuiComponent implements EntrySt
}
@Override
- public EntryStack clearSettings() {
+ public EntryStack<A> clearSettings() {
this.settings = null;
return this;
}
@@ -90,46 +97,25 @@ public abstract class AbstractEntryStack extends GuiComponent implements EntrySt
}
@Override
- public boolean equals(EntryStack stack, boolean ignoreTags, boolean ignoreAmount) {
- if (ignoreTags && ignoreAmount)
- return equalsIgnoreTagsAndAmount(stack);
- if (ignoreAmount)
- return equalsIgnoreAmount(stack);
- if (ignoreTags)
- return equalsIgnoreTags(stack);
- return equalsAll(stack);
+ public void render(PoseStack matrices, Rectangle bounds, int mouseX, int mouseY, float delta) {
+ this.getDefinition().getRenderer().render(this, matrices, bounds, mouseX, mouseY, delta);
}
@Override
- public boolean equals(Object obj) {
- if (!(obj instanceof EntryStack))
- return false;
- EntryStack stack = (EntryStack) obj;
- boolean checkTags = get(Settings.CHECK_TAGS).get() || stack.get(Settings.CHECK_TAGS).get();
- boolean checkAmount = get(Settings.CHECK_AMOUNT).get() || stack.get(Settings.CHECK_AMOUNT).get();
- return equals(stack, !checkTags, !checkAmount);
+ public @Nullable Tooltip getTooltip(Point mouse) {
+ return this.getDefinition().getRenderer().getTooltip(this, mouse);
}
@Override
- public int hashCode() {
- boolean checkTags = get(Settings.CHECK_TAGS).get();
- boolean checkAmount = get(Settings.CHECK_AMOUNT).get();
- if (!checkAmount && !checkTags)
- return hashIgnoreAmountAndTags();
- if (!checkAmount)
- return hashIgnoreAmount();
- if (!checkTags)
- return hashIgnoreTags();
- return hashOfAll();
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof AbstractEntryStack)) return false;
+ AbstractEntryStack<?> that = (AbstractEntryStack<?>) o;
+ return EntryStacks.equalsExact(this, that);
}
@Override
- public int getZ() {
- return getBlitOffset();
- }
-
- @Override
- public void setZ(int z) {
- setBlitOffset(z);
+ public int hashCode() {
+ return hash(ComparisonContext.EXACT);
}
}