diff options
| author | shedaniel <daniel@shedaniel.me> | 2020-04-30 01:08:07 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2020-04-30 02:27:38 +0800 |
| commit | be7b641955a197d55251c3cbd4a314476cf94fb3 (patch) | |
| tree | 1747230438e2daa7d8debd2f661a69ba11f4ea23 /src/main | |
| parent | 43614d50fe2d965246b8ee4522f0ece646031ae9 (diff) | |
| download | RoughlyEnoughItems-be7b641955a197d55251c3cbd4a314476cf94fb3.tar.gz RoughlyEnoughItems-be7b641955a197d55251c3cbd4a314476cf94fb3.tar.bz2 RoughlyEnoughItems-be7b641955a197d55251c3cbd4a314476cf94fb3.zip | |
Update to 20w18a and add recipe exporter
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'src/main')
52 files changed, 313 insertions, 534 deletions
diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java index bce41cdf1..2898983b7 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java @@ -65,7 +65,7 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer { ServerSidePacketRegistry.INSTANCE.register(DELETE_ITEMS_PACKET, (packetContext, packetByteBuf) -> { ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer(); if (player.getServer().getPermissionLevel(player.getGameProfile()) < player.getServer().getOpPermissionLevel()) { - player.sendMessage(new TranslatableText("text.rei.no_permission_cheat").method_27692(Formatting.RED), false); + player.sendMessage(new TranslatableText("text.rei.no_permission_cheat").formatted(Formatting.RED), false); return; } if (!player.inventory.getCursorStack().isEmpty()) @@ -74,7 +74,7 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer { ServerSidePacketRegistry.INSTANCE.register(CREATE_ITEMS_PACKET, (packetContext, packetByteBuf) -> { ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer(); if (player.getServer().getPermissionLevel(player.getGameProfile()) < player.getServer().getOpPermissionLevel()) { - player.sendMessage(new TranslatableText("text.rei.no_permission_cheat").method_27692(Formatting.RED), false); + player.sendMessage(new TranslatableText("text.rei.no_permission_cheat").formatted(Formatting.RED), false); return; } ItemStack stack = packetByteBuf.readItemStack(); @@ -118,9 +118,9 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer { ServerSidePacketRegistry.INSTANCE.sendToPlayer(player, NOT_ENOUGH_ITEMS_PACKET, buf); } } catch (IllegalStateException e) { - player.sendSystemMessage(new TranslatableText(e.getMessage()).method_27692(Formatting.RED)); + player.sendSystemMessage(new TranslatableText(e.getMessage()).formatted(Formatting.RED)); } catch (Exception e) { - player.sendSystemMessage(new TranslatableText("error.rei.internal.error", e.getMessage()).method_27692(Formatting.RED)); + player.sendSystemMessage(new TranslatableText("error.rei.internal.error", e.getMessage()).formatted(Formatting.RED)); e.printStackTrace(); } } catch (Exception e) { diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index 9ae7775d8..3d742bfbb 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -34,9 +34,9 @@ import me.shedaniel.rei.api.widgets.Button; import me.shedaniel.rei.api.widgets.Tooltip; import me.shedaniel.rei.api.widgets.Widgets; import me.shedaniel.rei.gui.config.SearchFieldLocation; -import me.shedaniel.rei.gui.modules.GameModeMenuEntry; -import me.shedaniel.rei.gui.modules.WeatherMenuEntry; -import me.shedaniel.rei.gui.subsets.SubsetsMenu; +import me.shedaniel.rei.gui.modules.entries.GameModeMenuEntry; +import me.shedaniel.rei.gui.modules.entries.WeatherMenuEntry; +import me.shedaniel.rei.gui.modules.Menu; import me.shedaniel.rei.gui.widget.*; import me.shedaniel.rei.impl.ClientHelperImpl; import me.shedaniel.rei.impl.InternalWidgets; @@ -126,17 +126,17 @@ public class ContainerScreenOverlay extends WidgetWithBounds { private Rectangle subsetsButtonBounds; @ApiStatus.Experimental @Nullable - private SubsetsMenu subsetsMenu = null; + private Menu subsetsMenu = null; private Widget wrappedSubsetsMenu = null; @Nullable - private SubsetsMenu weatherMenu = null; + private Menu weatherMenu = null; private Widget wrappedWeatherMenu = null; private boolean renderWeatherMenu = false; private Button weatherButton = null; @Nullable - private SubsetsMenu gameModeMenu = null; + private Menu gameModeMenu = null; private Widget wrappedGameModeMenu = null; private boolean renderGameModeMenu = false; private Button gameModeButton = null; @@ -152,7 +152,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds { @ApiStatus.Experimental @Nullable - public SubsetsMenu getSubsetsMenu() { + public Menu getSubsetsMenu() { return subsetsMenu; } @@ -273,7 +273,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds { renderGameModeMenu = !renderWeatherMenu && (button.isFocused() || button.containsMouse(PointHelper.ofMouse()) || (wrappedGameModeMenu != null && wrappedGameModeMenu.containsMouse(PointHelper.ofMouse()))); if (tmpRender != renderGameModeMenu) { if (renderGameModeMenu) { - this.gameModeMenu = new SubsetsMenu(new Point(button.getBounds().x, button.getBounds().getMaxY()), + this.gameModeMenu = new Menu(new Point(button.getBounds().x, button.getBounds().getMaxY()), CollectionUtils.filterAndMap(Arrays.asList(GameMode.values()), mode -> mode != GameMode.NOT_SET, GameModeMenuEntry::new)); if (ConfigObject.getInstance().isLeftHandSidePanel()) this.gameModeMenu.menuStartPoint.x -= this.gameModeMenu.getBounds().width - this.gameModeButton.getBounds().width; @@ -294,7 +294,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds { renderWeatherMenu = !renderGameModeMenu && (button.isFocused() || button.containsMouse(PointHelper.ofMouse()) || (wrappedWeatherMenu != null && wrappedWeatherMenu.containsMouse(PointHelper.ofMouse()))); if (tmpRender != renderWeatherMenu) { if (renderWeatherMenu) { - this.weatherMenu = new SubsetsMenu(new Point(button.getBounds().x, button.getBounds().getMaxY()), + this.weatherMenu = new Menu(new Point(button.getBounds().x, button.getBounds().getMaxY()), CollectionUtils.map(Weather.values(), WeatherMenuEntry::new)); if (ConfigObject.getInstance().isLeftHandSidePanel()) this.weatherMenu.menuStartPoint.x -= this.weatherMenu.getBounds().width - this.weatherButton.getBounds().width; @@ -319,7 +319,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds { widgets.add(InternalWidgets.wrapLateRenderable(InternalWidgets.wrapTranslate(Widgets.createButton(subsetsButtonBounds, ((ClientHelperImpl) ClientHelper.getInstance()).isAprilFools.get() ? new TranslatableText("text.rei.tiny_potato") : new TranslatableText("text.rei.subsets")) .onClick(button -> { if (subsetsMenu == null) { - wrappedSubsetsMenu = InternalWidgets.wrapTranslate(InternalWidgets.wrapLateRenderable(this.subsetsMenu = SubsetsMenu.createFromRegistry(new Point(this.subsetsButtonBounds.x, this.subsetsButtonBounds.getMaxY()))), 0, 0, 400); + wrappedSubsetsMenu = InternalWidgets.wrapTranslate(InternalWidgets.wrapLateRenderable(this.subsetsMenu = Menu.createSubsetsMenuFromRegistry(new Point(this.subsetsButtonBounds.x, this.subsetsButtonBounds.getMaxY()))), 0, 0, 400); this.widgets.add(this.wrappedSubsetsMenu); } else { this.widgets.remove(this.wrappedSubsetsMenu); @@ -560,7 +560,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds { public void renderTooltip(MatrixStack matrices, List<Text> lines, int mouseX, int mouseY) { if (lines.isEmpty()) return; - tooltipWidth = lines.stream().map(font::method_27525).max(Integer::compareTo).get(); + tooltipWidth = lines.stream().map(font::getWidth).max(Integer::compareTo).get(); tooltipHeight = lines.size() <= 1 ? 8 : lines.size() * 10; tooltipLines = lines; ScreenHelper.drawHoveringWidget(matrices, mouseX, mouseY, renderTooltipCallback, tooltipWidth, tooltipHeight, 0); diff --git a/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java b/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java index d5d9174cd..2f186c138 100644 --- a/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java +++ b/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java @@ -84,9 +84,9 @@ public class OverlaySearchField extends TextFieldWidget { @Override protected void renderSuggestion(MatrixStack matrices, int x, int y) { if (containsMouse(PointHelper.ofMouse()) || isFocused()) - this.font.drawWithShadow(matrices, this.font.method_27523(this.getSuggestion(), this.getWidth()), x, y, REIHelper.getInstance().isDarkThemeEnabled() ? 0xccddaa3d : 0xddeaeaea); + this.font.drawWithShadow(matrices, this.font.trimToWidth(this.getSuggestion(), this.getWidth()), x, y, REIHelper.getInstance().isDarkThemeEnabled() ? 0xccddaa3d : 0xddeaeaea); else - this.font.drawWithShadow(matrices, this.font.method_27523(this.getSuggestion(), this.getWidth()), x, y, -6250336); + this.font.drawWithShadow(matrices, this.font.trimToWidth(this.getSuggestion(), this.getWidth()), x, y, -6250336); } @Override diff --git a/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java index 0fd4f6a0c..bdf3bf4e2 100644 --- a/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java @@ -127,7 +127,7 @@ public class PreRecipeViewingScreen extends Screen { this.method_27534(matrices, this.textRenderer, this.title, this.width / 2, 20, 16777215); if (showTips) { int i = 30; - for (Text s : this.textRenderer.wrapStringToWidthAsList(new TranslatableText("text.rei.recipe_screen_type.selection.sub").method_27692(Formatting.GRAY), width - 30)) { + for (Text s : this.textRenderer.wrapLines(new TranslatableText("text.rei.recipe_screen_type.selection.sub").formatted(Formatting.GRAY), width - 30)) { this.method_27534(matrices, this.textRenderer, s, width / 2, i, -1); i += 10; } diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeDisplayExporter.java b/src/main/java/me/shedaniel/rei/gui/RecipeDisplayExporter.java index 20c48d5f6..b42bd6601 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeDisplayExporter.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeDisplayExporter.java @@ -23,26 +23,20 @@ package me.shedaniel.rei.gui; -import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; import me.shedaniel.math.Rectangle; +import me.shedaniel.rei.gui.toast.ExportRecipeIdentifierToast; import me.shedaniel.rei.gui.widget.Widget; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gl.Framebuffer; import net.minecraft.client.gui.Element; import net.minecraft.client.render.DiffuseLighting; -import net.minecraft.client.render.OverlayTexture; -import net.minecraft.client.render.VertexConsumerProvider; -import net.minecraft.client.render.model.BakedModel; -import net.minecraft.client.render.model.json.ModelTransformation; +import net.minecraft.client.resource.language.I18n; import net.minecraft.client.texture.NativeImage; -import net.minecraft.client.texture.SpriteAtlasTexture; +import net.minecraft.client.util.Window; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.resource.ResourceImpl; import org.jetbrains.annotations.ApiStatus; -import org.lwjgl.opengl.GL11; import java.io.File; import java.io.IOException; @@ -59,6 +53,7 @@ public final class RecipeDisplayExporter extends Widget { public static void exportRecipeDisplay(Rectangle rectangle, List<Widget> widgets) { INSTANCE.exportRecipe(rectangle, widgets); + ExportRecipeIdentifierToast.addToast(I18n.translate("msg.rei.exported_recipe"), I18n.translate("msg.rei.exported_recipe.desc")); } private static File getExportFilename(File directory) { @@ -66,7 +61,7 @@ public final class RecipeDisplayExporter extends Widget { int i = 1; while (true) { - File file = new File(directory, "REI_" + string + (i == 1 ? "" : "_" + i) + ".png"); + File file = new File(directory, string + (i == 1 ? "" : "_" + i) + ".png"); if (!file.exists()) { return file; } @@ -77,134 +72,48 @@ public final class RecipeDisplayExporter extends Widget { @SuppressWarnings("deprecation") private void exportRecipe(Rectangle rectangle, List<Widget> widgets) { - MatrixStack matrices = new MatrixStack(); - Framebuffer framebuffer = new Framebuffer(rectangle.width * 8, rectangle.height * 8, true, MinecraftClient.IS_SYSTEM_MAC); - framebuffer.setClearColor(0, 0, 0, 0); - // int color = REIHelper.getInstance().isDarkThemeEnabled() ? -13750738 : -3750202; - // framebuffer.setClearColor(((color >> 16) & 0xFF) / 255f, ((color >> 8) & 0xFF) / 255f, (color & 0xFF) / 255f, ((color >> 24) & 0xFF) / 255f); - framebuffer.clear(MinecraftClient.IS_SYSTEM_MAC); RenderSystem.pushMatrix(); - // RenderSystem.clear(16640, MinecraftClient.IS_SYSTEM_MAC); + MinecraftClient client = MinecraftClient.getInstance(); + Window window = client.getWindow(); + Framebuffer framebuffer = new Framebuffer(window.getFramebufferWidth(), window.getFramebufferHeight(), false, false); framebuffer.beginWrite(true); - - // Fresh matrices - // RenderSystem.clear(256, MinecraftClient.IS_SYSTEM_MAC); - RenderSystem.matrixMode(GL11.GL_PROJECTION); - RenderSystem.pushMatrix(); + RenderSystem.viewport(0, 0, window.getFramebufferWidth(), window.getFramebufferHeight()); + RenderSystem.clear(256, MinecraftClient.IS_SYSTEM_MAC); + RenderSystem.matrixMode(5889); RenderSystem.loadIdentity(); - // RenderSystem.ortho(0.0D, rectangle.width * 8, rectangle.height * 8, 0.0D, -1, 1); - // RenderSystem.scalef(1, -1,0); - // RenderSystem.ortho(-1, 1, 1, -1, -1, 1); - // RenderSystem.ortho(-1, 1, 1, -1, -1, 1); - RenderSystem.matrixMode(GL11.GL_MODELVIEW); - RenderSystem.pushMatrix(); + RenderSystem.ortho(0.0D, (double) window.getFramebufferWidth() / window.getScaleFactor(), (double) window.getFramebufferHeight() / window.getScaleFactor(), 0.0D, 1000.0D, 3000.0D); + RenderSystem.matrixMode(5888); RenderSystem.loadIdentity(); - // RenderSystem.translatef(0.0F, 0.0F, -2000.0F); - // RenderSystem.rotatef(180, 1, 0, 0); - RenderSystem.scalef(2f / rectangle.width, -2f / rectangle.height, 0); - // RenderSystem.scalef(1f / rectangle.width, -1f / rectangle.height, 0); - // RenderSystem.translatef(10,10,0); - RenderSystem.translatef(-rectangle.x, -rectangle.y, 0); - // RenderSystem.translatef(rectangle.x, rectangle.y, 0); - RenderSystem.translatef(-rectangle.width / 2f, -rectangle.height / 2f, 0); - - // RenderSystem.enableAlphaTest(); - // RenderSystem.alphaFunc(516, 0.1F); - // RenderSystem.enableBlend(); - // RenderSystem.blendFuncSeparate(GlStateManager.SrcFactor.ONE_MINUS_DST_ALPHA, GlStateManager.DstFactor.DST_ALPHA, GlStateManager.SrcFactor.ONE, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA); - RenderSystem.enableAlphaTest(); - RenderSystem.defaultAlphaFunc(); - RenderSystem.enableBlend(); - RenderSystem.enableDepthTest(); - RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA); - RenderSystem.depthMask(false); - RenderSystem.disableCull(); - RenderSystem.pushLightingAttributes(); + RenderSystem.translatef(0.0F, 0.0F, -2000.0F); + DiffuseLighting.enableGuiDepthLighting(); + MatrixStack matrices = new MatrixStack(); for (Widget widget : widgets) { - widget.render(matrices, -1, -1, minecraft.getTickDelta()); - } - { - ItemStack stack = new ItemStack(Items.OAK_STAIRS); - final BakedModel model = minecraft.getItemRenderer().getHeldItemModel(stack, minecraft.world, minecraft.player); - minecraft.getTextureManager().bindTexture(SpriteAtlasTexture.BLOCK_ATLAS_TEX); - minecraft.getTextureManager().getTexture(SpriteAtlasTexture.BLOCK_ATLAS_TEX).setFilter(false, false); - - RenderSystem.enableRescaleNormal(); - RenderSystem.enableAlphaTest(); - RenderSystem.defaultAlphaFunc(); - RenderSystem.enableBlend(); - RenderSystem.enableDepthTest(); - RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA); - - RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); - matrices.push(); - - matrices.translate(rectangle.x + 8, rectangle.y + 8, 0); - matrices.scale(16, -16, 1F); - - boolean disableGuiLight = !model.isSideLit(); - if (disableGuiLight) { - DiffuseLighting.disableGuiDepthLighting(); - } - - VertexConsumerProvider.Immediate immediate = MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers(); - minecraft.getItemRenderer().renderItem(stack, ModelTransformation.Mode.GUI, false, matrices, immediate, 15728880, OverlayTexture.DEFAULT_UV, model); - immediate.draw(); - matrices.pop(); - - RenderSystem.enableDepthTest(); - - if (disableGuiLight) { - DiffuseLighting.enableGuiDepthLighting(); - } - - RenderSystem.disableAlphaTest(); - RenderSystem.disableRescaleNormal(); + widget.render(matrices, -1, -1, 0); } - // fillGradient(0, 0, 10, 10, -1, -1); - // fillGradient(rectangle.x, rectangle.y, rectangle.x + 10, rectangle.y + 10, -16777216, -16777216); - RenderSystem.depthMask(true); - RenderSystem.disableAlphaTest(); - RenderSystem.disableRescaleNormal(); - RenderSystem.disableDepthTest(); - // RenderSystem.disableAlphaTest(); - // RenderSystem.disableBlend(); - - // Reset matrices - RenderSystem.matrixMode(GL11.GL_PROJECTION); RenderSystem.popMatrix(); - RenderSystem.matrixMode(GL11.GL_MODELVIEW); - RenderSystem.popMatrix(); - - framebuffer.endWrite(); - RenderSystem.popMatrix(); - RenderSystem.viewport(0, 0, minecraft.getWindow().getFramebufferWidth(), minecraft.getWindow().getFramebufferHeight()); - NativeImage nativeImage = new NativeImage(rectangle.width * 8, rectangle.height * 8, false); + NativeImage nativeImage = new NativeImage(framebuffer.textureWidth, framebuffer.textureHeight, false); RenderSystem.bindTexture(framebuffer.colorAttachment); nativeImage.loadFromTextureImage(0, false); - { - int width = rectangle.width * 8; - int height = rectangle.height * 8; - for (int y = 0; y < height; ++y) { - for (int x = 0; x < width; ++x) { - if (x > 24 && x < width - 24 && y > 24 && y < height - 24) - nativeImage.setPixelRgba(x, y, nativeImage.getPixelRgba(x, y) | 255 << NativeImage.Format.RGBA.getAlphaChannelOffset()); - } + nativeImage.mirrorVertically(); + int outWidth = (int) (rectangle.width * window.getScaleFactor()); + int outHeight = (int) (rectangle.height * window.getScaleFactor()); + NativeImage strippedImage = new NativeImage(outWidth, outHeight, false); + for (int y = 0; y < outHeight; ++y) { + for (int x = 0; x < outWidth; ++x) { + strippedImage.setPixelRgba(x, y, nativeImage.g |
