mirror of
https://github.com/RoBaertschi/EnvironmentTech.git
synced 2025-04-19 06:53:29 +00:00
JEI compat
This commit is contained in:
parent
3899edad0b
commit
eac35f1db2
@ -65,6 +65,16 @@ public class EnvStorageRenderer {
|
||||
|
||||
}
|
||||
|
||||
// Context less alternative method
|
||||
public static void render(GuiGraphics guiGraphics, long envStored, long maxEnv, int x, int y, int width, int height) {
|
||||
int stored = (int)(height * (envStored / (float)maxEnv));
|
||||
|
||||
new ContentBoxRenderer(x, y, width, height).render(guiGraphics);
|
||||
|
||||
guiGraphics.fillGradient(x, y + (height - stored), x + width, y + height,
|
||||
from, to);
|
||||
}
|
||||
|
||||
public void renderTooltip(GuiGraphics guiGraphics, int mouseX, int mouseY, int leftPos, int topPos, Font font) {
|
||||
if (isMouseAboveArea(mouseX, mouseY, x, y)) {
|
||||
guiGraphics.renderTooltip(font, getTooltips(), Optional.empty(), mouseX - leftPos, mouseY - topPos);
|
||||
|
@ -11,7 +11,7 @@ import robaertschi.environmenttech.client.renderer.EnvStorageRenderer;
|
||||
import robaertschi.environmenttech.menu.EnvCollectorMenu;
|
||||
|
||||
public class EnvCollectorScreen extends AbstractContainerScreen<EnvCollectorMenu> {
|
||||
private final ResourceLocation GUI = EnvironmentTech.id("textures/gui/container/env_collector.png");
|
||||
public static final ResourceLocation GUI = EnvironmentTech.id("textures/gui/container/env_collector.png");
|
||||
private EnvStorageRenderer storageRenderer;
|
||||
|
||||
public EnvCollectorScreen(EnvCollectorMenu pMenu, Inventory pPlayerInventory, Component pTitle) {
|
||||
|
@ -0,0 +1,92 @@
|
||||
package robaertschi.environmenttech.compat.jei;
|
||||
|
||||
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
|
||||
import mezz.jei.api.gui.drawable.IDrawable;
|
||||
import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
|
||||
import mezz.jei.api.helpers.IGuiHelper;
|
||||
import mezz.jei.api.recipe.IFocusGroup;
|
||||
import mezz.jei.api.recipe.RecipeIngredientRole;
|
||||
import mezz.jei.api.recipe.RecipeType;
|
||||
import mezz.jei.api.recipe.category.IRecipeCategory;
|
||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.RecipeHolder;
|
||||
import robaertschi.environmenttech.client.renderer.EnvStorageRenderer;
|
||||
import robaertschi.environmenttech.client.screen.EnvCollectorScreen;
|
||||
import robaertschi.environmenttech.data.recipes.ETRecipes;
|
||||
import robaertschi.environmenttech.data.recipes.EnvCollectorRecipe;
|
||||
import robaertschi.environmenttech.level.block.ETBlocks;
|
||||
import robaertschi.environmenttech.utils.MouseUtils;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@MethodsReturnNonnullByDefault
|
||||
@ParametersAreNonnullByDefault
|
||||
public class EnvCollectorRecipeCategory implements IRecipeCategory<RecipeHolder<EnvCollectorRecipe>> {
|
||||
private final IDrawable background;
|
||||
private final IDrawable icon;
|
||||
|
||||
public static final RecipeType<RecipeHolder<EnvCollectorRecipe>> ENV_COLLECTOR = RecipeType.createFromVanilla(ETRecipes.ENV_COLLECTOR_RECIPE_TYPE.get());
|
||||
|
||||
public EnvCollectorRecipeCategory(IGuiHelper guiHelper) {
|
||||
background = guiHelper.createDrawable(EnvCollectorScreen.GUI, 48, 18, 110, 50);
|
||||
icon = guiHelper.createDrawableItemStack(new ItemStack(ETBlocks.ENV_COLLECTOR_BLOCK));
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecipeType<RecipeHolder<EnvCollectorRecipe>> getRecipeType() {
|
||||
return ENV_COLLECTOR;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Component getTitle() {
|
||||
return Component.translatable("screen.environmenttech.env_collector");
|
||||
}
|
||||
|
||||
@Override
|
||||
public IDrawable getBackground() {
|
||||
return background;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IDrawable getIcon() {
|
||||
return icon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRecipe(IRecipeLayoutBuilder builder, RecipeHolder<EnvCollectorRecipe> recipeHolder, IFocusGroup focuses) {
|
||||
//54, 34))
|
||||
// 116, 35
|
||||
EnvCollectorRecipe recipe = recipeHolder.value();
|
||||
|
||||
builder.addSlot(RecipeIngredientRole.INPUT, 6, 16).addIngredients(recipe.input());
|
||||
|
||||
builder.addSlot(RecipeIngredientRole.OUTPUT, 68, 17).addItemStack(recipe.output());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(RecipeHolder<EnvCollectorRecipe> recipe, IRecipeSlotsView recipeSlotsView, GuiGraphics guiGraphics, double mouseX, double mouseY) {
|
||||
|
||||
EnvStorageRenderer.render(guiGraphics, recipe.value().envUsed(), 64, getWidth() - 10, 2, 8, 45);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Component> getTooltipStrings(RecipeHolder<EnvCollectorRecipe> recipe, IRecipeSlotsView recipeSlotsView, double mouseX, double mouseY) {
|
||||
List<Component> components = new ArrayList<>();
|
||||
|
||||
int x = getWidth() - 10;
|
||||
if (MouseUtils.isMouseOver(Mth.floor(mouseX), Mth.floor(mouseY), x, 2, 8, 45)) {
|
||||
components.add(Component.literal(recipe.value().envUsed() + " / " + 64 + " ENV"));
|
||||
}
|
||||
|
||||
return components;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,58 @@
|
||||
package robaertschi.environmenttech.compat.jei;
|
||||
|
||||
import mezz.jei.api.IModPlugin;
|
||||
import mezz.jei.api.JeiPlugin;
|
||||
import mezz.jei.api.registration.IRecipeCatalystRegistration;
|
||||
import mezz.jei.api.registration.IRecipeCategoryRegistration;
|
||||
import mezz.jei.api.registration.IRecipeRegistration;
|
||||
import mezz.jei.api.registration.IRecipeTransferRegistration;
|
||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.entity.player.Inventory;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import robaertschi.environmenttech.EnvironmentTech;
|
||||
import robaertschi.environmenttech.data.recipes.ETRecipes;
|
||||
import robaertschi.environmenttech.level.block.ETBlocks;
|
||||
import robaertschi.environmenttech.level.block.entity.EnvCollectorBlockEntity;
|
||||
import robaertschi.environmenttech.menu.ETMenus;
|
||||
import robaertschi.environmenttech.menu.EnvCollectorMenu;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
||||
@JeiPlugin
|
||||
@ParametersAreNonnullByDefault
|
||||
@MethodsReturnNonnullByDefault
|
||||
public class JeiCompatPlugin implements IModPlugin {
|
||||
@Override
|
||||
public @NotNull ResourceLocation getPluginUid() {
|
||||
return EnvironmentTech.id("jei_default");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerCategories(IRecipeCategoryRegistration registration) {
|
||||
registration.addRecipeCategories(new EnvCollectorRecipeCategory(registration.getJeiHelpers().getGuiHelper()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerRecipes(IRecipeRegistration registration) {
|
||||
|
||||
assert Minecraft.getInstance().level != null;
|
||||
registration.addRecipes(EnvCollectorRecipeCategory.ENV_COLLECTOR, Minecraft.getInstance().level.getRecipeManager().getAllRecipesFor(ETRecipes.ENV_COLLECTOR_RECIPE_TYPE.get()).stream().toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) {
|
||||
registration.addRecipeCatalyst(new ItemStack(ETBlocks.ENV_COLLECTOR_BLOCK), EnvCollectorRecipeCategory.ENV_COLLECTOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerRecipeTransferHandlers(IRecipeTransferRegistration registration) {
|
||||
registration.addRecipeTransferHandler(EnvCollectorMenu.class, ETMenus.ENV_COLLECTOR_MENU.get(), EnvCollectorRecipeCategory.ENV_COLLECTOR,
|
||||
EnvCollectorBlockEntity.SLOT_INPUT,
|
||||
EnvCollectorBlockEntity.SLOT_INPUT_COUNT,
|
||||
EnvCollectorBlockEntity.SLOT_COUNT,
|
||||
Inventory.INVENTORY_SIZE);
|
||||
}
|
||||
}
|
@ -32,8 +32,11 @@ public class EnvCollectorMenu extends AbstractContainerMenu {
|
||||
this.data = data;
|
||||
addSlot(new SlotItemHandler(blockEntity.getInputInventory(), 0, 54, 34));
|
||||
addSlot(new SlotItemHandler(blockEntity.getOutputInventory(), 0, 116, 35));
|
||||
|
||||
|
||||
layoutPlayerInventorySlots(player.getInventory(), 8, 84);
|
||||
|
||||
|
||||
addDataSlots(data);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user