mirror of
https://github.com/Eaglercraft-Archive/EaglercraftX-1.8-workspace.git
synced 2026-06-22 17:58:18 +02:00
add files
This commit is contained in:
554
src/main/java/net/minecraft/client/gui/GuiScreenBook.java
Executable file
554
src/main/java/net/minecraft/client/gui/GuiScreenBook.java
Executable file
@@ -0,0 +1,554 @@
|
||||
package net.minecraft.client.gui;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.json.JSONException;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import net.lax1dude.eaglercraft.v1_8.netty.Unpooled;
|
||||
import net.lax1dude.eaglercraft.v1_8.Keyboard;
|
||||
import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
|
||||
import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
|
||||
import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.event.ClickEvent;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.ItemEditableBook;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraft.nbt.NBTTagString;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.network.play.client.C17PacketCustomPayload;
|
||||
import net.minecraft.util.ChatAllowedCharacters;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.IChatComponent;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
/**+
|
||||
* This portion of EaglercraftX contains deobfuscated Minecraft 1.8 source code.
|
||||
*
|
||||
* Minecraft 1.8.8 bytecode is (c) 2015 Mojang AB. "Do not distribute!"
|
||||
* Mod Coder Pack v9.18 deobfuscation configs are (c) Copyright by the MCP Team
|
||||
*
|
||||
* EaglercraftX 1.8 patch files (c) 2022-2024 lax1dude, ayunami2000. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
public class GuiScreenBook extends GuiScreen {
|
||||
private static final Logger logger = LogManager.getLogger();
|
||||
private static final ResourceLocation bookGuiTextures = new ResourceLocation("textures/gui/book.png");
|
||||
private final EntityPlayer editingPlayer;
|
||||
private final ItemStack bookObj;
|
||||
private final boolean bookIsUnsigned;
|
||||
private boolean bookIsModified;
|
||||
private boolean bookGettingSigned;
|
||||
private int updateCount;
|
||||
private int bookImageWidth = 192;
|
||||
private int bookImageHeight = 192;
|
||||
private int bookTotalPages = 1;
|
||||
private int currPage;
|
||||
private NBTTagList bookPages;
|
||||
private String bookTitle = "";
|
||||
private List<IChatComponent> field_175386_A;
|
||||
private int field_175387_B = -1;
|
||||
private GuiScreenBook.NextPageButton buttonNextPage;
|
||||
private GuiScreenBook.NextPageButton buttonPreviousPage;
|
||||
private GuiButton buttonDone;
|
||||
private GuiButton buttonSign;
|
||||
private GuiButton buttonFinalize;
|
||||
private GuiButton buttonCancel;
|
||||
|
||||
public GuiScreenBook(EntityPlayer player, ItemStack book, boolean isUnsigned) {
|
||||
this.editingPlayer = player;
|
||||
this.bookObj = book;
|
||||
this.bookIsUnsigned = isUnsigned;
|
||||
if (book.hasTagCompound()) {
|
||||
NBTTagCompound nbttagcompound = book.getTagCompound();
|
||||
this.bookPages = nbttagcompound.getTagList("pages", 8);
|
||||
if (this.bookPages != null) {
|
||||
this.bookPages = (NBTTagList) this.bookPages.copy();
|
||||
this.bookTotalPages = this.bookPages.tagCount();
|
||||
if (this.bookTotalPages < 1) {
|
||||
this.bookTotalPages = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this.bookPages == null && isUnsigned) {
|
||||
this.bookPages = new NBTTagList();
|
||||
this.bookPages.appendTag(new NBTTagString(""));
|
||||
this.bookTotalPages = 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**+
|
||||
* Called from the main game loop to update the screen.
|
||||
*/
|
||||
public void updateScreen() {
|
||||
super.updateScreen();
|
||||
++this.updateCount;
|
||||
}
|
||||
|
||||
/**+
|
||||
* Adds the buttons (and other controls) to the screen in
|
||||
* question. Called when the GUI is displayed and when the
|
||||
* window resizes, the buttonList is cleared beforehand.
|
||||
*/
|
||||
public void initGui() {
|
||||
this.buttonList.clear();
|
||||
Keyboard.enableRepeatEvents(true);
|
||||
if (this.bookIsUnsigned) {
|
||||
this.buttonList.add(this.buttonSign = new GuiButton(3, this.width / 2 - 100, 4 + this.bookImageHeight, 98,
|
||||
20, I18n.format("book.signButton", new Object[0])));
|
||||
this.buttonList.add(this.buttonDone = new GuiButton(0, this.width / 2 + 2, 4 + this.bookImageHeight, 98, 20,
|
||||
I18n.format("gui.done", new Object[0])));
|
||||
this.buttonList.add(this.buttonFinalize = new GuiButton(5, this.width / 2 - 100, 4 + this.bookImageHeight,
|
||||
98, 20, I18n.format("book.finalizeButton", new Object[0])));
|
||||
this.buttonList.add(this.buttonCancel = new GuiButton(4, this.width / 2 + 2, 4 + this.bookImageHeight, 98,
|
||||
20, I18n.format("gui.cancel", new Object[0])));
|
||||
} else {
|
||||
this.buttonList.add(this.buttonDone = new GuiButton(0, this.width / 2 - 100, 4 + this.bookImageHeight, 200,
|
||||
20, I18n.format("gui.done", new Object[0])));
|
||||
}
|
||||
|
||||
int i = (this.width - this.bookImageWidth) / 2;
|
||||
byte b0 = 2;
|
||||
this.buttonList.add(this.buttonNextPage = new GuiScreenBook.NextPageButton(1, i + 120, b0 + 154, true));
|
||||
this.buttonList.add(this.buttonPreviousPage = new GuiScreenBook.NextPageButton(2, i + 38, b0 + 154, false));
|
||||
this.updateButtons();
|
||||
}
|
||||
|
||||
/**+
|
||||
* Called when the screen is unloaded. Used to disable keyboard
|
||||
* repeat events
|
||||
*/
|
||||
public void onGuiClosed() {
|
||||
Keyboard.enableRepeatEvents(false);
|
||||
}
|
||||
|
||||
private void updateButtons() {
|
||||
this.buttonNextPage.visible = !this.bookGettingSigned
|
||||
&& (this.currPage < this.bookTotalPages - 1 || this.bookIsUnsigned);
|
||||
this.buttonPreviousPage.visible = !this.bookGettingSigned && this.currPage > 0;
|
||||
this.buttonDone.visible = !this.bookIsUnsigned || !this.bookGettingSigned;
|
||||
if (this.bookIsUnsigned) {
|
||||
this.buttonSign.visible = !this.bookGettingSigned;
|
||||
this.buttonCancel.visible = this.bookGettingSigned;
|
||||
this.buttonFinalize.visible = this.bookGettingSigned;
|
||||
this.buttonFinalize.enabled = this.bookTitle.trim().length() > 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void sendBookToServer(boolean publish) {
|
||||
if (this.bookIsUnsigned && this.bookIsModified) {
|
||||
if (this.bookPages != null) {
|
||||
while (this.bookPages.tagCount() > 1) {
|
||||
String s = this.bookPages.getStringTagAt(this.bookPages.tagCount() - 1);
|
||||
if (s.length() != 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
this.bookPages.removeTag(this.bookPages.tagCount() - 1);
|
||||
}
|
||||
|
||||
if (this.bookObj.hasTagCompound()) {
|
||||
NBTTagCompound nbttagcompound = this.bookObj.getTagCompound();
|
||||
nbttagcompound.setTag("pages", this.bookPages);
|
||||
} else {
|
||||
this.bookObj.setTagInfo("pages", this.bookPages);
|
||||
}
|
||||
|
||||
String s2 = "MC|BEdit";
|
||||
if (publish) {
|
||||
s2 = "MC|BSign";
|
||||
this.bookObj.setTagInfo("author", new NBTTagString(this.editingPlayer.getName()));
|
||||
this.bookObj.setTagInfo("title", new NBTTagString(this.bookTitle.trim()));
|
||||
|
||||
for (int i = 0; i < this.bookPages.tagCount(); ++i) {
|
||||
String s1 = this.bookPages.getStringTagAt(i);
|
||||
ChatComponentText chatcomponenttext = new ChatComponentText(s1);
|
||||
s1 = IChatComponent.Serializer.componentToJson(chatcomponenttext);
|
||||
this.bookPages.set(i, new NBTTagString(s1));
|
||||
}
|
||||
|
||||
this.bookObj.setItem(Items.written_book);
|
||||
}
|
||||
|
||||
PacketBuffer packetbuffer = new PacketBuffer(Unpooled.buffer());
|
||||
packetbuffer.writeItemStackToBuffer(this.bookObj);
|
||||
this.mc.getNetHandler().addToSendQueue(new C17PacketCustomPayload(s2, packetbuffer));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**+
|
||||
* Called by the controls from the buttonList when activated.
|
||||
* (Mouse pressed for buttons)
|
||||
*/
|
||||
protected void actionPerformed(GuiButton parGuiButton) {
|
||||
if (parGuiButton.enabled) {
|
||||
if (parGuiButton.id == 0) {
|
||||
this.mc.displayGuiScreen((GuiScreen) null);
|
||||
this.sendBookToServer(false);
|
||||
} else if (parGuiButton.id == 3 && this.bookIsUnsigned) {
|
||||
this.bookGettingSigned = true;
|
||||
} else if (parGuiButton.id == 1) {
|
||||
if (this.currPage < this.bookTotalPages - 1) {
|
||||
++this.currPage;
|
||||
} else if (this.bookIsUnsigned) {
|
||||
this.addNewPage();
|
||||
if (this.currPage < this.bookTotalPages - 1) {
|
||||
++this.currPage;
|
||||
}
|
||||
}
|
||||
} else if (parGuiButton.id == 2) {
|
||||
if (this.currPage > 0) {
|
||||
--this.currPage;
|
||||
}
|
||||
} else if (parGuiButton.id == 5 && this.bookGettingSigned) {
|
||||
this.sendBookToServer(true);
|
||||
this.mc.displayGuiScreen((GuiScreen) null);
|
||||
} else if (parGuiButton.id == 4 && this.bookGettingSigned) {
|
||||
this.bookGettingSigned = false;
|
||||
}
|
||||
|
||||
this.updateButtons();
|
||||
}
|
||||
}
|
||||
|
||||
private void addNewPage() {
|
||||
if (this.bookPages != null && this.bookPages.tagCount() < 50) {
|
||||
this.bookPages.appendTag(new NBTTagString(""));
|
||||
++this.bookTotalPages;
|
||||
this.bookIsModified = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**+
|
||||
* Fired when a key is typed (except F11 which toggles full
|
||||
* screen). This is the equivalent of
|
||||
* KeyListener.keyTyped(KeyEvent e). Args : character (character
|
||||
* on the key), keyCode (lwjgl Keyboard key code)
|
||||
*/
|
||||
protected void keyTyped(char parChar1, int parInt1) {
|
||||
if (this.bookIsUnsigned) {
|
||||
if (this.bookGettingSigned) {
|
||||
this.keyTypedInTitle(parChar1, parInt1);
|
||||
} else {
|
||||
this.keyTypedInBook(parChar1, parInt1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**+
|
||||
* Processes keystrokes when editing the text of a book
|
||||
*/
|
||||
private void keyTypedInBook(char typedChar, int keyCode) {
|
||||
if (GuiScreen.isKeyComboCtrlV(keyCode)) {
|
||||
this.pageInsertIntoCurrent(GuiScreen.getClipboardString());
|
||||
} else {
|
||||
switch (keyCode) {
|
||||
case 14:
|
||||
String s = this.pageGetCurrent();
|
||||
if (s.length() > 0) {
|
||||
this.pageSetCurrent(s.substring(0, s.length() - 1));
|
||||
}
|
||||
|
||||
return;
|
||||
case 28:
|
||||
case 156:
|
||||
this.pageInsertIntoCurrent("\n");
|
||||
return;
|
||||
default:
|
||||
if (ChatAllowedCharacters.isAllowedCharacter(typedChar)) {
|
||||
this.pageInsertIntoCurrent(Character.toString(typedChar));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**+
|
||||
* Processes keystrokes when editing the title of a book
|
||||
*/
|
||||
private void keyTypedInTitle(char parChar1, int parInt1) {
|
||||
switch (parInt1) {
|
||||
case 14:
|
||||
if (!this.bookTitle.isEmpty()) {
|
||||
this.bookTitle = this.bookTitle.substring(0, this.bookTitle.length() - 1);
|
||||
this.updateButtons();
|
||||
}
|
||||
|
||||
return;
|
||||
case 28:
|
||||
case 156:
|
||||
if (!this.bookTitle.isEmpty()) {
|
||||
this.sendBookToServer(true);
|
||||
this.mc.displayGuiScreen((GuiScreen) null);
|
||||
}
|
||||
|
||||
return;
|
||||
default:
|
||||
if (this.bookTitle.length() < 16 && ChatAllowedCharacters.isAllowedCharacter(parChar1)) {
|
||||
this.bookTitle = this.bookTitle + Character.toString(parChar1);
|
||||
this.updateButtons();
|
||||
this.bookIsModified = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**+
|
||||
* Returns the entire text of the current page as determined by
|
||||
* currPage
|
||||
*/
|
||||
private String pageGetCurrent() {
|
||||
return this.bookPages != null && this.currPage >= 0 && this.currPage < this.bookPages.tagCount()
|
||||
? this.bookPages.getStringTagAt(this.currPage)
|
||||
: "";
|
||||
}
|
||||
|
||||
/**+
|
||||
* Sets the text of the current page as determined by currPage
|
||||
*/
|
||||
private void pageSetCurrent(String parString1) {
|
||||
if (this.bookPages != null && this.currPage >= 0 && this.currPage < this.bookPages.tagCount()) {
|
||||
this.bookPages.set(this.currPage, new NBTTagString(parString1));
|
||||
this.bookIsModified = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**+
|
||||
* Processes any text getting inserted into the current page,
|
||||
* enforcing the page size limit
|
||||
*/
|
||||
private void pageInsertIntoCurrent(String parString1) {
|
||||
String s = this.pageGetCurrent();
|
||||
String s1 = s + parString1;
|
||||
int i = this.fontRendererObj.splitStringWidth(s1 + "" + EnumChatFormatting.BLACK + "_", 118);
|
||||
if (i <= 128 && s1.length() < 256) {
|
||||
this.pageSetCurrent(s1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**+
|
||||
* Draws the screen and all the components in it. Args : mouseX,
|
||||
* mouseY, renderPartialTicks
|
||||
*/
|
||||
public void drawScreen(int i, int j, float f) {
|
||||
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.mc.getTextureManager().bindTexture(bookGuiTextures);
|
||||
int k = (this.width - this.bookImageWidth) / 2;
|
||||
byte b0 = 2;
|
||||
this.drawTexturedModalRect(k, b0, 0, 0, this.bookImageWidth, this.bookImageHeight);
|
||||
if (this.bookGettingSigned) {
|
||||
String s = this.bookTitle;
|
||||
if (this.bookIsUnsigned) {
|
||||
if (this.updateCount / 6 % 2 == 0) {
|
||||
s = s + "" + EnumChatFormatting.BLACK + "_";
|
||||
} else {
|
||||
s = s + "" + EnumChatFormatting.GRAY + "_";
|
||||
}
|
||||
}
|
||||
|
||||
String s1 = I18n.format("book.editTitle", new Object[0]);
|
||||
int l = this.fontRendererObj.getStringWidth(s1);
|
||||
this.fontRendererObj.drawString(s1, k + 36 + (116 - l) / 2, b0 + 16 + 16, 0);
|
||||
int i1 = this.fontRendererObj.getStringWidth(s);
|
||||
this.fontRendererObj.drawString(s, k + 36 + (116 - i1) / 2, b0 + 48, 0);
|
||||
String s2 = I18n.format("book.byAuthor", new Object[] { this.editingPlayer.getName() });
|
||||
int j1 = this.fontRendererObj.getStringWidth(s2);
|
||||
this.fontRendererObj.drawString(EnumChatFormatting.DARK_GRAY + s2, k + 36 + (116 - j1) / 2, b0 + 48 + 10,
|
||||
0);
|
||||
String s3 = I18n.format("book.finalizeWarning", new Object[0]);
|
||||
this.fontRendererObj.drawSplitString(s3, k + 36, b0 + 80, 116, 0);
|
||||
} else {
|
||||
String s4 = I18n.format("book.pageIndicator",
|
||||
new Object[] { Integer.valueOf(this.currPage + 1), Integer.valueOf(this.bookTotalPages) });
|
||||
String s5 = "";
|
||||
if (this.bookPages != null && this.currPage >= 0 && this.currPage < this.bookPages.tagCount()) {
|
||||
s5 = this.bookPages.getStringTagAt(this.currPage);
|
||||
}
|
||||
|
||||
if (this.bookIsUnsigned) {
|
||||
if (this.fontRendererObj.getBidiFlag()) {
|
||||
s5 = s5 + "_";
|
||||
} else if (this.updateCount / 6 % 2 == 0) {
|
||||
s5 = s5 + "" + EnumChatFormatting.BLACK + "_";
|
||||
} else {
|
||||
s5 = s5 + "" + EnumChatFormatting.GRAY + "_";
|
||||
}
|
||||
} else if (this.field_175387_B != this.currPage) {
|
||||
if (ItemEditableBook.validBookTagContents(this.bookObj.getTagCompound())) {
|
||||
try {
|
||||
IChatComponent ichatcomponent = IChatComponent.Serializer.jsonToComponent(s5);
|
||||
this.field_175386_A = ichatcomponent != null
|
||||
? GuiUtilRenderComponents.func_178908_a(ichatcomponent, 116, this.fontRendererObj, true,
|
||||
true)
|
||||
: null;
|
||||
} catch (JSONException var13) {
|
||||
this.field_175386_A = null;
|
||||
}
|
||||
} else {
|
||||
ChatComponentText chatcomponenttext = new ChatComponentText(
|
||||
EnumChatFormatting.DARK_RED.toString() + "* Invalid book tag *");
|
||||
this.field_175386_A = Lists.newArrayList(chatcomponenttext);
|
||||
}
|
||||
|
||||
this.field_175387_B = this.currPage;
|
||||
}
|
||||
|
||||
int k1 = this.fontRendererObj.getStringWidth(s4);
|
||||
this.fontRendererObj.drawString(s4, k - k1 + this.bookImageWidth - 44, b0 + 16, 0);
|
||||
if (this.field_175386_A == null) {
|
||||
this.fontRendererObj.drawSplitString(s5, k + 36, b0 + 16 + 16, 116, 0);
|
||||
} else {
|
||||
int l1 = Math.min(128 / this.fontRendererObj.FONT_HEIGHT, this.field_175386_A.size());
|
||||
|
||||
for (int i2 = 0; i2 < l1; ++i2) {
|
||||
IChatComponent ichatcomponent2 = (IChatComponent) this.field_175386_A.get(i2);
|
||||
this.fontRendererObj.drawString(ichatcomponent2.getUnformattedText(), k + 36,
|
||||
b0 + 16 + 16 + i2 * this.fontRendererObj.FONT_HEIGHT, 0);
|
||||
}
|
||||
|
||||
IChatComponent ichatcomponent1 = this.func_175385_b(i, j);
|
||||
if (ichatcomponent1 != null) {
|
||||
this.handleComponentHover(ichatcomponent1, i, j);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
super.drawScreen(i, j, f);
|
||||
}
|
||||
|
||||
/**+
|
||||
* Called when the mouse is clicked. Args : mouseX, mouseY,
|
||||
* clickedButton
|
||||
*/
|
||||
protected void mouseClicked(int parInt1, int parInt2, int parInt3) {
|
||||
if (parInt3 == 0) {
|
||||
IChatComponent ichatcomponent = this.func_175385_b(parInt1, parInt2);
|
||||
if (this.handleComponentClick(ichatcomponent)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
super.mouseClicked(parInt1, parInt2, parInt3);
|
||||
}
|
||||
|
||||
/**+
|
||||
* Executes the click event specified by the given chat
|
||||
* component
|
||||
*/
|
||||
protected boolean handleComponentClick(IChatComponent ichatcomponent) {
|
||||
ClickEvent clickevent = ichatcomponent == null ? null : ichatcomponent.getChatStyle().getChatClickEvent();
|
||||
if (clickevent == null) {
|
||||
return false;
|
||||
} else if (clickevent.getAction() == ClickEvent.Action.CHANGE_PAGE) {
|
||||
String s = clickevent.getValue();
|
||||
|
||||
try {
|
||||
int i = Integer.parseInt(s) - 1;
|
||||
if (i >= 0 && i < this.bookTotalPages && i != this.currPage) {
|
||||
this.currPage = i;
|
||||
this.updateButtons();
|
||||
return true;
|
||||
}
|
||||
} catch (Throwable var5) {
|
||||
;
|
||||
}
|
||||
|
||||
return false;
|
||||
} else {
|
||||
boolean flag = super.handleComponentClick(ichatcomponent);
|
||||
if (flag && clickevent.getAction() == ClickEvent.Action.RUN_COMMAND) {
|
||||
this.mc.displayGuiScreen((GuiScreen) null);
|
||||
}
|
||||
|
||||
return flag;
|
||||
}
|
||||
}
|
||||
|
||||
public IChatComponent func_175385_b(int parInt1, int parInt2) {
|
||||
if (this.field_175386_A == null) {
|
||||
return null;
|
||||
} else {
|
||||
int i = parInt1 - (this.width - this.bookImageWidth) / 2 - 36;
|
||||
int j = parInt2 - 2 - 16 - 16;
|
||||
if (i >= 0 && j >= 0) {
|
||||
int k = Math.min(128 / this.fontRendererObj.FONT_HEIGHT, this.field_175386_A.size());
|
||||
if (i <= 116 && j < this.mc.fontRendererObj.FONT_HEIGHT * k + k) {
|
||||
int l = j / this.mc.fontRendererObj.FONT_HEIGHT;
|
||||
if (l >= 0 && l < this.field_175386_A.size()) {
|
||||
IChatComponent ichatcomponent = (IChatComponent) this.field_175386_A.get(l);
|
||||
int i1 = 0;
|
||||
|
||||
for (IChatComponent ichatcomponent1 : ichatcomponent) {
|
||||
if (ichatcomponent1 instanceof ChatComponentText) {
|
||||
i1 += this.mc.fontRendererObj.getStringWidth(
|
||||
((ChatComponentText) ichatcomponent1).getChatComponentText_TextValue());
|
||||
if (i1 > i) {
|
||||
return ichatcomponent1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static class NextPageButton extends GuiButton {
|
||||
private final boolean field_146151_o;
|
||||
|
||||
public NextPageButton(int parInt1, int parInt2, int parInt3, boolean parFlag) {
|
||||
super(parInt1, parInt2, parInt3, 23, 13, "");
|
||||
this.field_146151_o = parFlag;
|
||||
}
|
||||
|
||||
public void drawButton(Minecraft minecraft, int i, int j) {
|
||||
if (this.visible) {
|
||||
boolean flag = i >= this.xPosition && j >= this.yPosition && i < this.xPosition + this.width
|
||||
&& j < this.yPosition + this.height;
|
||||
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
minecraft.getTextureManager().bindTexture(GuiScreenBook.bookGuiTextures);
|
||||
int k = 0;
|
||||
int l = 192;
|
||||
if (flag) {
|
||||
k += 23;
|
||||
}
|
||||
|
||||
if (!this.field_146151_o) {
|
||||
l += 13;
|
||||
}
|
||||
|
||||
this.drawTexturedModalRect(this.xPosition, this.yPosition, k, l, 23, 13);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user