aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/src/main')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java12
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java13
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java12
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java1
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRuleType.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/RecipeDisplayExporter.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/config/components/ConfigOptionValueWidget.java21
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/config/components/ConfigOptionWidget.java3
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/config/options/AllREIConfigGroups.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/error/ErrorsEntryListWidget.java13
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/collapsible/selection/CustomCollapsibleEntrySelectionScreen.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/generic/OptionEntriesScreen.java1
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CachedEntryListRender.java34
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DynamicErrorFreeEntryListWidget.java24
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryHighlighter.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java13
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/HoleWidget.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/ArrowWidget.java12
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/BurningFireWidget.java12
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayEntry.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryManager.java16
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/panel/FadingFavoritesPanelButton.java1
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/SlotAccessorRegistryImpl.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/DefaultRuntimePlugin.java4
31 files changed, 113 insertions, 158 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
index 86ccdcb37..69275ebc9 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
@@ -99,7 +99,6 @@ import me.shedaniel.rei.plugin.test.REITestPlugin;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.data.models.blockstates.PropertyDispatch;
import net.minecraft.client.gui.components.EditBox;
import net.minecraft.client.gui.components.ImageButton;
import net.minecraft.client.gui.components.events.GuiEventListener;
@@ -140,14 +139,14 @@ public class RoughlyEnoughItemsCoreClient {
ClientInternals.attachInstance((Supplier<EntryRenderer<?>>) () -> emptyEntryRenderer, "emptyEntryRenderer");
ClientInternals.attachInstance((BiFunction<Supplier<DataResult<FavoriteEntry>>, Supplier<CompoundTag>, FavoriteEntry>) DelegatingFavoriteEntryProviderImpl::new, "delegateFavoriteEntry");
ClientInternals.attachInstance((Function<CompoundTag, DataResult<FavoriteEntry>>) (object) -> {
- String type = object.getString(FavoriteEntry.TYPE_KEY);
+ String type = object.getString(FavoriteEntry.TYPE_KEY).orElseThrow();
ResourceLocation id = ResourceLocation.parse(type);
FavoriteEntryType<FavoriteEntry> entryType = FavoriteEntryType.registry().get(id);
if (entryType == null) return DataResult.error(() -> "Unknown favorite type: " + id + ", json: " + object);
return entryType.read(object);
}, "favoriteEntryFromJson");
ClientInternals.attachInstance((BiFunction<@Nullable Point, Collection<Tooltip.Entry>, Tooltip>) QueuedTooltip::impl, "tooltipProvider");
- ClientInternals.attachInstance((PropertyDispatch.QuadFunction<Point, @Nullable TooltipFlag, Boolean, Item.TooltipContext, TooltipContext>) TooltipContextImpl::new, "tooltipContextProvider");
+ ClientInternals.attachInstance((ClientInternals.QuadFunction<Point, @Nullable TooltipFlag, Boolean, Item.TooltipContext, TooltipContext>) TooltipContextImpl::new, "tooltipContextProvider");
ClientInternals.attachInstance((Function<Object, Tooltip.Entry>) QueuedTooltip.TooltipEntryImpl::new, "tooltipEntryProvider");
ClientInternals.attachInstance((BiFunction<Component, List<FavoriteMenuEntry>, FavoriteMenuEntry>) SubMenuEntry::new, "subMenuEntry");
ClientInternals.attachInstance((BiFunction<Component, BooleanValue, FavoriteMenuEntry>) (text, value) -> ToggleMenuEntry.of(text, value::get, value), "toggleEntry");
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
index a1305b421..511decbd6 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
@@ -132,7 +132,7 @@ public class RoughlyEnoughItemsNetwork {
int hotbarSlotId = buf.readVarInt();
if (hotbarSlotId >= 0 && hotbarSlotId < 9) {
AbstractContainerMenu menu = player.containerMenu;
- player.getInventory().items.set(hotbarSlotId, stack.copy());
+ player.getInventory().setItem(hotbarSlotId, stack.copy());
menu.broadcastChanges();
RegistryFriendlyByteBuf newBuf = new RegistryFriendlyByteBuf(Unpooled.buffer(), player.registryAccess());
newBuf.writeJsonWithCodec(ItemStack.OPTIONAL_CODEC, stack.copy());
@@ -151,11 +151,11 @@ public class RoughlyEnoughItemsNetwork {
boolean shift = packetByteBuf.readBoolean();
try {
CompoundTag nbt = packetByteBuf.readNbt();
- int version = nbt.getInt("Version");
+ int version = nbt.getInt("Version").orElse(-1);
if (version != 1) throw new IllegalStateException("Server and client REI protocol version mismatch! Server: 1, Client: " + version);
- List<InputIngredient<ItemStack>> inputs = readInputs(context.registryAccess(), nbt.getList("Inputs", Tag.TAG_COMPOUND));
- List<SlotAccessor> input = readSlots(container, player, nbt.getList("InputSlots", Tag.TAG_COMPOUND));
- List<SlotAccessor> inventory = readSlots(container, player, nbt.getList("InventorySlots", Tag.TAG_COMPOUND));
+ List<InputIngredient<ItemStack>> inputs = readInputs(context.registryAccess(), nbt.getListOrEmpty("Inputs"));
+ List<SlotAccessor> input = readSlots(container, player, nbt.getListOrEmpty("InputSlots"));
+ List<SlotAccessor> inventory = readSlots(container, player, nbt.getListOrEmpty("InventorySlots"));
NewInputSlotCrafter<AbstractContainerMenu, Container> crafter = new NewInputSlotCrafter<>(container, input, inventory, inputs);
crafter.fillInputSlots(player, shift);
} catch (InputSlotCrafter.NotEnoughMaterialsException e) {
@@ -189,7 +189,7 @@ public class RoughlyEnoughItemsNetwork {
List<InputIngredient<ItemStack>> inputs = new ArrayList<>();
for (Tag t : tag) {
CompoundTag compoundTag = (CompoundTag) t;
- InputIngredient<EntryStack<?>> stacks = InputIngredient.of(compoundTag.getInt("Index"), EntryIngredient.codec().parse(registryAccess.createSerializationContext(NbtOps.INSTANCE), compoundTag.getList("Ingredient", Tag.TAG_COMPOUND)).getOrThrow());
+ InputIngredient<EntryStack<?>> stacks = InputIngredient.of(compoundTag.getInt("Index").orElseThrow(), EntryIngredient.codec().parse(registryAccess.createSerializationContext(NbtOps.INSTANCE), compoundTag.getListOrEmpty("Ingredient")).getOrThrow());
inputs.add(InputIngredient.withType(stacks, VanillaEntryTypes.ITEM));
}
return inputs;
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java
index 7591124f3..ba4c7cc1a 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java
@@ -57,7 +57,6 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen;
-import net.minecraft.core.NonNullList;
import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
@@ -128,7 +127,7 @@ public class ClientHelperImpl implements ClientHelper {
}
public boolean canDeleteItems() {
- return hasPermissionToUsePackets() || Minecraft.getInstance().gameMode.hasInfiniteItems();
+ return hasPermissionToUsePackets() || Minecraft.getInstance().player.hasInfiniteMaterials();
}
@Override
@@ -286,12 +285,10 @@ public class ClientHelperImpl implements ClientHelper {
return Long2LongMaps.EMPTY_MAP;
}
Long2LongOpenHashMap map = new Long2LongOpenHashMap();
- for (NonNullList<ItemStack> compartment : Minecraft.getInstance().player.getInventory().compartments) {
- for (ItemStack stack : compartment) {
- long hash = definition.hash(null, stack, ComparisonContext.FUZZY);
- long newCount = map.getOrDefault(hash, 0) + Math.max(0, stack.getCount());
- map.put(hash, newCount);
- }
+ for (ItemStack stack : Minecraft.getInstance().player.getInventory().getNonEquipmentItems()) {
+ long hash = definition.hash(null, stack, ComparisonContext.FUZZY);
+ long newCount = map.getOrDefault(hash, 0) + Math.max(0, stack.getCount());
+ map.put(hash, newCount);
}
return map;
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java
index 33eccf0ab..2e0dc1ec8 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java
@@ -256,11 +256,11 @@ public class REIRuntimeImpl implements REIRuntime {
public void startReload() {
getOverlay().ifPresent(ScreenOverlay::queueReloadOverlay);
lastDisplayScreen.clear();
- if (!RenderSystem.isOnRenderThread()) {
+ /*if (!RenderSystem.isOnRenderThread()) {
RenderSystem.recordRenderCall(CachedEntryListRender::refresh);
} else {
CachedEntryListRender.refresh();
- }
+ }*/
}
@Override
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java
index d6cd1418d..05610502f 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java
@@ -58,6 +58,7 @@ import net.fabricmc.api.Environment;
import net.minecraft.ResourceLocationException;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.NbtOps;
import net.minecraft.nbt.Tag;
import net.minecraft.nbt.TagParser;
import net.minecraft.network.chat.Component;
@@ -70,6 +71,7 @@ import java.util.Locale;
@ApiStatus.Internal
@Environment(EnvType.CLIENT)
public class ConfigManagerImpl implements ConfigManager {
+ private static final TagParser<Tag> NBT_OPS_PARSER = TagParser.create(NbtOps.INSTANCE);
private boolean craftableOnly = false;
private final Gson gson = new GsonBuilder().create();
private ConfigObjectImpl object;
@@ -138,7 +140,7 @@ public class ConfigManagerImpl implements ConfigManager {
});
builder.registerDeserializer(String.class, Tag.class, (value, marshaller) -> {
try {
- return TagParser.parseTag(value);
+ return NBT_OPS_PARSER.parseFully(value);
} catch (CommandSyntaxException e) {
throw new DeserializationException(e);
}
@@ -150,7 +152,7 @@ public class ConfigManagerImpl implements ConfigManager {
});
builder.registerDeserializer(String.class, CompoundTag.class, (value, marshaller) -> {
try {
- return TagParser.parseTag(value);
+ return TagParser.parseCompoundFully(value);
} catch (CommandSyntaxException e) {
throw new DeserializationException(e);
}
@@ -170,7 +172,7 @@ public class ConfigManagerImpl implements ConfigManager {
});
builder.registerDeserializer(String.class, EntryStackProvider.class, (value, marshaller) -> {
try {
- return EntryStackProvider.defer(new TagParser(new StringReader(value)).readValue());
+ return EntryStackProvider.defer(NBT_OPS_PARSER.parseFully(new StringReader(value)));
} catch (CommandSyntaxException e) {
e.printStackTrace();
return EntryStackProvider.ofStack(EntryStack.empty());
@@ -196,7 +198,7 @@ public class ConfigManagerImpl implements ConfigManager {
});
builder.registerDeserializer(String.class, FilteringRule.class, (value, marshaller) -> {
try {
- return FilteringRuleType.read(TagParser.parseTag(value));
+ return FilteringRuleType.read(TagParser.parseCompoundFully(value));
} catch (Exception e) {
e.printStackTrace();
return null;
@@ -217,7 +219,7 @@ public class ConfigManagerImpl implements ConfigManager {
});
builder.registerDeserializer(String.class, FavoriteEntry.class, (value, marshaller) -> {
try {
- CompoundTag tag = TagParser.parseTag(value);
+ CompoundTag tag = TagParser.parseCompoundFully(value);
return FavoriteEntry.readDelegated(tag);
} catch (Exception e) {
e.printStackTrace();
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java
index 41e91b7c9..4b500fa1f 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java
@@ -370,6 +370,7 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData {
@Override
public ModifierKeyCode getExportImageKeybind() {
+ if (true) return ModifierKeyCode.unknown();
return basics.keyBindings.exportImageKeybind == null ? ModifierKeyCode.unknown() : basics.keyBindings.exportImageKeybind;
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java
index 442326252..0e322a879 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java
@@ -25,7 +25,6 @@ package me.shedaniel.rei.impl.client.config.entries;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
-import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.VertexConsumer;
import me.shedaniel.clothconfig2.ClothConfigInitializer;
import me.shedaniel.clothconfig2.api.scroll.ScrollingContainer;
@@ -460,9 +459,7 @@ public class FilteringScreen extends Screen {
if (isSelected()) {
boolean filtered = isFiltered();
Rectangle bounds = getBounds();
- RenderSystem.disableDepthTest();
graphics.fillGradient(bounds.x, bounds.y, bounds.getMaxX(), bounds.getMaxY(), filtered ? 0x90ffffff : 0x55ffffff, filtered ? 0x90ffffff : 0x55ffffff);
- RenderSystem.enableDepthTest();
}
}
@@ -482,9 +479,7 @@ public class FilteringScreen extends Screen {
protected void drawBackground(GuiGraphics graphics, int mouseX, int mouseY, float delta) {
if (isFiltered()) {
Rectangle bounds = getBounds();
- RenderSystem.disableDepthTest();
graphics.fillGradient(bounds.x, bounds.y, bounds.getMaxX(), bounds.getMaxY(), 0xffff0000, 0xffff0000);
- RenderSystem.enableDepthTest();
}
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRuleType.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRuleType.java
index 41c4b6875..cfe4999e0 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRuleType.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRuleType.java
@@ -65,8 +65,8 @@ public enum SearchFilteringRuleType implements FilteringRuleType<SearchFiltering
@Override
public SearchFilteringRule readFrom(CompoundTag tag) {
- String filter = tag.getString("filter");
- boolean show = tag.getBoolean("show");
+ String filter = tag.getString("filter").orElseThrow();
+ boolean show = tag.getBoolean("show").orElseThrow();
return new SearchFilteringRule(filter, show);
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/RecipeDisplayExporter.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/RecipeDisplayExporter.java
index 9183eed9a..d66ac1e2f 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/RecipeDisplayExporter.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/RecipeDisplayExporter.java
@@ -80,9 +80,9 @@ public final class RecipeDisplayExporter {
}
private static void exportRecipe(Rectangle rectangle, DisplaySpec display, List<Widget> widgets) {
- Minecraft client = Minecraft.getInstance();
+ /*Minecraft client = Minecraft.getInstance();
Window window = client.getWindow();
- RenderTarget renderTarget = new TextureTarget(window.getWidth(), window.getHeight(), true);
+ RenderTarget renderTarget = new TextureTarget(null, window.getWidth(), window.getHeight(), true);
renderTarget.setClearColor(0, 0, 0, 0);
renderTarget.bindWrite(true);
RenderSystem.clear(256);
@@ -126,6 +126,6 @@ public final class RecipeDisplayExporter {
renderTarget.destroyBuffers();
// Minecraft.getInstance().levelRenderer.graphicsChanged();
Minecraft.getInstance().getMainRenderTarget().bindWrite(true);
- poseStack.popMatrix();
+ poseStack.popMatrix();*/
}
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/config/components/ConfigOptionValueWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/config/components/ConfigOptionValueWidget.java
index 1e2a67292..4f9a83e96 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/config/components/ConfigOptionValueWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/config/components/ConfigOptionValueWidget.java
@@ -46,7 +46,6 @@ import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.FormattedText;
import net.minecraft.resources.ResourceLocation;
-import org.joml.Matrix4f;
import java.util.Objects;
import java.util.function.BiConsumer;
@@ -86,12 +85,11 @@ public class ConfigOptionValueWidget {
setText.accept(option.getEntry().getOption(access.get(option)));
- Matrix4f[] matrix = {new Matrix4f()};
Label label = Widgets.createLabel(new Point(), text[0]).rightAligned()
.color(0xFFE0E0E0)
.hoveredColor(0xFFE0E0E0)
.onRender((poses, l) -> {
- if (MatrixUtils.transform(matrix[0], l.getBounds()).contains(PointHelper.ofMouse())) {
+ if (MatrixUtils.transform(poses.pose().last().pose(), l.getBounds()).contains(PointHelper.ofMouse())) {
l.setMessage(text[0].copy().withStyle(ChatFormatting.UNDERLINE));
} else {
l.setMessage(text[0]);
@@ -99,9 +97,9 @@ public class ConfigOptionValueWidget {
});
if (option.getEntry() instanceof OptionValueEntry.Selection<T> selection) {
- applySelection(access, option, selection, label, setText, matrix);
+ applySelection(access, option, selection, label, setText);
} else if (access.get(option) instanceof ModifierKeyCode) {
- applyKeycode(access, option, label, setText, matrix);
+ applyKeycode(access, option, label, setText);
} else if (option.getEntry() instanceof OptionValueEntry.Configure<T>) {
label.clickable().onClick($ -> {
((OptionValueEntry.Configure<T>) option.getEntry()).configure(access, option, () -> {
@@ -113,13 +111,18 @@ public class ConfigOptionValueWidget {
return Widgets.concatWithBounds(() -> new Rectangle(-label.getBounds().width, 0, label.getBounds().width + 8, 14),
label,
- Widgets.createDrawableWidget((graphics, mouseX, mouseY, delta) -> matrix[0] = graphics.pose().last().pose()),
Widgets.withTranslate(Widgets.createTexturedWidget(ResourceLocation.parse("roughlyenoughitems:textures/gui/config/selector.png"),
new Rectangle(1, 1, 4, 6), 0, 0, 1, 1, 1, 1), 0, 0.5, 0)
);
}
- private static <T> void applySelection(ConfigAccess access, CompositeOption<T> option, OptionValueEntry.Selection<T> selection, Label label, Consumer<Component> setText, Matrix4f[] matrix) {
+ private static <T> void applySelection(ConfigAccess access, CompositeOption<T> option, OptionValueEntry.Selection<T> selection, Label label, Consumer<Component> setText) {
+ Rectangle bounds = new Rectangle();
+ BiConsumer<GuiGraphics, Label> render = label.getOnRender();
+ label.onRender((poses, $) -> {
+ render.accept(poses, $);
+ bounds.setBounds(MatrixUtils.transform(poses.pose().last().pose(), label.getBounds()));
+ });
int noOfOptions = selection.getOptions().size();
if (noOfOptions == 2) {
label.clickable().onClick($ -> {
@@ -128,7 +131,7 @@ public class ConfigOptionValueWidget {
});
} else if (noOfOptions >= 2) {
label.clickable().onClick($ -> {
- Menu menu = new Menu(MatrixUtils.transform(matrix[0], label.getBounds()), CollectionUtils.map(selection.getOptions(), opt -> {
+ Menu menu = new Menu(bounds, CollectionUtils.map(selection.getOptions(), opt -> {
Component selectionOption = selection.getOption(opt);
if (opt.equals(access.getDefault(option))) {
selectionOption = translatable("config.rei.value.default", selectionOption);
@@ -146,7 +149,7 @@ public class ConfigOptionValueWidget {
}
}
- private static <T> void applyKeycode(ConfigAccess access, CompositeOption<T> option, Label label, Consumer<Component> setText, Matrix4f[] matrix) {
+ private static <T> void applyKeycode(ConfigAccess access, CompositeOption<T> option, Label label, Consumer<Component> setText) {
label.clickable().onClick($ -> {
access.closeMenu();
access.focusKeycode((CompositeOption<ModifierKeyCode>) option);
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/config/components/ConfigOptionWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/config/components/ConfigOptionWidget.java
index efb37f455..015dc1c75 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/config/components/ConfigOptionWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/config/components/ConfigOptionWidget.java
@@ -31,7 +31,6 @@ import me.shedaniel.rei.api.client.gui.widgets.Label;
import me.shedaniel.rei.api.client.gui.widgets.Widget;
import me.shedaniel.rei.api.client.gui.widgets.WidgetWithBounds;
import me.shedaniel.rei.api.client.gui.widgets.Widgets;
-import me.shedaniel.rei.api.client.util.MatrixUtils;
import me.shedaniel.rei.impl.client.gui.config.ConfigAccess;
import me.shedaniel.rei.impl.client.gui.config.options.AllREIConfigOptions;
import me.shedaniel.rei.impl.client.gui.config.options.CompositeOption;
@@ -127,7 +126,7 @@ public class ConfigOptionWidget {
this.previewLabel.render(graphics, mouseX, mouseY, delta);
if (this.preview != null && this.previewHeight.value() > 0.1f) {
- Rectangle rectangle = MatrixUtils.transform(graphics.pose().last().pose(), new Rectangle(0, 24 + 12 * split.size() - (nextLinePreview ? 0 : 12), width, this.previewHeight.value()));
+ Rectangle rectangle = new Rectangle(0, 24 + 12 * split.size() - (nextLinePreview ? 0 : 12), width, this.previewHeight.value());
graphics.enableScissor(rectangle.x, rectangle.y, rectangle.getMaxX(), rectangle.getMaxY());
this.previewTranslation = new Matrix4f().translate(0, 12 + 12 * split.size(), 100);
this.preview.render(graphics, mouseX, mouseY, delta);
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/config/options/AllREIConfigGroups.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/config/options/AllREIConfigGroups.java
index 474132b8e..bdb5a8168 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/config/options/AllREIConfigGroups.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/config/options/AllREIConfigGroups.java
@@ -50,7 +50,7 @@ public interface AllREIConfigGroups {
.add(FOCUS_SEARCH_KEYBIND)
.add(COPY_RECIPE_ID_KEYBIND)
.add(FAVORITE_KEYBIND)
- .add(EXPORT_IMAGE_KEYBIND)
+ /*.add(EXPORT_IMAGE_KEYBIND)*/
.add(BACK_KEYBIND);
OptionGroup INPUT_ADVANCED = make("input.advanced")
.add(USE_NATIVE_KEYBINDS);
@@ -112,7 +112,7 @@ public interface AllREIConfigGroups {
.add(GIVE_COMMAND);
OptionGroup PERFORMANCE_RENDERING = make("performance.rendering")
.add(BATCHED_RENDERING)
- .add(CACHED_RENDERING);
+ /*.add(CACHED_RENDERING)*/;
OptionGroup PERFORMANCE_RELOAD = make("performance.reload")
.add(RELOAD_THREAD)
.add(CACHED_DISPLAY_LOOKUP);
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/error/ErrorsEntryListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/error/ErrorsEntryListWidget.java
index 476ac4994..e7228efa6 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/error/ErrorsEntryListWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/error/ErrorsEntryListWidget.java
@@ -38,7 +38,6 @@ import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.texture.DynamicTexture;
import net.minecraft.client.resources.sounds.SimpleSoundInstance;
-import net.minecraft.network.chat.ClickEvent;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.HoverEvent;
import net.minecraft.network.chat.Style;
@@ -316,8 +315,7 @@ public class ErrorsEntryListWidget extends DynamicSmoothScrollingEntryListWidget
if (style != null && screen != null) {
if (style.getHoverEvent() != null) {
HoverEvent hoverEvent = style.getHoverEvent();
- Component component = hoverEvent.getValue(HoverEvent.Action.SHOW_TEXT);
- if (component != null) {
+ if (hoverEvent instanceof HoverEvent.ShowText(Component component)) {
graphics.renderTooltip(Minecraft.getInstance().font, Minecraft.getInstance().font.split(component, Math.max(this.width / 2, 200)), x, y);
}
}
@@ -334,14 +332,7 @@ public class ErrorsEntryListWidget extends DynamicSmoothScrollingEntryListWidget
if (button == 0) {
Style style = this.getTextAt(mouseX, mouseY);
if (style != null && style.getClickEvent() != null) {
- ClickEvent clickEvent = style.getClickEvent();
- Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F));
- try {
- Util.getPlatform().openUri(new URI(clickEvent.getValue()));
- return true;
- } catch (URISyntaxException e) {
- e.printStackTrace();
- }
+ Minecraft.getInstance().screen.handleComponentCl