2020-09-09 16:48:43 +02:00
|
|
|
package de.ellpeck.actuallyadditions.booklet.page;
|
2016-11-10 23:37:40 +01:00
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
import java.util.List;
|
|
|
|
|
2016-11-10 23:37:40 +01:00
|
|
|
import de.ellpeck.actuallyadditions.api.booklet.IBookletPage;
|
2020-09-09 16:48:43 +02:00
|
|
|
import de.ellpeck.actuallyadditions.common.ActuallyAdditions;
|
|
|
|
import de.ellpeck.actuallyadditions.booklet.gui.GuiBooklet;
|
|
|
|
import de.ellpeck.actuallyadditions.booklet.gui.GuiPage;
|
|
|
|
import de.ellpeck.actuallyadditions.booklet.misc.BookletUtils;
|
|
|
|
import de.ellpeck.actuallyadditions.common.util.AssetUtil;
|
|
|
|
import de.ellpeck.actuallyadditions.common.util.StringUtil;
|
2016-11-10 23:37:40 +01:00
|
|
|
import net.minecraft.client.Minecraft;
|
2016-11-11 15:21:57 +01:00
|
|
|
import net.minecraft.client.audio.PositionedSoundRecord;
|
2017-06-17 00:48:49 +02:00
|
|
|
import net.minecraft.client.util.ITooltipFlag.TooltipFlags;
|
2016-11-11 15:21:57 +01:00
|
|
|
import net.minecraft.init.SoundEvents;
|
2016-11-10 23:37:40 +01:00
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
import net.minecraft.util.text.TextFormatting;
|
|
|
|
import net.minecraftforge.fml.client.config.GuiUtils;
|
2016-11-11 18:55:32 +01:00
|
|
|
import net.minecraftforge.fml.relauncher.Side;
|
|
|
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
2016-11-10 23:37:40 +01:00
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
public class ItemDisplay {
|
2016-11-10 23:37:40 +01:00
|
|
|
|
2016-11-11 18:55:32 +01:00
|
|
|
public final int x;
|
|
|
|
public final int y;
|
|
|
|
public final float scale;
|
2016-11-16 20:31:16 +01:00
|
|
|
private final GuiPage gui;
|
2016-11-10 23:37:40 +01:00
|
|
|
private final IBookletPage page;
|
2016-11-16 20:31:16 +01:00
|
|
|
public ItemStack stack;
|
2016-11-10 23:37:40 +01:00
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
public ItemDisplay(GuiPage gui, int x, int y, float scale, ItemStack stack, boolean shouldTryTransfer) {
|
2016-11-10 23:37:40 +01:00
|
|
|
this.gui = gui;
|
|
|
|
this.x = x;
|
|
|
|
this.y = y;
|
|
|
|
this.scale = scale;
|
|
|
|
this.stack = stack;
|
|
|
|
this.page = shouldTryTransfer ? BookletUtils.findFirstPageForStack(stack) : null;
|
|
|
|
}
|
|
|
|
|
2016-11-11 18:55:32 +01:00
|
|
|
@SideOnly(Side.CLIENT)
|
2019-05-02 09:10:29 +02:00
|
|
|
public void drawPre() {
|
2016-11-10 23:37:40 +01:00
|
|
|
AssetUtil.renderStackToGui(this.stack, this.x, this.y, this.scale);
|
|
|
|
}
|
|
|
|
|
2016-11-11 18:55:32 +01:00
|
|
|
@SideOnly(Side.CLIENT)
|
2019-05-02 09:10:29 +02:00
|
|
|
public void drawPost(int mouseX, int mouseY) {
|
|
|
|
if (this.isHovered(mouseX, mouseY)) {
|
2016-11-10 23:37:40 +01:00
|
|
|
Minecraft mc = this.gui.mc;
|
2017-06-29 18:30:02 +02:00
|
|
|
boolean flagBefore = mc.fontRenderer.getUnicodeFlag();
|
|
|
|
mc.fontRenderer.setUnicodeFlag(false);
|
2016-11-10 23:37:40 +01:00
|
|
|
|
2017-06-17 00:48:49 +02:00
|
|
|
List<String> list = this.stack.getTooltip(mc.player, mc.gameSettings.advancedItemTooltips ? TooltipFlags.ADVANCED : TooltipFlags.NORMAL);
|
2016-11-10 23:37:40 +01:00
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
for (int k = 0; k < list.size(); ++k) {
|
|
|
|
if (k == 0) {
|
|
|
|
list.set(k, this.stack.getItem().getForgeRarity(this.stack).getColor() + list.get(k));
|
|
|
|
} else {
|
|
|
|
list.set(k, TextFormatting.GRAY + list.get(k));
|
2016-11-10 23:37:40 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
if (this.page != null && this.page != this.gui.pages[0] && this.page != this.gui.pages[1]) {
|
|
|
|
list.add(TextFormatting.GOLD + StringUtil.localize("booklet." + ActuallyAdditions.MODID + ".clickToSeeRecipe"));
|
2016-11-10 23:37:40 +01:00
|
|
|
}
|
|
|
|
|
2017-06-29 18:30:02 +02:00
|
|
|
GuiUtils.drawHoveringText(list, mouseX, mouseY, mc.displayWidth, mc.displayHeight, -1, mc.fontRenderer);
|
2016-11-10 23:37:40 +01:00
|
|
|
|
2017-06-29 18:30:02 +02:00
|
|
|
mc.fontRenderer.setUnicodeFlag(flagBefore);
|
2016-11-10 23:37:40 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
public void onMousePress(int button, int mouseX, int mouseY) {
|
|
|
|
if (button == 0 && this.isHovered(mouseX, mouseY)) {
|
|
|
|
if (this.page != null && this.page != this.gui.pages[0] && this.page != this.gui.pages[1]) {
|
2016-11-11 15:21:57 +01:00
|
|
|
this.gui.mc.getSoundHandler().playSound(PositionedSoundRecord.getMasterRecord(SoundEvents.UI_BUTTON_CLICK, 1.0F));
|
|
|
|
|
2016-11-10 23:37:40 +01:00
|
|
|
GuiBooklet gui = BookletUtils.createPageGui(this.gui.previousScreen, this.gui, this.page);
|
|
|
|
this.gui.mc.displayGuiScreen(gui);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-05-02 09:10:29 +02:00
|
|
|
public boolean isHovered(int mouseX, int mouseY) {
|
|
|
|
return mouseX >= this.x && mouseY >= this.y && mouseX < this.x + 16 * this.scale && mouseY < this.y + 16 * this.scale;
|
2016-11-10 23:37:40 +01:00
|
|
|
}
|
|
|
|
}
|