Skip to content

Commit

Permalink
make the whole screen client side
Browse files Browse the repository at this point in the history
  • Loading branch information
eerussianguy committed Oct 13, 2024
1 parent 0c7df61 commit 7cb5cb1
Show file tree
Hide file tree
Showing 7 changed files with 63 additions and 54 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.eerussianguy.beneath.client;

import com.eerussianguy.beneath.client.screen.LostPageScreen;
import net.minecraft.client.Minecraft;
import net.minecraft.world.item.ItemStack;

public final class BeneathClientUtil
{
public static void openLostPageScreen(ItemStack stack)
{
Minecraft.getInstance().setScreen(new LostPageScreen(stack));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import com.eerussianguy.beneath.client.render.HellforgeBlockEntityRenderer;
import com.eerussianguy.beneath.client.screen.HellforgeScreen;
import com.eerussianguy.beneath.client.screen.JuicerScreen;
import com.eerussianguy.beneath.client.screen.LostPageScreen;
import com.eerussianguy.beneath.common.blockentities.BeneathBlockEntities;
import com.eerussianguy.beneath.common.blocks.BeneathBlocks;
import com.eerussianguy.beneath.common.blocks.Stem;
Expand Down Expand Up @@ -65,7 +64,6 @@ private static void setup(FMLClientSetupEvent event)

MenuScreens.register(BeneathContainerTypes.HELLFORGE_CONTAINER.get(), HellforgeScreen::new);
MenuScreens.register(BeneathContainerTypes.JUICER_CONTAINER.get(), JuicerScreen::new);
MenuScreens.register(BeneathContainerTypes.LOST_PAGE_CONTAINER.get(), LostPageScreen::new);

for (Stem stem : Stem.VALUES)
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,33 +1,41 @@
package com.eerussianguy.beneath.client.screen;

import com.eerussianguy.beneath.Beneath;
import com.eerussianguy.beneath.common.container.LostPageContainer;
import com.eerussianguy.beneath.common.items.LostPageItem;
import com.mojang.blaze3d.platform.InputConstants;
import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.Ingredient;

import net.dries007.tfc.client.screen.TFCContainerScreen;

public class LostPageScreen extends TFCContainerScreen<LostPageContainer>
public class LostPageScreen extends Screen
{
private static final ResourceLocation TEXTURE = Beneath.identifier("textures/gui/lost_page.png");
private static final Component NAME = Component.translatable("beneath.screen.lost_page");

private final ItemStack targetStack;

public LostPageScreen(LostPageContainer container, Inventory playerInventory, Component name)
public LostPageScreen(ItemStack targetStack)
{
super(container, playerInventory, name, TEXTURE);
imageHeight += 48;
super(NAME);
this.targetStack = targetStack;
}

@Override
protected void renderLabels(GuiGraphics graphics, int mouseX, int mouseY)
public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTick)
{
final ItemStack stack = menu.getTargetStack();
renderBackground(graphics);
final int x = (width - 256) / 2;
final int y = (height - 256) / 2 + 32;
graphics.blit(TEXTURE, x, y, 0, 0, 256, 256);

final ItemStack stack = targetStack;
if (stack.getItem() instanceof LostPageItem item)
{
final Ingredient costIngredient = item.getCost(stack);
Expand All @@ -39,17 +47,38 @@ protected void renderLabels(GuiGraphics graphics, int mouseX, int mouseY)
final ItemStack[] items = costIngredient.getItems();
final ItemStack cost = items[(int) (level.getGameTime() / 20) % items.length];

drawCenteredLine(graphics, Component.translatable("beneath.screen.lost_page.cost"), 16);
drawCenteredLine(graphics, Component.literal(item.getCostAmount(stack) + "x ").append(item.getSpecificIngredientTranslation(stack)), 26);
graphics.renderItem(cost, imageWidth / 2 - 8, 34);
drawCenteredLine(graphics, Component.translatable("beneath.screen.lost_page.cost"), x, y + 16);
drawCenteredLine(graphics, Component.literal(item.getCostAmount(stack) + "x ").append(item.getSpecificIngredientTranslation(stack)), x, y + 26);
graphics.renderItem(cost, x + 120, y + 34);


drawCenteredLine(graphics, Component.translatable("beneath.screen.lost_page.reward"), 64);
drawCenteredLine(graphics, Component.literal(item.getRewardAmount(stack) + "x ").append(reward.getHoverName()), 74);
graphics.renderItem(reward, imageWidth / 2 - 8, 82);
drawCenteredLine(graphics, Component.translatable("beneath.screen.lost_page.reward"), x, y + 64);
drawCenteredLine(graphics, Component.literal(item.getRewardAmount(stack) + "x ").append(reward.getHoverName()), x, y + 74);
graphics.renderItem(reward, x + 120, y + 82);

drawCenteredLine(graphics, Component.translatable("beneath.screen.lost_page.punishment"), 112);
drawCenteredLine(graphics, Beneath.translateEnum(item.getPunishment(stack)), 122);
drawCenteredLine(graphics, Component.translatable("beneath.screen.lost_page.punishment"), x, y + 112);
drawCenteredLine(graphics, Beneath.translateEnum(item.getPunishment(stack)), x, y + 122);
}
}

@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers)
{
if (super.keyPressed(keyCode, scanCode, modifiers))
return true;
assert minecraft != null;
if (minecraft.options.keyInventory.isActiveAndMatches(InputConstants.getKey(keyCode, scanCode)))
{
minecraft.setScreen(null);
return true;
}
return false;
}

protected void drawCenteredLine(GuiGraphics graphics, MutableComponent text, int x, int y)
{
final int dx = (256 - this.font.width(text)) / 2;
graphics.drawString(this.font, text, x + dx, y, 4210752, false);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
import java.util.function.Supplier;
import com.eerussianguy.beneath.common.blockentities.BeneathBlockEntities;
import com.eerussianguy.beneath.common.blockentities.HellforgeBlockEntity;
import net.minecraft.network.chat.Component;
import net.minecraft.world.MenuProvider;
import net.minecraft.world.SimpleMenuProvider;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.inventory.MenuType;
import net.minecraft.world.level.block.entity.BlockEntityType;
Expand All @@ -16,7 +13,6 @@

import net.dries007.tfc.common.blockentities.InventoryBlockEntity;
import net.dries007.tfc.common.container.BlockEntityContainer;
import net.dries007.tfc.common.container.Container;
import net.dries007.tfc.common.container.ItemStackContainer;
import net.dries007.tfc.util.registry.RegistrationHelpers;

Expand All @@ -28,8 +24,6 @@ public final class BeneathContainerTypes

public static final RegistryObject<MenuType<HellforgeContainer>> HELLFORGE_CONTAINER = BeneathContainerTypes.<HellforgeBlockEntity, HellforgeContainer>registerBlock("hellforge", BeneathBlockEntities.HELLFORGE, HellforgeContainer::create);
public static final RegistryObject<MenuType<JuicerContainer>> JUICER_CONTAINER = registerItem("juicer", JuicerContainer::create);
public static final RegistryObject<MenuType<LostPageContainer>> LOST_PAGE_CONTAINER = register("lost_page", (windowId, playerInv, data) -> new LostPageContainer(windowId, data));
public static final MenuProvider LOST_PAGE_PROVIDER = new SimpleMenuProvider((windowId, inv, player) -> Container.create(LOST_PAGE_CONTAINER.get(), windowId, player.getInventory()), Component.translatable("beneath.screen.lost_page"));

private static <T extends InventoryBlockEntity<?>, C extends BlockEntityContainer<T>> RegistryObject<MenuType<C>> registerBlock(String name, Supplier<BlockEntityType<T>> type, BlockEntityContainer.Factory<T, C> factory)
{
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@

import java.util.List;
import com.eerussianguy.beneath.Beneath;
import com.eerussianguy.beneath.common.container.BeneathContainerTypes;
import com.eerussianguy.beneath.client.BeneathClientUtil;
import com.eerussianguy.beneath.misc.LostPage;
import net.minecraft.ChatFormatting;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.util.RandomSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResultHolder;
Expand All @@ -21,8 +20,6 @@
import net.minecraft.world.level.Level;
import org.jetbrains.annotations.Nullable;

import net.dries007.tfc.util.Helpers;

public class LostPageItem extends Item
{
public LostPageItem(Properties properties)
Expand All @@ -34,9 +31,9 @@ public LostPageItem(Properties properties)
public InteractionResultHolder<ItemStack> use(Level level, Player player, InteractionHand hand)
{
final ItemStack stack = player.getItemInHand(hand);
if (player instanceof ServerPlayer serverPlayer)
if (level.isClientSide)
{
Helpers.openScreen(serverPlayer, BeneathContainerTypes.LOST_PAGE_PROVIDER, buf -> buf.writeItem(stack));
BeneathClientUtil.openLostPageScreen(stack);
}
return InteractionResultHolder.success(stack);
}
Expand Down
Binary file modified src/main/resources/assets/beneath/textures/gui/lost_page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 7cb5cb1

Please sign in to comment.