aboutsummaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2025-04-10 15:35:26 +0800
committershedaniel <daniel@shedaniel.me>2025-04-10 19:14:00 +0800
commitade79d9a271916885c758632c01d4f7195803a2c (patch)
tree1a2662a2b529f682a4efa138c2ee12808e6b979f /runtime
parent9d3bb3cfc7d0c494b33e5d914487a404f2f9d02e (diff)
downloadRoughlyEnoughItems-ade79d9a271916885c758632c01d4f7195803a2c.tar.gz
RoughlyEnoughItems-ade79d9a271916885c758632c01d4f7195803a2c.tar.bz2
RoughlyEnoughItems-ade79d9a271916885c758632c01d4f7195803a2c.zip
Update to 1.21.5
Diffstat (limited to 'runtime')
-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/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.java8
-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/DisplayHistoryManager.java10
-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
28 files changed, 101 insertions, 151 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/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.handleComponentClicked(style);
return true;
}
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/collapsible/selection/CustomCollapsibleEntrySelectionScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/collapsible/selection/CustomCollapsibleEntrySelectionScreen.java
index 3bccba8d2..127fe6bf5 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/collapsible/selection/CustomCollapsibleEntrySelectionScreen.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/collapsible/selection/CustomCollapsibleEntrySelectionScreen.java
@@ -25,7 +25,6 @@ package me.shedaniel.rei.impl.client.gui.screen.collapsible.selection;
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;
@@ -467,9 +466,7 @@ public class CustomCollapsibleEntrySelectionScreen extends Screen {
if (isSelected()) {
boolean filtered = isFiltered();
Rectangle bounds = getBounds();
- RenderSystem.disableDepthTest();
graphics.fillGradient(bounds.x, bounds.y, bounds.getMaxX(), bounds.getMaxY(), filtered ? 0x70ffffff : 0x55ffffff, filtered ? 0x70ffffff : 0x55ffffff);
- RenderSystem.enableDepthTest();
}
}
@@ -489,9 +486,7 @@ public class CustomCollapsibleEntrySelectionScreen 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(), 0xff873e23, 0xff873e23);
- RenderSystem.enableDepthTest();
}
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/generic/OptionEntriesScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/generic/OptionEntriesScreen.java
index b771b9e83..c849fe801 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/generic/OptionEntriesScreen.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/generic/OptionEntriesScreen.java
@@ -293,7 +293,6 @@ public abstract class OptionEntriesScreen extends Screen {
@Override
public void render(GuiGraphics graphics, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isHovered, float delta) {
- RenderSystem.setShaderTexture(0, CONFIG_TEX);
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
this.widget.rectangle.x = x + 3;
this.widget.rectangle.y = y;
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CachedEntryListRender.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CachedEntryListRender.java
index 78d3c19ba..b61e9e7a8 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CachedEntryListRender.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CachedEntryListRender.java
@@ -23,10 +23,11 @@
package me.shedaniel.rei.impl.client.gui.widget;
-import com.mojang.blaze3d.ProjectionType;
+/*import com.mojang.blaze3d.ProjectionType;
import com.mojang.blaze3d.pipeline.TextureTarget;
import com.mojang.blaze3d.platform.Lighting;
import com.mojang.blaze3d.platform.NativeImage;
+import com.mojang.blaze3d.systems.RenderPass;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.DefaultVertexFormat;
import com.mojang.blaze3d.vertex.VertexFormat;
@@ -45,6 +46,7 @@ import me.shedaniel.rei.impl.common.InternalLogger;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.renderer.CoreShaders;
+import net.minecraft.client.renderer.RenderPipelines;
import net.minecraft.client.renderer.RenderStateShard;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.texture.DynamicTexture;
@@ -57,16 +59,17 @@ import org.joml.Matrix4f;
import org.joml.Matrix4fStack;
import java.util.List;
+import java.util.OptionalDouble;
+import java.util.OptionalInt;
public class CachedEntryListRender {
public static final int RESOLUTION = 64;
public static DynamicTexture cachedTexture;
public static ResourceLocation cachedTextureLocation;
public static Long2LongMap hash = new Long2LongOpenHashMap();
- public static LazyResettable<RenderType> renderType = new LazyResettable<>(() -> RenderType.create("rei_cache", DefaultVertexFormat.POSITION_TEX, VertexFormat.Mode.QUADS, 256,
+ public static LazyResettable<RenderType> renderType = new LazyResettable<>(() -> RenderType.create("rei_cache", RenderType.TRANSIENT_BUFFER_SIZE, RenderPipelines.GUI_TEXTURED, VertexFormat.Mode.QUADS, 256,
RenderType.CompositeState.builder()
.setTextureState(new RenderStateShard.TextureStateShard(cachedTextureLocation, TriState.DEFAULT, false))
- .setShaderState(new RenderStateShard.ShaderStateShard(CoreShaders.POSITION_TEX))
.createCompositeState(false)));
public static class Sprite {
@@ -146,9 +149,7 @@ public class CachedEntryListRender {
hash = new Long2LongOpenHashMap(list.size() + 10);
Minecraft minecraft = Minecraft.getInstance();
- TextureTarget target = new TextureTarget(width, height, true);
- target.setClearColor(0, 0, 0, 0);
- target.bindWrite(true);
+ TextureTarget target = new TextureTarget(null, width, height, true);
Matrix4f projectionMatrix = new Matrix4f().setOrtho(0.0F, width, height, 0.0F, 1000.0F, 3000.0F);
RenderSystem.setProjectionMatrix(projectionMatrix, ProjectionType.ORTHOGRAPHIC);
Matrix4fStack modelViewStack = RenderSystem.getModelViewStack();
@@ -190,4 +191,25 @@ public class CachedEntryListRender {
private static long pack(int x, int y) {
return ((long) x << 32) | (y & 0xFFFFFFFFL);
}
+}*/
+
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.resources.ResourceLocation;
+
+import java.util.function.Supplier;
+
+public class CachedEntryListRender {
+ public static final ResourceLocation cachedTextureLocation = null;
+ public static final Supplier<RenderType> renderType = null;
+
+ public static Sprite get(Object o) {
+ return null;
+ }
+
+ public static class Sprite {
+ public float u0;
+ public float u1;
+ public float v0;
+ public float v1;
+ }
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java
index 01dd2649d..3e37d497d 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java
@@ -71,7 +71,7 @@ public class ConfigButtonWidget {
if (!ClientHelper.getInstance().isCheating() || Minecraft.getInstance().screen instanceof DisplayScreen) {
button.removeTint();
} else if (!ClientHelperImpl.getInstance().hasOperatorPermission()) {
- if (Minecraft.getInstance().gameMode.hasInfiniteItems()) {
+ if (Minecraft.getInstance().player.hasInfiniteMaterials()) {
button.setTint(0x2aff0000);
} else {
button.setTint(0x58fcf003);
@@ -107,7 +107,7 @@ public class ConfigButtonWidget {
if (!ClientHelper.getInstance().isCheating())
return Component.translatable("text.rei.cheating_disabled");
else if (!ClientHelperImpl.getInstance().hasOperatorPermission()) {
- if (Minecraft.getInstance().gameMode.hasInfiniteItems())
+ if (Minecraft.getInstance().player.hasInfiniteMaterials())
return Component.translatable("text.rei.cheating_limited_creative_enabled");
else return Component.translatable("text.rei.cheating_enabled_no_perms");
} else if (ClientHelperImpl.getInstance().hasPermissionToUsePackets())
@@ -162,11 +162,11 @@ public class ConfigButtonWidget {
config::isEntryListWidgetScrolled,
config::setEntryListWidgetScrolled
),
- new SeparatorMenuEntry(),
+ /*new SeparatorMenuEntry(),
ToggleMenuEntry.of(Component.translatable("text.rei.config.menu.display.caching_entry_rendering"),
config::doesCacheEntryRendering,
config::setDoesCacheEntryRendering
- ),
+ ),*/
new SeparatorMenuEntry(),
ToggleMenuEntry.of(Component.translatable("text.rei.config.menu.display.syntax_highlighting"),
() -> config.getSyntaxHighlightingMode() == SyntaxHighlightingMode.COLORFUL || config.getSyntaxHighlightingMode() == SyntaxHighlightingMode.COLORFUL_UNDERSCORED,
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DynamicErrorFreeEntryListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DynamicErrorFreeEntryListWidget.java
index f77faa518..b5f076059 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DynamicErrorFreeEntryListWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DynamicErrorFreeEntryListWidget.java
@@ -25,7 +25,8 @@ package me.shedaniel.rei.impl.client.gui.widget;
import com.google.common.collect.Lists;
import com.mojang.blaze3d.systems.RenderSystem;
-import com.mojang.blaze3d.vertex.*;
+import com.mojang.blaze3d.vertex.Tesselator;
+import com.mojang.blaze3d.vertex.VertexConsumer;
import me.shedaniel.rei.api.client.gui.AbstractContainerEventHandler;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@@ -257,27 +258,14 @@ public abstract class DynamicErrorFreeEntryListWidget<E extends DynamicErrorFree
if (this.renderSelection)
this.renderHeader(graphics, rowLeft, startY);
this.renderList(graphics, rowLeft, startY, mouseX, mouseY, delta);
- RenderSystem.disableDepthTest();
this.renderHoleBackground(graphics, 0, this.top, 255, 255);
this.renderHoleBackground(graphics, this.bottom, this.height, 255, 255);
- RenderSystem.enableBlend();
- RenderSystem.blendFuncSeparate(770, 771, 0, 1);
- Matrix4f matrix = graphics.pose().last().pose();
- BufferBuilder buffer = Tesselator.getInstance().begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR);
- buffer.addVertex(matrix, this.left, this.top + 4, 0.0F).setUv(0, 1).setColor(0, 0, 0, 0);
- buffer.addVertex(matrix, this.right, this.top + 4, 0.0F).setUv(1, 1).setColor(0, 0, 0, 0);
- buffer.addVertex(matrix, this.right, this.top, 0.0F).setUv(1, 0).setColor(0, 0, 0, 255);
- buffer.addVertex(matrix, this.left, this.top, 0.0F).setUv(0, 0).setColor(0, 0, 0, 255);
- buffer.addVertex(matrix, this.left, this.bottom, 0.0F).setUv(0, 1).setColor(0, 0, 0, 255);
- buffer.addVertex(matrix, this.right, this.bottom, 0.0F).setUv(1, 1).setColor(0, 0, 0, 255);
- buffer.addVertex(matrix, this.right, this.bottom - 4, 0.0F).setUv(1, 0).setColor(0, 0, 0, 0);
- buffer.addVertex(matrix, this.left, this.bottom - 4, 0.0F).setUv(0, 0).setColor(0, 0, 0, 0);
- BufferUploader.drawWithShader(buffer.buildOrThrow());
+ RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
+ graphics.blit(RenderType::guiTextured, Screen.HEADER_SEPARATOR, this.left, this.top - 2, 0.0F, 0.0F, this.width, 2, 32, 2);
+ graphics.blit(RenderType::guiTextured, Screen.FOOTER_SEPARATOR, this.left, this.bottom, 0.0F, 0.0F, this.width, 2, 32, 2);
int maxScroll = this.getMaxScroll();
- renderScrollBar(graphics, maxScroll, scrollbarPosition, int_4);
-
+ this.renderScrollBar(graphics, maxScroll, scrollbarPosition, int_4);
this.renderDecorations(graphics, mouseX, mouseY);
- RenderSystem.disableBlend();
}
protected void renderScrollBar(GuiGraphics graphics, int maxScroll, int scrollbarPositionMinX, int scrollbarPositionMaxX) {
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryHighlighter.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryHighlighter.java
index be711e98c..255630fef 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryHighlighter.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryHighlighter.java
@@ -23,7 +23,6 @@
package me.shedaniel.rei.impl.client.gui.widget;
-import com.mojang.blaze3d.systems.RenderSystem;
import me.shedaniel.math.Color;
import me.shedaniel.rei.api.common.util.EntryStacks;
import me.shedaniel.rei.impl.client.config.ConfigManagerImpl;
@@ -41,8 +40,6 @@ public class EntryHighlighter {
int dimColor = Color.ofRGBA(20 / 255F, 20 / 255F, 20 / 255F, dimOpacity).getColor();
int borderColor = Color.ofRGBA(0x5f / 255F, 0xff / 255F, 0x3b / 255F, opacity).getColor();
int color = Color.ofRGBA(0x5f / 255F, 0xff / 255F, 0x3b / 255F, opacity * 0x34 / 255F).getColor();
- RenderSystem.disableDepthTest();
- RenderSystem.colorMask(true, true, true, false);
if (Minecraft.getInstance().screen instanceof AbstractContainerScreen<?> containerScreen) {
int x = containerScreen.leftPos, y = containerScreen.topPos;
for (Slot slot : containerScreen.getMenu().slots) {
@@ -62,7 +59,5 @@ public class EntryHighlighter {
}
}
}
- RenderSystem.colorMask(true, true, true, true);
- RenderSystem.enableDepthTest();
}
}
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 3bb78a272..7aae3ef19 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
@@ -25,7 +25,6 @@ package me.shedaniel.rei.impl.client.gui.widget;
import com.google.common.base.Suppliers;
import com.mojang.blaze3d.platform.InputConstants;
-import com.mojang.blaze3d.systems.RenderSystem;
import me.shedaniel.clothconfig2.api.ModifierKeyCode;
import me.shedaniel.clothconfig2.api.animator.NumberAnimator;
import me.shedaniel.clothconfig2.api.animator.ValueAnimator;
@@ -422,9 +421,6 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget {
protected void drawBackground(GuiGraphics graphics, int mouseX, int mouseY, float delta) {
if (background) {
darkBackgroundAlpha.update(delta);
- RenderSystem.enableBlend();
- RenderSystem.blendFuncSeparate(770, 771, 1, 0);
- RenderSystem.blendFunc(770, 771);
graphics.blit(RenderType::guiTextured, InternalTextures.CHEST_GUI_TEXTURE, bounds.x, bounds.y, 0, 222, bounds.width, bounds.height, 256, 256);
if (darkBackgroundAlpha.value() > 0.0F) {
graphics.blit(RenderType::guiTextured, InternalTextures.CHEST_GUI_TEXTURE_DARK, bounds.x, bounds.y, 0, 222, bounds.width, bounds.height, 256, 256, ARGB.white(darkBackgroundAlpha.value()));
@@ -535,14 +531,10 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget {
protected void drawHighlighted(GuiGraphics graphics, int mouseX, int mouseY, float delta) {
darkHighlightedAlpha.update(delta);
- RenderSystem.disableDepthTest();
- RenderSystem.colorMask(true, true, true, false);
Rectangle bounds = getInnerBounds();
graphics.fillGradient(bounds.x, bounds.y, bounds.getMaxX(), bounds.getMaxY(), 0x80ffffff, 0x80ffffff);
int darkColor = 0x111111 | ((int) (90 * darkHighlightedAlpha.value()) << 24);
graphics.fillGradient(bounds.x, bounds.y, bounds.getMaxX(), bounds.getMaxY(), darkColor, darkColor);
- RenderSystem.colorMask(true, true, true, true);
- RenderSystem.enableDepthTest();
}
@Override
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/HoleWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/HoleWidget.java
index db4dda035..109646a1c 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/HoleWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/HoleWidget.java
@@ -23,7 +23,6 @@
package me.shedaniel.rei.impl.client.gui.widget;
-import com.mojang.blaze3d.systems.RenderSystem;
import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.client.gui.widgets.Widget;
import me.shedaniel.rei.api.client.gui.widgets.Widgets;
@@ -44,18 +43,14 @@ public class HoleWidget {
public static Widget createMenuBackground(Rectangle bounds) {
return Widgets.withBounds(Widgets.createDrawableWidget((graphics, mouseX, mouseY, delta) -> {
- RenderSystem.enableBlend();
graphics.blit(RenderType::guiTextured, ResourceLocation.withDefaultNamespace("textures/gui/menu_list_background.png"), bounds.x, bounds.y, bounds.getMaxX(), bounds.getMaxY(), bounds.width, bounds.height, 32, 32);
- RenderSystem.disableBlend();
}), bounds);
}
public static Widget createListBorders(Rectangle bounds) {
return Widgets.withBounds(Widgets.createDrawableWidget((graphics, mouseX, mouseY, delta) -> {
- RenderSystem.enableBlend();
graphics.blit(RenderType::guiTextured, CreateWorldScreen.HEADER_SEPARATOR, bounds.x, bounds.y - 2, 0.0F, 0.0F, bounds.width, 2, 32, 2);
graphics.blit(RenderType::guiTextured, CreateWorldScreen.FOOTER_SEPARATOR, bounds.x, bounds.getMaxY(), 0.0F, 0.0F, bounds.width, 2, 32, 2);
- RenderSystem.disableBlend();
}), bounds);
}
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/ArrowWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/ArrowWidget.java
index 931692321..0b6678d3a 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/ArrowWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/ArrowWidget.java
@@ -23,7 +23,6 @@
package me.shedaniel.rei.impl.client.gui.widget.basewidgets;
-import com.mojang.blaze3d.systems.RenderSystem;
import me.shedaniel.clothconfig2.api.animator.NumberAnimator;
import me.shedaniel.clothconfig2.api.animator.ValueAnimator;
import me.shedaniel.math.Rectangle;
@@ -83,19 +82,14 @@ public final class ArrowWidget extends Arrow {
}
public void renderBackground(GuiGraphics graphics, boolean dark, float alpha) {
- RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, alpha);
- RenderSystem.enableBlend();
- RenderSystem.blendFuncSeparate(770, 771, 1, 0);
- RenderSystem.blendFunc(770, 771);
ResourceLocation texture = REIRuntime.getInstance().getDefaultDisplayTexture(dark);
if (getAnimationDuration() > 0) {
int width = Mth.ceil((System.currentTimeMillis() / (animationDuration / 24) % 24d));
- graphics.blit(RenderType::guiTextured, texture, getX() + width, getY(), 106 + width, 91, 24 - width, 17, 256, 256);
- graphics.blit(RenderType::guiTextured, texture, getX(), getY(), 82, 91, width, 17, 256, 256);
+ graphics.blit(RenderType::guiTextured, texture, getX() + width, getY(), 106 + width, 91, 24 - width, 17, 256, 256, 0xFFFFFF | (int) (alpha * 255) << 24);
+ graphics.blit(RenderType::guiTextured, texture, getX(), getY(), 82, 91, width, 17, 256, 256, 0xFFFFFF | (int) (alpha * 255) << 24);
} else {
- graphics.blit(RenderType::guiTextured, texture, getX(), getY(), 106, 91, 24, 17, 256, 256);
+ graphics.blit(RenderType::guiTextured, texture, getX(), getY(), 106, 91, 24, 17, 256, 256, 0xFFFFFF | (int) (alpha * 255) << 24);
}
- RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
}
@Override
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/BurningFireWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/BurningFireWidget.java
index 0b0f1cfe6..e43927d85 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/BurningFireWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/BurningFireWidget.java
@@ -23,7 +23,6 @@
package me.shedaniel.rei.impl.client.gui.widget.basewidgets;
-import com.mojang.blaze3d.systems.RenderSystem;
import me.shedaniel.clothconfig2.api.animator.NumberAnimator;
import me.shedaniel.clothconfig2.api.animator.ValueAnimator;
import me.shedaniel.math.Rectangle;
@@ -77,19 +76,14 @@ public final class BurningFireWidget extends BurningFire {
}
public void renderBackground(GuiGraphics graphics, boolean dark, float alpha) {
- RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, alpha);
- RenderSystem.enableBlend();
- RenderSystem.blendFuncSeparate(770, 771, 1, 0);
- RenderSystem.blendFunc(770, 771);
ResourceLocation texture = REIRuntime.getInstance().getDefaultDisplayTexture(dark);
if (getAnimationDuration() > 0) {
int height = 14 - Mth.ceil((System.currentTimeMillis() / (animationDuration / 14) % 14d));
- graphics.blit(RenderType::guiTextured, texture, getX(), getY(), 1, 74, 14, 14 - height, 256, 256);
- graphics.blit(RenderType::guiTextured, texture, getX(), getY() + 14 - height, 82, 77 + (14 - height), 14, height, 256, 256);
+ graphics.blit(RenderType::guiTextured, texture, getX(), getY(), 1, 74, 14, 14 - height, 256, 256, 0xFFFFFF | (int) (alpha * 255) << 24);
+ graphics.blit(RenderType::guiTextured, texture, getX(), getY() + 14 - height, 82, 77 + (14 - height), 14, height, 256, 256, 0xFFFFFF | (int) (alpha * 255) << 24);
} else {
- graphics.blit(RenderType::guiTextured, texture, getX(), getY(), 1, 74, 14, 14, 256, 256);
+ graphics.blit(RenderType::guiTextured, texture, getX(), getY(), 1, 74, 14, 14, 256, 256, 0xFFFFFF | (int) (alpha * 255) << 24);
}
- RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
}
@Override
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryManager.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryManager.java
index 5bf96d84a..6f77570f3 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryManager.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryManager.java
@@ -90,17 +90,17 @@ public class DisplayHistoryManager {
entries.clear();
displayToEntries.clear();
for (CompoundTag tag : displayHistory) {
- String uuid = tag.getString("DisplayHistoryUUID");
+ String uuid = tag.getString("DisplayHistoryUUID").orElseThrow();
DisplayEntry entry = copy.get(uuid);
if (entry != null) {
entries.put(entry.getUuid().toString(), entry);
displayToEntries.put(entry.getDisplay(), entry);
- } else if (tag.getBoolean("DisplayHistoryContains")) {
+ } else if (tag.getBooleanOr("DisplayHistoryContains", false)) {
try {
- CategoryIdentifier<?> categoryIdentifier = CategoryIdentifier.of(tag.getString("DisplayHistoryCategory"));
+ CategoryIdentifier<?> categoryIdentifier = CategoryIdentifier.of(tag.getString("DisplayHistoryCategory").orElseThrow());
if (CategoryRegistry.getInstance().tryGet(categoryIdentifier).isPresent()) {
- DataResult<Display> result = Display.codec().parse(BasicDisplay.registryAccess().createSerializationContext(NbtOps.INSTANCE), tag.getCompound("DisplayHistoryData"));
+ DataResult<Display> result = Display.codec().parse(BasicDisplay.registryAccess().createSerializationContext(NbtOps.INSTANCE), tag.getCompound("DisplayHistoryData").orElseThrow());
Display display = result.getOrThrow();
DisplayEntry newEntry = new DisplayEntry(parent, display, null);
newEntry.setUuid(UUID.fromString(uuid));
@@ -161,7 +161,7 @@ public class DisplayHistoryManager {
private void save() {
List<CompoundTag> displayHistory = ConfigManagerImpl.getInstance().getConfig().getDisplayHistory();
for (CompoundTag compoundTag : displayHistory) {
- String uuid = compoundTag.getString("DisplayHistoryUUID");
+ String uuid = compoundTag.getString("DisplayHistoryUUID").orElseThrow();
DisplayEntry entry = entries.get(uuid);
if (entry != null) {
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java
index 214933201..5758109fe 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java
@@ -25,7 +25,6 @@ package me.shedaniel.rei.impl.client.gui.widget.search;
import com.google.common.collect.Lists;
import com.mojang.blaze3d.platform.InputConstants;
-import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.datafixers.util.Pair;
import me.shedaniel.clothconfig2.api.animator.NumberAnimator;
import me.shedaniel.clothconfig2.api.animator.ValueAnimator;
@@ -146,9 +145,7 @@ public class OverlaySearchField extends TextFieldWidget implements TextFieldWidg
public void laterRender(GuiGraphics graphics, int mouseX, int mouseY, float delta) {
progress.update(delta);
- RenderSystem.disableDepthTest();
if (isMain) drawHint(graphics, mouseX, mouseY);
- RenderSystem.enableDepthTest();
}
private void drawHint(GuiGraphics graphics, int mouseX, int mouseY) {
@@ -357,9 +354,7 @@ public class OverlaySearchField extends TextFieldWidget implements TextFieldWidg
@Override
public void render(GuiGraphics graphics, int mouseX, int mouseY, float delta) {
- RenderSystem.disableDepthTest();
setSuggestion(!isFocused() && getText().isEmpty() ? I18n.get("text.rei.search.field.suggestion") : null);
super.render(graphics, mouseX, mouseY, delta);
- RenderSystem.enableDepthTest();
}
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/SlotAccessorRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/SlotAccessorRegistryImpl.java
index 49cfc196f..b9311595b 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/SlotAccessorRegistryImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/SlotAccessorRegistryImpl.java
@@ -95,7 +95,7 @@ public class SlotAccessorRegistryImpl implements SlotAccessorRegistry {
@Override
public SlotAccessor read(AbstractContainerMenu menu, Player player, CompoundTag tag) {
- String id = tag.getString("id");
+ String id = tag.getString("id").orElseThrow();
Serializer serializer = map.get(ResourceLocation.parse(id));
if (serializer == null) {
throw new NullPointerException("No serializer found for " + id);
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java
index 963f6833b..74e2f7870 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java
@@ -24,7 +24,6 @@
package me.shedaniel.rei.plugin.client.entry;
import com.google.common.collect.Lists;
-import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.platform.Lighting;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.serialization.Codec;
@@ -55,7 +54,6 @@ import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.item.ItemStackRenderState;
import net.minecraft.client.renderer.texture.OverlayTexture;
-import net.minecraft.client.renderer.texture.TextureAtlas;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.core.component.DataComponentPatch;
import net.minecraft.core.component.DataComponents;
@@ -253,7 +251,7 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer
public ItemStackRenderState getExtraData(EntryStack<ItemStack> entry) {
Minecraft minecraft = Minecraft.getInstance();
ItemStackRenderState renderState = new ItemStackRenderState();
- minecraft.getItemModelResolver().updateForTopItem(renderState, entry.getValue(), ItemDisplayContext.GUI, false, minecraft.level, minecraft.player, 0);
+ minecraft.getItemModelResolver().updateForTopItem(renderState, entry.getValue(), ItemDisplayContext.GUI, minecraft.level, minecraft.player, 0);
return renderState;
}
@@ -298,10 +296,6 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer
}
public void setupGL(EntryStack<ItemStack> entry, ItemStackRenderState renderState) {
- Minecraft.getInstance().getTextureManager().getTexture(TextureAtlas.LOCATION_BLOCKS).setFilter(false, false);
- RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_BLOCKS);
- RenderSystem.enableBlend();
- RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
boolean sideLit = renderState.usesBlockLight();
if (!sideLit) Lighting.setupForFlatItems();
@@ -350,7 +344,6 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer
}
public void endGL(EntryStack<ItemStack> entry, ItemStackRenderState renderState) {
- RenderSystem.enableDepthTest();
boolean sideLit = renderState.usesBlockLight();
if (!sideLit) Lighting.setupFor3DItems();
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java
index fa300a5ba..a066e7afa 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java
@@ -200,7 +200,7 @@ public class DefaultClientRuntimePlugin implements REIClientPlugin {
@Override
public DataResult<EntryStackFavoriteEntry> read(CompoundTag object) {
try {
- return EntryStack.codec().parse(BasicDisplay.registryAccess().createSerializationContext(NbtOps.INSTANCE), object.getCompound(key))
+ return EntryStack.codec().parse(BasicDisplay.registryAccess().createSerializationContext(NbtOps.INSTANCE), object.getCompound(key).orElseThrow())
.map(EntryStackFavoriteEntry::new)
.setLifecycle(Lifecycle.stable());
} catch (Throwable throwable) {
@@ -286,10 +286,10 @@ public class DefaultClientRuntimePlugin implements REIClientPlugin {
public DataResult<DisplayFavoriteEntry> read(CompoundTag object) {
try {
if (object.contains("Data")) {
- DataResult<Display> result = Display.codec().parse(BasicDisplay.registryAccess().createSerializationContext(NbtOps.INSTANCE), object.getCompound("Data"));
- return DataResult.success(new DisplayFavoriteEntry(result.getOrThrow(), UUID.fromString(object.getString("UUID"))), Lifecycle.stable());
+ DataResult<Display> result = Display.codec().parse(BasicDisplay.registryAccess().createSerializationContext(NbtOps.INSTANCE), object.getCompound("Data").orElseThrow());
+ return DataResult.success(new DisplayFavoriteEntry(result.getOrThrow(), UUID.fromString(object.getString("UUID").orElseThrow())), Lifecycle.stable());
} else {
- return DataResult.success(new DisplayFavoriteEntry(null, UUID.fromString(object.getString("UUID"))), Lifecycle.stable());
+ return DataResult.success(new DisplayFavoriteEntry(null, UUID.fromString(object.getString("UUID").orElseThrow())), Lifecycle.stable());
}
} catch (Throwable throwable) {
return DataResult.error(throwable::getMessage);
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/DefaultRuntimePlugin.java b/runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/DefaultRuntimePlugin.java
index 4db2bf66b..562e24d6b 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/DefaultRuntimePlugin.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/DefaultRuntimePlugin.java
@@ -71,7 +71,7 @@ public class DefaultRuntimePlugin implements REICommonPlugin {
new SlotAccessorRegistry.Serializer() {
@Override
public SlotAccessor read(AbstractContainerMenu menu, Player player, CompoundTag tag) {
- int slot = tag.getInt("Slot");
+ int slot = tag.getInt("Slot").orElseThrow();
return new VanillaSlotAccessor(menu.slots.get(slot));
}
@@ -91,7 +91,7 @@ public class DefaultRuntimePlugin implements REICommonPlugin {
new SlotAccessorRegistry.Serializer() {
@Override
public SlotAccessor read(AbstractContainerMenu menu, Player player, CompoundTag tag) {
- int slot = tag.getInt("Slot");
+ int slot = tag.getInt("Slot").orElseThrow();
return new PlayerInventorySlotAccessor(player, slot);
}