mirror of
https://github.com/AlmostReliable/almostunified.git
synced 2024-11-24 16:48:00 -05:00
port 1.18 changes
- JEI indicator placement rework - format portuguese translation
This commit is contained in:
parent
ab8049fab8
commit
a46d274165
5 changed files with 68 additions and 32 deletions
|
@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
|
|||
The format is based on [Keep a Changelog],
|
||||
and this project adheres to [Semantic Versioning].
|
||||
|
||||
## Unreleased
|
||||
|
||||
### Changed
|
||||
- improved the placement for the recipe indicator icon in JEI
|
||||
|
||||
### Fixed
|
||||
- misaligned tooltips in JEI
|
||||
|
||||
## [0.2.2] - 2022-11-01
|
||||
|
||||
### Added
|
||||
|
|
|
@ -3,10 +3,15 @@ package com.almostreliable.unified.compat;
|
|||
import com.almostreliable.unified.BuildConfig;
|
||||
import com.almostreliable.unified.config.Config;
|
||||
import com.almostreliable.unified.config.UnifyConfig;
|
||||
import com.almostreliable.unified.recipe.CRTLookup;
|
||||
import com.almostreliable.unified.utils.Utils;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import mezz.jei.api.IModPlugin;
|
||||
import mezz.jei.api.JeiPlugin;
|
||||
import mezz.jei.api.constants.VanillaTypes;
|
||||
import mezz.jei.api.recipe.category.IRecipeCategory;
|
||||
import mezz.jei.api.runtime.IJeiRuntime;
|
||||
import net.minecraft.client.renderer.Rect2i;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
||||
|
@ -32,4 +37,19 @@ public class AlmostJEI implements IModPlugin {
|
|||
jei.getIngredientManager().removeIngredientsAtRuntime(VanillaTypes.ITEM_STACK, items);
|
||||
}
|
||||
}
|
||||
|
||||
public static <R> void handleIndicator(PoseStack stack, int mX, int mY, int posX, int posY, IRecipeCategory<R> recipeCategory, R recipe) {
|
||||
var recipeId = recipeCategory.getRegistryName(recipe);
|
||||
if (recipeId == null) return;
|
||||
|
||||
var link = CRTLookup.getLink(recipeId);
|
||||
if (link == null) return;
|
||||
|
||||
var area = new Rect2i(posX, posY, RecipeIndicator.RENDER_SIZE, RecipeIndicator.RENDER_SIZE);
|
||||
RecipeIndicator.renderIndicator(stack, area);
|
||||
if (mX >= area.getX() && mX <= area.getX() + area.getWidth() &&
|
||||
mY >= area.getY() && mY <= area.getY() + area.getHeight()) {
|
||||
Utils.renderTooltip(stack, mX, mY, RecipeIndicator.constructTooltip(link));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,12 +15,13 @@ import java.util.List;
|
|||
|
||||
public final class RecipeIndicator {
|
||||
|
||||
public static final int SIZE = 16;
|
||||
public static final int RENDER_SIZE = 10;
|
||||
private static final int TEXTURE_SIZE = 16;
|
||||
private static final ResourceLocation TEXTURE = Utils.getRL("textures/ingot.png");
|
||||
|
||||
private RecipeIndicator() {}
|
||||
|
||||
public static List<Component> constructTooltip(ClientRecipeLink link) {
|
||||
static List<Component> constructTooltip(ClientRecipeLink link) {
|
||||
var unified = Component.translatable(Utils.prefix("unified")).append(": ")
|
||||
.withStyle(c -> c.withColor(ChatFormatting.AQUA));
|
||||
unified.append(Component.translatable(Utils.prefix(link.isUnified() ? "yes" : "no"))
|
||||
|
@ -41,14 +42,14 @@ public final class RecipeIndicator {
|
|||
);
|
||||
}
|
||||
|
||||
public static void renderIndicator(PoseStack poseStack, Rect2i area) {
|
||||
static void renderIndicator(PoseStack poseStack, Rect2i area) {
|
||||
poseStack.pushPose();
|
||||
poseStack.translate(area.getX(), area.getY(), 0);
|
||||
var scale = area.getWidth() / (float) SIZE;
|
||||
var scale = area.getWidth() / (float) TEXTURE_SIZE;
|
||||
poseStack.scale(scale, scale, scale);
|
||||
RenderSystem.setShader(GameRenderer::getPositionTexShader);
|
||||
RenderSystem.setShaderTexture(0, TEXTURE);
|
||||
GuiComponent.blit(poseStack, 0, 0, 0, 0, SIZE, SIZE, SIZE, SIZE);
|
||||
GuiComponent.blit(poseStack, 0, 0, 0, 0, TEXTURE_SIZE, TEXTURE_SIZE, TEXTURE_SIZE, TEXTURE_SIZE);
|
||||
poseStack.popPose();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,46 +1,54 @@
|
|||
package com.almostreliable.unified.mixin;
|
||||
|
||||
import com.almostreliable.unified.compat.AlmostJEI;
|
||||
import com.almostreliable.unified.compat.RecipeIndicator;
|
||||
import com.almostreliable.unified.recipe.CRTLookup;
|
||||
import com.almostreliable.unified.utils.Utils;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import mezz.jei.api.gui.drawable.IDrawable;
|
||||
import mezz.jei.api.recipe.category.IRecipeCategory;
|
||||
import mezz.jei.common.gui.recipes.layout.RecipeLayout;
|
||||
import net.minecraft.client.renderer.Rect2i;
|
||||
import mezz.jei.common.gui.recipes.layout.RecipeTransferButton;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@Mixin(RecipeLayout.class)
|
||||
public abstract class JeiRecipeLayoutMixin<R> {
|
||||
|
||||
@Shadow(remap = false) @Final
|
||||
private static int RECIPE_BORDER_PADDING;
|
||||
@Shadow(remap = false) @Final
|
||||
private IRecipeCategory<R> recipeCategory;
|
||||
@Shadow(remap = false) @Final
|
||||
private R recipe;
|
||||
@Shadow(remap = false) @Final
|
||||
@Nullable private RecipeTransferButton recipeTransferButton;
|
||||
|
||||
@Unique
|
||||
private boolean handled;
|
||||
|
||||
@Inject(method = "drawRecipe", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;pushPose()V", ordinal = 1), locals = LocalCapture.CAPTURE_FAILHARD)
|
||||
private void unified$drawRecipe(PoseStack stack, int mouseX, int mouseY, CallbackInfo ci, IDrawable background, int mX, int mY, IDrawable categoryBackground, int x, int y) {
|
||||
var recipeId = recipeCategory.getRegistryName(recipe);
|
||||
if (recipeId == null) return;
|
||||
private void unified$drawCornerIndicator(PoseStack stack, int mouseX, int mouseY, CallbackInfo ci, IDrawable background, int mX, int mY, IDrawable categoryBackground, int x, int y) {
|
||||
if (recipeTransferButton != null && recipeTransferButton.visible) return;
|
||||
var posX = x - RecipeIndicator.RENDER_SIZE;
|
||||
var posY = y - RecipeIndicator.RENDER_SIZE;
|
||||
AlmostJEI.handleIndicator(stack, mX, mY, posX, posY, recipeCategory, recipe);
|
||||
handled = true;
|
||||
}
|
||||
|
||||
var link = CRTLookup.getLink(recipeId);
|
||||
if (link == null) return;
|
||||
|
||||
var posX = x - RecipeIndicator.SIZE / 2 - RECIPE_BORDER_PADDING + 1;
|
||||
var posY = y - RecipeIndicator.SIZE / 2 - RECIPE_BORDER_PADDING + 1;
|
||||
var area = new Rect2i(posX, posY, 10, 10);
|
||||
RecipeIndicator.renderIndicator(stack, area);
|
||||
if (mX >= area.getX() && mX <= area.getX() + area.getWidth() &&
|
||||
mY >= area.getY() && mY <= area.getY() + area.getHeight()) {
|
||||
Utils.renderTooltip(stack, mX, mY, RecipeIndicator.constructTooltip(link));
|
||||
@Inject(method = "drawRecipe", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getInstance()Lnet/minecraft/client/Minecraft;"))
|
||||
private void unified$drawButtonIndicator(PoseStack stack, int mouseX, int mouseY, CallbackInfo ci) {
|
||||
assert recipeTransferButton != null;
|
||||
if (handled) {
|
||||
handled = false;
|
||||
return;
|
||||
}
|
||||
var posX = recipeTransferButton.x + (RecipeTransferButton.RECIPE_BUTTON_SIZE - RecipeIndicator.RENDER_SIZE) / 2;
|
||||
var posY = recipeTransferButton.y - RecipeIndicator.RENDER_SIZE - 2;
|
||||
AlmostJEI.handleIndicator(stack, mouseX, mouseY, posX, posY, recipeCategory, recipe);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
{
|
||||
"almostunified.description": "Modificado por Almost Unified!",
|
||||
"almostunified.warning": "Não informe a receita ao autor original.",
|
||||
"almostunified.unified": "Unificado",
|
||||
"almostunified.duplicate": "Tinha duplicatas",
|
||||
"almostunified.yes": "Sim",
|
||||
"almostunified.no": "Não"
|
||||
}
|
||||
|
||||
{
|
||||
"almostunified.description": "Modificado por Almost Unified!",
|
||||
"almostunified.warning": "Não informe a receita ao autor original.",
|
||||
"almostunified.unified": "Unificado",
|
||||
"almostunified.duplicate": "Tinha duplicatas",
|
||||
"almostunified.yes": "Sim",
|
||||
"almostunified.no": "Não"
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue