2022-12-27 10:59:46 -08:00
|
|
|
package net.minecraft.client;
|
|
|
|
|
|
|
|
import static net.lax1dude.eaglercraft.v1_8.opengl.RealOpenGLEnums.*;
|
|
|
|
|
|
|
|
import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
|
|
|
|
import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
|
|
|
|
import net.minecraft.client.gui.Gui;
|
|
|
|
import net.minecraft.client.gui.ScaledResolution;
|
|
|
|
import net.minecraft.client.renderer.Tessellator;
|
|
|
|
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
|
|
|
import net.minecraft.util.IProgressUpdate;
|
|
|
|
import net.minecraft.util.MinecraftError;
|
|
|
|
|
|
|
|
/**+
|
|
|
|
* 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 are (c) 2022 LAX1DUDE. All Rights Reserved.
|
|
|
|
*
|
|
|
|
* WITH THE EXCEPTION OF PATCH FILES, MINIFIED JAVASCRIPT, AND ALL FILES
|
|
|
|
* NORMALLY FOUND IN AN UNMODIFIED MINECRAFT RESOURCE PACK, YOU ARE NOT ALLOWED
|
|
|
|
* TO SHARE, DISTRIBUTE, OR REPURPOSE ANY FILE USED BY OR PRODUCED BY THE
|
|
|
|
* SOFTWARE IN THIS REPOSITORY WITHOUT PRIOR PERMISSION FROM THE PROJECT AUTHOR.
|
|
|
|
*
|
|
|
|
* NOT FOR COMMERCIAL OR MALICIOUS USE
|
|
|
|
*
|
|
|
|
* (please read the 'LICENSE' file this repo's root directory for more info)
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public class LoadingScreenRenderer implements IProgressUpdate {
|
|
|
|
private String message = "";
|
2023-01-01 10:26:38 -08:00
|
|
|
private final Minecraft mc;
|
|
|
|
/**
|
|
|
|
* +
|
|
|
|
* The text currently displayed (i.e. the argument to the last
|
|
|
|
* call to printText or func_73722_d)
|
|
|
|
*/
|
|
|
|
private String currentlyDisplayedText = "";
|
2022-12-27 10:59:46 -08:00
|
|
|
/**+
|
|
|
|
* The system's time represented in milliseconds.
|
|
|
|
*/
|
|
|
|
private long systemTime = Minecraft.getSystemTime();
|
2023-01-01 10:26:38 -08:00
|
|
|
private boolean field_73724_e;
|
|
|
|
private final ScaledResolution scaledResolution;
|
2022-12-27 10:59:46 -08:00
|
|
|
|
|
|
|
public LoadingScreenRenderer(Minecraft mcIn) {
|
|
|
|
this.mc = mcIn;
|
|
|
|
this.scaledResolution = new ScaledResolution(mcIn);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**+
|
|
|
|
* this string, followed by "working..." and then the "%
|
|
|
|
* complete" are the 3 lines shown. This resets progress to 0,
|
|
|
|
* and the WorkingString to "working...".
|
|
|
|
*/
|
|
|
|
public void resetProgressAndMessage(String message) {
|
|
|
|
this.field_73724_e = false;
|
|
|
|
this.displayString(message);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**+
|
|
|
|
* Shows the 'Saving level' string.
|
|
|
|
*/
|
|
|
|
public void displaySavingString(String message) {
|
|
|
|
this.field_73724_e = true;
|
|
|
|
this.displayString(message);
|
|
|
|
}
|
|
|
|
|
|
|
|
private void displayString(String message) {
|
|
|
|
this.currentlyDisplayedText = message;
|
|
|
|
if (!this.mc.running) {
|
|
|
|
if (!this.field_73724_e) {
|
|
|
|
throw new MinecraftError();
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
GlStateManager.clear(GL_DEPTH_BUFFER_BIT);
|
|
|
|
GlStateManager.matrixMode(GL_PROJECTION);
|
|
|
|
GlStateManager.loadIdentity();
|
|
|
|
ScaledResolution scaledresolution = new ScaledResolution(this.mc);
|
|
|
|
GlStateManager.ortho(0.0D, scaledresolution.getScaledWidth_double(),
|
|
|
|
scaledresolution.getScaledHeight_double(), 0.0D, 100.0D, 300.0D);
|
|
|
|
GlStateManager.matrixMode(GL_MODELVIEW);
|
|
|
|
GlStateManager.loadIdentity();
|
|
|
|
GlStateManager.translate(0.0F, 0.0F, -200.0F);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**+
|
|
|
|
* Displays a string on the loading screen supposed to indicate
|
|
|
|
* what is being done currently.
|
|
|
|
*/
|
|
|
|
public void displayLoadingString(String message) {
|
|
|
|
if (!this.mc.running) {
|
|
|
|
if (!this.field_73724_e) {
|
|
|
|
throw new MinecraftError();
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
this.systemTime = 0L;
|
|
|
|
this.message = message;
|
|
|
|
this.setLoadingProgress(-1);
|
|
|
|
this.systemTime = 0L;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void eaglerShow(String line1, String line2) {
|
|
|
|
if (!this.mc.running) {
|
|
|
|
if (!this.field_73724_e) {
|
|
|
|
throw new MinecraftError();
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
this.systemTime = 0L;
|
|
|
|
this.currentlyDisplayedText = line1;
|
|
|
|
this.message = line2;
|
|
|
|
this.setLoadingProgress(-1);
|
|
|
|
this.systemTime = 0L;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**+
|
|
|
|
* Updates the progress bar on the loading screen to the
|
|
|
|
* specified amount. Args: loadProgress
|
|
|
|
*/
|
|
|
|
public void setLoadingProgress(int progress) {
|
|
|
|
if (!this.mc.running) {
|
|
|
|
if (!this.field_73724_e) {
|
|
|
|
throw new MinecraftError();
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
long i = Minecraft.getSystemTime();
|
|
|
|
if (i - this.systemTime >= 100L) {
|
|
|
|
this.systemTime = i;
|
|
|
|
ScaledResolution scaledresolution = new ScaledResolution(this.mc);
|
|
|
|
int j = scaledresolution.getScaleFactor();
|
|
|
|
int k = scaledresolution.getScaledWidth();
|
|
|
|
int l = scaledresolution.getScaledHeight();
|
|
|
|
GlStateManager.clear(GL_DEPTH_BUFFER_BIT);
|
|
|
|
GlStateManager.matrixMode(GL_PROJECTION);
|
|
|
|
GlStateManager.loadIdentity();
|
|
|
|
GlStateManager.ortho(0.0D, scaledresolution.getScaledWidth_double(),
|
|
|
|
scaledresolution.getScaledHeight_double(), 0.0D, 100.0D, 300.0D);
|
|
|
|
GlStateManager.matrixMode(GL_MODELVIEW);
|
|
|
|
GlStateManager.loadIdentity();
|
|
|
|
GlStateManager.translate(0.0F, 0.0F, -200.0F);
|
|
|
|
GlStateManager.clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
|
|
|
GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f);
|
|
|
|
|
|
|
|
Tessellator tessellator = Tessellator.getInstance();
|
|
|
|
WorldRenderer worldrenderer = tessellator.getWorldRenderer();
|
|
|
|
this.mc.getTextureManager().bindTexture(Gui.optionsBackground);
|
|
|
|
float f = 32.0F;
|
|
|
|
worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR);
|
2023-01-01 10:26:38 -08:00
|
|
|
worldrenderer.pos(0.0D, l, 0.0D).tex(0.0D, (float) l / f).color(64, 64, 64, 255)
|
2022-12-27 10:59:46 -08:00
|
|
|
.endVertex();
|
2023-01-01 10:26:38 -08:00
|
|
|
worldrenderer.pos(k, l, 0.0D).tex((float) k / f, (float) l / f)
|
2022-12-27 10:59:46 -08:00
|
|
|
.color(64, 64, 64, 255).endVertex();
|
2023-01-01 10:26:38 -08:00
|
|
|
worldrenderer.pos(k, 0.0D, 0.0D).tex((float) k / f, 0.0D).color(64, 64, 64, 255)
|
2022-12-27 10:59:46 -08:00
|
|
|
.endVertex();
|
|
|
|
worldrenderer.pos(0.0D, 0.0D, 0.0D).tex(0.0D, 0.0D).color(64, 64, 64, 255).endVertex();
|
|
|
|
tessellator.draw();
|
|
|
|
if (progress >= 0) {
|
2023-01-01 10:26:38 -08:00
|
|
|
byte b0 = 100;
|
|
|
|
byte b1 = 2;
|
|
|
|
int i1 = k / 2 - b0 / 2;
|
|
|
|
int j1 = l / 2 + 16;
|
|
|
|
GlStateManager.disableTexture2D();
|
|
|
|
worldrenderer.begin(7, DefaultVertexFormats.POSITION_COLOR);
|
|
|
|
worldrenderer.pos(i1, j1, 0.0D).color(128, 128, 128, 255).endVertex();
|
|
|
|
worldrenderer.pos(i1, j1 + b1, 0.0D).color(128, 128, 128, 255).endVertex();
|
|
|
|
worldrenderer.pos(i1 + b0, j1 + b1, 0.0D).color(128, 128, 128, 255)
|
|
|
|
.endVertex();
|
|
|
|
worldrenderer.pos(i1 + b0, j1, 0.0D).color(128, 128, 128, 255).endVertex();
|
|
|
|
worldrenderer.pos(i1, j1, 0.0D).color(128, 255, 128, 255).endVertex();
|
|
|
|
worldrenderer.pos(i1, j1 + b1, 0.0D).color(128, 255, 128, 255).endVertex();
|
|
|
|
worldrenderer.pos(i1 + progress, j1 + b1, 0.0D).color(128, 255, 128, 255)
|
|
|
|
.endVertex();
|
|
|
|
worldrenderer.pos(i1 + progress, j1, 0.0D).color(128, 255, 128, 255)
|
|
|
|
.endVertex();
|
|
|
|
tessellator.draw();
|
|
|
|
GlStateManager.enableTexture2D();
|
2022-12-27 10:59:46 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
GlStateManager.enableBlend();
|
|
|
|
GlStateManager.tryBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, 1, 0);
|
|
|
|
this.mc.fontRendererObj.drawStringWithShadow(this.currentlyDisplayedText,
|
|
|
|
(float) ((k - this.mc.fontRendererObj.getStringWidth(this.currentlyDisplayedText)) / 2),
|
|
|
|
(float) (l / 2 - 4 - 16), 16777215);
|
|
|
|
this.mc.fontRendererObj.drawStringWithShadow(this.message,
|
|
|
|
(float) ((k - this.mc.fontRendererObj.getStringWidth(this.message)) / 2),
|
|
|
|
(float) (l / 2 - 4 + 8), 16777215);
|
|
|
|
this.mc.updateDisplay();
|
|
|
|
|
|
|
|
try {
|
|
|
|
Thread.yield();
|
|
|
|
} catch (Exception var15) {
|
2023-01-01 10:26:38 -08:00
|
|
|
}
|
2022-12-27 10:59:46 -08:00
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setDoneWorking() {
|
|
|
|
}
|
|
|
|
}
|