aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java/me
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-06-22 01:11:38 +0800
committershedaniel <daniel@shedaniel.me>2021-06-22 01:11:38 +0800
commit0d1886cd3a85e7829646b666c36b35cf3321f1b0 (patch)
treeaf34bc9109845fad52a25f2ec32fb4f1e1b8bb57 /runtime/src/main/java/me
parent2cc2cfa70062efac58335d62ad8e47105c15fdd7 (diff)
downloadRoughlyEnoughItems-0d1886cd3a85e7829646b666c36b35cf3321f1b0.tar.gz
RoughlyEnoughItems-0d1886cd3a85e7829646b666c36b35cf3321f1b0.tar.bz2
RoughlyEnoughItems-0d1886cd3a85e7829646b666c36b35cf3321f1b0.zip
Fix #559
Diffstat (limited to 'runtime/src/main/java/me')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java17
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/EntryComparatorRegistryImpl.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/FluidComparatorRegistryImpl.java15
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/ItemComparatorRegistryImpl.java15
6 files changed, 49 insertions, 14 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java
index fabe48aed..07dd71186 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java
@@ -75,7 +75,6 @@ import net.minecraft.client.gui.chat.NarratorChatListener;
import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
-import net.minecraft.client.gui.screens.inventory.tooltip.ClientTextTooltip;
import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.client.multiplayer.PlayerInfo;
@@ -83,10 +82,12 @@ import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.client.resources.sounds.SimpleSoundInstance;
import net.minecraft.locale.Language;
-import net.minecraft.network.chat.*;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.Style;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvents;
-import net.minecraft.util.FormattedCharSequence;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.inventory.Slot;
import net.minecraft.world.item.ItemStack;
@@ -643,9 +644,8 @@ public class ScreenOverlayImpl extends ScreenOverlay {
return ViewSearchBuilder.builder().addUsagesFor(stack).open();
} else if (ConfigObject.getInstance().getFavoriteKeyCode().matchesKey(keyCode, scanCode)) {
FavoriteEntry favoriteEntry = FavoriteEntry.fromEntryStack(stack);
- if (!ConfigObject.getInstance().getFavoriteEntries().contains(favoriteEntry)) {
- ConfigObject.getInstance().getFavoriteEntries().add(favoriteEntry);
- }
+ ConfigObject.getInstance().getFavoriteEntries().remove(favoriteEntry);
+ ConfigObject.getInstance().getFavoriteEntries().add(favoriteEntry);
ConfigManager.getInstance().saveConfig();
FavoritesListWidget favoritesListWidget = ScreenOverlayImpl.getFavoritesListWidget();
if (favoritesListWidget != null)
@@ -704,9 +704,8 @@ public class ScreenOverlayImpl extends ScreenOverlay {
return ViewSearchBuilder.builder().addUsagesFor(stack).open();
} else if (visible && ConfigObject.getInstance().getFavoriteKeyCode().matchesMouse(button)) {
FavoriteEntry favoriteEntry = FavoriteEntry.fromEntryStack(stack);
- if (!ConfigObject.getInstance().getFavoriteEntries().contains(favoriteEntry)) {
- ConfigObject.getInstance().getFavoriteEntries().add(favoriteEntry);
- }
+ ConfigObject.getInstance().getFavoriteEntries().remove(favoriteEntry);
+ ConfigObject.getInstance().getFavoriteEntries().add(favoriteEntry);
ConfigManager.getInstance().saveConfig();
FavoritesListWidget favoritesListWidget = ScreenOverlayImpl.getFavoritesListWidget();
if (favoritesListWidget != null)
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java
index 659862c02..55bb8f98d 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java
@@ -385,8 +385,10 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget {
FavoriteEntry favoriteEntry = asFavoriteEntry();
if (reverseFavoritesAction())
ConfigObject.getInstance().getFavoriteEntries().remove(favoriteEntry);
- else if (!ConfigObject.getInstance().getFavoriteEntries().contains(favoriteEntry))
+ else {
+ ConfigObject.getInstance().getFavoriteEntries().remove(favoriteEntry);
ConfigObject.getInstance().getFavoriteEntries().add(favoriteEntry);
+ }
ConfigManager.getInstance().saveConfig();
FavoritesListWidget favoritesListWidget = ScreenOverlayImpl.getFavoritesListWidget();
if (favoritesListWidget != null)
@@ -432,8 +434,10 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget {
FavoriteEntry favoriteEntry = asFavoriteEntry();
if (reverseFavoritesAction())
ConfigObject.getInstance().getFavoriteEntries().remove(favoriteEntry);
- else if (!ConfigObject.getInstance().getFavoriteEntries().contains(favoriteEntry))
+ else {
+ ConfigObject.getInstance().getFavoriteEntries().remove(favoriteEntry);
ConfigObject.getInstance().getFavoriteEntries().add(favoriteEntry);
+ }
ConfigManager.getInstance().saveConfig();
FavoritesListWidget favoritesListWidget = ScreenOverlayImpl.getFavoritesListWidget();
if (favoritesListWidget != null)
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java
index 63ca1094e..e48af7699 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java
@@ -461,7 +461,7 @@ public class FavoritesListWidget extends WidgetWithBounds implements DraggableSt
}
double x = position.x - 8;
- double y = position.y - 8;
+ double y = position.y + scrolling.scrollAmount - 8;
return Mth.clamp(entriesPoints.stream()
.filter(value -> {
@@ -486,7 +486,7 @@ public class FavoritesListWidget extends WidgetWithBounds implements DraggableSt
public void drop(Entry entry, DraggableStack stack, FavoriteEntry favoriteEntry) {
DraggingContext<?> context = DraggingContext.getInstance();
double x = context.getCurrentPosition().x;
- double y = context.getCurrentPosition().y;
+ double y = context.getCurrentPosition().y + scrolling.scrollAmount;
entry.startedDraggingPosition = null;
entry.x.setAs(x - 8);
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/EntryComparatorRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/EntryComparatorRegistryImpl.java
index b4c12be04..51d91cb14 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/EntryComparatorRegistryImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/EntryComparatorRegistryImpl.java
@@ -53,13 +53,15 @@ public abstract class EntryComparatorRegistryImpl<T, S> implements EntryComparat
public abstract S getEntry(T stack);
+ public abstract EntryComparator<T> defaultComparator();
+
@Override
public long hashOf(ComparisonContext context, T stack) {
EntryComparator<T> comparator = comparators.get(getEntry(stack));
if (comparator != null) {
return comparator.hash(context, stack);
}
- return 1;
+ return defaultComparator().hash(context, stack);
}
@Override
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/FluidComparatorRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/FluidComparatorRegistryImpl.java
index fd394d04d..ab31dcbe1 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/FluidComparatorRegistryImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/FluidComparatorRegistryImpl.java
@@ -24,17 +24,32 @@
package me.shedaniel.rei.impl.common.entry.comparison;
import dev.architectury.fluid.FluidStack;
+import me.shedaniel.rei.api.common.entry.comparison.EntryComparator;
import me.shedaniel.rei.api.common.entry.comparison.FluidComparatorRegistry;
import me.shedaniel.rei.api.common.plugins.REIPlugin;
import net.minecraft.world.level.material.Fluid;
public class FluidComparatorRegistryImpl extends EntryComparatorRegistryImpl<FluidStack, Fluid> implements FluidComparatorRegistry {
+ private final EntryComparator<FluidStack> fluidNbt = EntryComparator.fluidNbt();
+ private final EntryComparator<FluidStack> defaultComparator = (context, stack) -> {
+ if (context.isExact()) {
+ return fluidNbt.hash(context, stack);
+ } else {
+ return 1;
+ }
+ };
+
@Override
public Fluid getEntry(FluidStack stack) {
return stack.getFluid();
}
@Override
+ public EntryComparator<FluidStack> defaultComparator() {
+ return defaultComparator;
+ }
+
+ @Override
public void acceptPlugin(REIPlugin<?> plugin) {
plugin.registerFluidComparators(this);
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/ItemComparatorRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/ItemComparatorRegistryImpl.java
index e1c7b7a3b..08de7333f 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/ItemComparatorRegistryImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/ItemComparatorRegistryImpl.java
@@ -23,18 +23,33 @@
package me.shedaniel.rei.impl.common.entry.comparison;
+import me.shedaniel.rei.api.common.entry.comparison.EntryComparator;
import me.shedaniel.rei.api.common.entry.comparison.ItemComparatorRegistry;
import me.shedaniel.rei.api.common.plugins.REIPlugin;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
public class ItemComparatorRegistryImpl extends EntryComparatorRegistryImpl<ItemStack, Item> implements ItemComparatorRegistry {
+ private final EntryComparator<ItemStack> itemNbt = EntryComparator.itemNbt();
+ private final EntryComparator<ItemStack> defaultComparator = (context, stack) -> {
+ if (context.isExact()) {
+ return itemNbt.hash(context, stack);
+ } else {
+ return 1;
+ }
+ };
+
@Override
public Item getEntry(ItemStack stack) {
return stack.getItem();
}
@Override
+ public EntryComparator<ItemStack> defaultComparator() {
+ return defaultComparator;
+ }
+
+ @Override
public void acceptPlugin(REIPlugin<?> plugin) {
plugin.registerItemComparators(this);
}