base mod created
This commit is contained in:
@@ -0,0 +1,228 @@
|
||||
package net.minecraft.client;
|
||||
|
||||
import net.minecraft.client.gui.Gui;
|
||||
import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.client.renderer.BufferBuilder;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||
import net.minecraft.client.shader.Framebuffer;
|
||||
import net.minecraft.util.IProgressUpdate;
|
||||
import net.minecraft.util.MinecraftError;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class LoadingScreenRenderer implements IProgressUpdate
|
||||
{
|
||||
private String message = "";
|
||||
/** A reference to the Minecraft object. */
|
||||
private final Minecraft mc;
|
||||
/** The text currently displayed (i.e. the argument to the last call to printText or displayString) */
|
||||
private String currentlyDisplayedText = "";
|
||||
/** The system's time represented in milliseconds. */
|
||||
private long systemTime = Minecraft.getSystemTime();
|
||||
/** True if the loading ended with a success */
|
||||
private boolean loadingSuccess;
|
||||
private final ScaledResolution scaledResolution;
|
||||
private final Framebuffer framebuffer;
|
||||
|
||||
public LoadingScreenRenderer(Minecraft mcIn)
|
||||
{
|
||||
this.mc = mcIn;
|
||||
this.scaledResolution = new ScaledResolution(mcIn);
|
||||
this.framebuffer = new Framebuffer(mcIn.displayWidth, mcIn.displayHeight, false);
|
||||
this.framebuffer.setFramebufferFilter(9728);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.loadingSuccess = false;
|
||||
this.displayString(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows the 'Saving level' string.
|
||||
*/
|
||||
public void displaySavingString(String message)
|
||||
{
|
||||
this.loadingSuccess = true;
|
||||
this.displayString(message);
|
||||
}
|
||||
|
||||
private void displayString(String message)
|
||||
{
|
||||
this.currentlyDisplayedText = message;
|
||||
|
||||
if (!this.mc.running)
|
||||
{
|
||||
if (!this.loadingSuccess)
|
||||
{
|
||||
throw new MinecraftError();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
GlStateManager.clear(256);
|
||||
GlStateManager.matrixMode(5889);
|
||||
GlStateManager.loadIdentity();
|
||||
|
||||
if (OpenGlHelper.isFramebufferEnabled())
|
||||
{
|
||||
int i = this.scaledResolution.getScaleFactor();
|
||||
GlStateManager.ortho(0.0D, (double)(this.scaledResolution.getScaledWidth() * i), (double)(this.scaledResolution.getScaledHeight() * i), 0.0D, 100.0D, 300.0D);
|
||||
}
|
||||
else
|
||||
{
|
||||
ScaledResolution scaledresolution = new ScaledResolution(this.mc);
|
||||
GlStateManager.ortho(0.0D, scaledresolution.getScaledWidth_double(), scaledresolution.getScaledHeight_double(), 0.0D, 100.0D, 300.0D);
|
||||
}
|
||||
|
||||
GlStateManager.matrixMode(5888);
|
||||
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.loadingSuccess)
|
||||
{
|
||||
throw new MinecraftError();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.systemTime = 0L;
|
||||
this.message = message;
|
||||
this.setLoadingProgress(-1);
|
||||
this.systemTime = 0L;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the progress bar on the loading screen to the specified amount.
|
||||
*/
|
||||
public void setLoadingProgress(int progress)
|
||||
{
|
||||
if (!this.mc.running)
|
||||
{
|
||||
if (!this.loadingSuccess)
|
||||
{
|
||||
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();
|
||||
|
||||
if (OpenGlHelper.isFramebufferEnabled())
|
||||
{
|
||||
this.framebuffer.framebufferClear();
|
||||
}
|
||||
else
|
||||
{
|
||||
GlStateManager.clear(256);
|
||||
}
|
||||
|
||||
this.framebuffer.bindFramebuffer(false);
|
||||
GlStateManager.matrixMode(5889);
|
||||
GlStateManager.loadIdentity();
|
||||
GlStateManager.ortho(0.0D, scaledresolution.getScaledWidth_double(), scaledresolution.getScaledHeight_double(), 0.0D, 100.0D, 300.0D);
|
||||
GlStateManager.matrixMode(5888);
|
||||
GlStateManager.loadIdentity();
|
||||
GlStateManager.translate(0.0F, 0.0F, -200.0F);
|
||||
|
||||
if (!OpenGlHelper.isFramebufferEnabled())
|
||||
{
|
||||
GlStateManager.clear(16640);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (!net.minecraftforge.fml.client.FMLClientHandler.instance().handleLoadingScreen(scaledresolution)) //FML Don't render while FML's pre-screen is rendering
|
||||
{
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
BufferBuilder bufferbuilder = tessellator.getBuffer();
|
||||
this.mc.getTextureManager().bindTexture(Gui.OPTIONS_BACKGROUND);
|
||||
float f = 32.0F;
|
||||
bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR);
|
||||
bufferbuilder.pos(0.0D, (double)l, 0.0D).tex(0.0D, (double)((float)l / 32.0F)).color(64, 64, 64, 255).endVertex();
|
||||
bufferbuilder.pos((double)k, (double)l, 0.0D).tex((double)((float)k / 32.0F), (double)((float)l / 32.0F)).color(64, 64, 64, 255).endVertex();
|
||||
bufferbuilder.pos((double)k, 0.0D, 0.0D).tex((double)((float)k / 32.0F), 0.0D).color(64, 64, 64, 255).endVertex();
|
||||
bufferbuilder.pos(0.0D, 0.0D, 0.0D).tex(0.0D, 0.0D).color(64, 64, 64, 255).endVertex();
|
||||
tessellator.draw();
|
||||
|
||||
if (progress >= 0)
|
||||
{
|
||||
int i1 = 100;
|
||||
int j1 = 2;
|
||||
int k1 = k / 2 - 50;
|
||||
int l1 = l / 2 + 16;
|
||||
GlStateManager.disableTexture2D();
|
||||
bufferbuilder.begin(7, DefaultVertexFormats.POSITION_COLOR);
|
||||
bufferbuilder.pos((double)k1, (double)l1, 0.0D).color(128, 128, 128, 255).endVertex();
|
||||
bufferbuilder.pos((double)k1, (double)(l1 + 2), 0.0D).color(128, 128, 128, 255).endVertex();
|
||||
bufferbuilder.pos((double)(k1 + 100), (double)(l1 + 2), 0.0D).color(128, 128, 128, 255).endVertex();
|
||||
bufferbuilder.pos((double)(k1 + 100), (double)l1, 0.0D).color(128, 128, 128, 255).endVertex();
|
||||
bufferbuilder.pos((double)k1, (double)l1, 0.0D).color(128, 255, 128, 255).endVertex();
|
||||
bufferbuilder.pos((double)k1, (double)(l1 + 2), 0.0D).color(128, 255, 128, 255).endVertex();
|
||||
bufferbuilder.pos((double)(k1 + progress), (double)(l1 + 2), 0.0D).color(128, 255, 128, 255).endVertex();
|
||||
bufferbuilder.pos((double)(k1 + progress), (double)l1, 0.0D).color(128, 255, 128, 255).endVertex();
|
||||
tessellator.draw();
|
||||
GlStateManager.enableTexture2D();
|
||||
}
|
||||
|
||||
GlStateManager.enableBlend();
|
||||
GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
|
||||
this.mc.fontRenderer.drawStringWithShadow(this.currentlyDisplayedText, (float)((k - this.mc.fontRenderer.getStringWidth(this.currentlyDisplayedText)) / 2), (float)(l / 2 - 4 - 16), 16777215);
|
||||
this.mc.fontRenderer.drawStringWithShadow(this.message, (float)((k - this.mc.fontRenderer.getStringWidth(this.message)) / 2), (float)(l / 2 - 4 + 8), 16777215);
|
||||
}
|
||||
}
|
||||
catch (java.io.IOException e)
|
||||
{
|
||||
throw new RuntimeException(e);
|
||||
} //FML End
|
||||
this.framebuffer.unbindFramebuffer();
|
||||
|
||||
if (OpenGlHelper.isFramebufferEnabled())
|
||||
{
|
||||
this.framebuffer.framebufferRender(k * j, l * j);
|
||||
}
|
||||
|
||||
this.mc.updateDisplay();
|
||||
|
||||
try
|
||||
{
|
||||
Thread.yield();
|
||||
}
|
||||
catch (Exception var15)
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setDoneWorking()
|
||||
{
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user