mirror of
https://github.com/RoBaertschi/EnvironmentTech.git
synced 2025-04-19 23:03:28 +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) {
|
public void renderTooltip(GuiGraphics guiGraphics, int mouseX, int mouseY, int leftPos, int topPos, Font font) {
|
||||||
if (isMouseAboveArea(mouseX, mouseY, x, y)) {
|
if (isMouseAboveArea(mouseX, mouseY, x, y)) {
|
||||||
guiGraphics.renderTooltip(font, getTooltips(), Optional.empty(), mouseX - leftPos, mouseY - topPos);
|
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;
|
import robaertschi.environmenttech.menu.EnvCollectorMenu;
|
||||||
|
|
||||||
public class EnvCollectorScreen extends AbstractContainerScreen<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;
|
private EnvStorageRenderer storageRenderer;
|
||||||
|
|
||||||
public EnvCollectorScreen(EnvCollectorMenu pMenu, Inventory pPlayerInventory, Component pTitle) {
|
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;
|
this.data = data;
|
||||||
addSlot(new SlotItemHandler(blockEntity.getInputInventory(), 0, 54, 34));
|
addSlot(new SlotItemHandler(blockEntity.getInputInventory(), 0, 54, 34));
|
||||||
addSlot(new SlotItemHandler(blockEntity.getOutputInventory(), 0, 116, 35));
|
addSlot(new SlotItemHandler(blockEntity.getOutputInventory(), 0, 116, 35));
|
||||||
|
|
||||||
|
|
||||||
layoutPlayerInventorySlots(player.getInventory(), 8, 84);
|
layoutPlayerInventorySlots(player.getInventory(), 8, 84);
|
||||||
|
|
||||||
|
|
||||||
addDataSlots(data);
|
addDataSlots(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user