mirror of
https://github.com/Eaglercraft-Archive/Eaglercraftx-1.8.8-src.git
synced 2025-06-27 10:28:14 -05:00
374 lines
13 KiB
Java
374 lines
13 KiB
Java
|
|
# Eagler Context Redacted Diff
|
|
# Copyright (c) 2024 lax1dude. All rights reserved.
|
|
|
|
# Version: 1.0
|
|
# Author: lax1dude
|
|
|
|
> CHANGE 2 : 3 @ 2 : 4
|
|
|
|
~ import java.text.SimpleDateFormat;
|
|
|
|
> INSERT 1 : 3 @ 1
|
|
|
|
+ import java.util.Calendar;
|
|
+ import java.util.Iterator;
|
|
|
|
> INSERT 1 : 2 @ 1
|
|
|
|
+ import java.util.Locale;
|
|
|
|
> INSERT 1 : 14 @ 1
|
|
|
|
+ import java.util.TimeZone;
|
|
+
|
|
+ import com.google.common.base.Strings;
|
|
+ import com.google.common.collect.Lists;
|
|
+
|
|
+ import net.lax1dude.eaglercraft.v1_8.Display;
|
|
+ import net.lax1dude.eaglercraft.v1_8.EagRuntime;
|
|
+ import net.lax1dude.eaglercraft.v1_8.HString;
|
|
+ import net.lax1dude.eaglercraft.v1_8.internal.EnumPlatformType;
|
|
+ import net.lax1dude.eaglercraft.v1_8.opengl.EaglercraftGPU;
|
|
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
|
|
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.dynamiclights.DynamicLightsStateManager;
|
|
+ import net.lax1dude.eaglercraft.v1_8.sp.SingleplayerServerController;
|
|
|
|
> CHANGE 5 : 6 @ 5 : 10
|
|
|
|
~ import net.minecraft.client.resources.I18n;
|
|
|
|
> CHANGE 1 : 2 @ 1 : 2
|
|
|
|
~ import net.minecraft.potion.PotionEffect;
|
|
|
|
> CHANGE 8 : 9 @ 8 : 9
|
|
|
|
~ import net.minecraft.world.biome.BiomeGenBase;
|
|
|
|
> DELETE 1 @ 1 : 3
|
|
|
|
> INSERT 4 : 5 @ 4
|
|
|
|
+ public int playerOffset = 0;
|
|
|
|
> INSERT 7 : 10 @ 7
|
|
|
|
+ playerOffset = 0;
|
|
+ int ww = scaledResolutionIn.getScaledWidth();
|
|
+ int hh = scaledResolutionIn.getScaledHeight();
|
|
|
|
> CHANGE 1 : 22 @ 1 : 7
|
|
|
|
~ if (this.mc.gameSettings.showDebugInfo) {
|
|
~ GlStateManager.pushMatrix();
|
|
~ this.renderDebugInfoLeft();
|
|
~ this.renderDebugInfoRight(scaledResolutionIn);
|
|
~ GlStateManager.popMatrix();
|
|
~ if (this.mc.gameSettings.field_181657_aC) {
|
|
~ this.func_181554_e();
|
|
~ }
|
|
~ } else {
|
|
~ int i = 2;
|
|
~
|
|
~ if (this.mc.gameSettings.hudFps) {
|
|
~ drawFPS(2, i);
|
|
~ playerOffset = drawSingleplayerStats(scaledResolutionIn);
|
|
~ i += 9;
|
|
~ }
|
|
~
|
|
~ if (this.mc.gameSettings.hudCoords) {
|
|
~ drawXYZ(2, i);
|
|
~ }
|
|
~
|
|
|
|
> INSERT 2 : 26 @ 2
|
|
|
|
+ if (this.mc.currentScreen == null || !(this.mc.currentScreen instanceof GuiChat)) {
|
|
+ if (this.mc.gameSettings.hudStats) {
|
|
+ drawStatsHUD(ww - 2, hh - 2);
|
|
+ }
|
|
+
|
|
+ if (this.mc.gameSettings.hudWorld) {
|
|
+ drawWorldHUD(2, hh - 2);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ if (this.mc.gameSettings.hudCoords && this.mc.joinWorldTickCounter < 80) {
|
|
+ if (this.mc.joinWorldTickCounter > 70) {
|
|
+ GlStateManager.enableBlend();
|
|
+ GlStateManager.blendFunc(770, 771);
|
|
+ }
|
|
+ int i = this.mc.joinWorldTickCounter - 70;
|
|
+ if (i < 0)
|
|
+ i = 0;
|
|
+ drawHideHUD(ww / 2, hh - 70, (10 - i) * 0xFF / 10);
|
|
+ if (this.mc.joinWorldTickCounter > 70) {
|
|
+ GlStateManager.disableBlend();
|
|
+ }
|
|
+ }
|
|
+
|
|
|
|
> INSERT 3 : 142 @ 3
|
|
|
|
+ private void drawFPS(int x, int y) {
|
|
+ this.fontRenderer.drawStringWithShadow(this.mc.renderGlobal.getDebugInfoShort(), x, y, 0xFFFFFF);
|
|
+ }
|
|
+
|
|
+ private void drawXYZ(int x, int y) {
|
|
+ Entity e = mc.getRenderViewEntity();
|
|
+ BlockPos blockpos = new BlockPos(e.posX, e.getEntityBoundingBox().minY, e.posZ);
|
|
+ this.fontRenderer.drawStringWithShadow(
|
|
+ "x: " + blockpos.getX() + ", y: " + blockpos.getY() + ", z: " + blockpos.getZ(), x, y, 0xFFFFFF);
|
|
+ }
|
|
+
|
|
+ private void drawStatsHUD(int x, int y) {
|
|
+ int i = 9;
|
|
+
|
|
+ String line = "Walk: " + EnumChatFormatting.YELLOW + HString.format("%.2f", mc.thePlayer.getAIMoveSpeed())
|
|
+ + EnumChatFormatting.WHITE + " Flight: "
|
|
+ + (mc.thePlayer.capabilities.allowFlying
|
|
+ ? ("" + EnumChatFormatting.YELLOW + mc.thePlayer.capabilities.getFlySpeed())
|
|
+ : EnumChatFormatting.RED + "No");
|
|
+ int lw = fontRenderer.getStringWidth(line);
|
|
+ this.fontRenderer.drawStringWithShadow(line, x - lw, y - i, 0xFFFFFF);
|
|
+ i += 11;
|
|
+
|
|
+ line = "Food: " + EnumChatFormatting.YELLOW + mc.thePlayer.getFoodStats().getFoodLevel()
|
|
+ + EnumChatFormatting.WHITE + ", Sat: " + EnumChatFormatting.YELLOW
|
|
+ + HString.format("%.1f", mc.thePlayer.getFoodStats().getSaturationLevel());
|
|
+ lw = fontRenderer.getStringWidth(line);
|
|
+ this.fontRenderer.drawStringWithShadow(line, x - lw, y - i, 0xFFFFFF);
|
|
+ i += 11;
|
|
+
|
|
+ line = "Amr: " + EnumChatFormatting.YELLOW + mc.thePlayer.getTotalArmorValue() + EnumChatFormatting.WHITE
|
|
+ + ", Health: " + EnumChatFormatting.RED + HString.format("%.1f", mc.thePlayer.getHealth());
|
|
+ lw = fontRenderer.getStringWidth(line);
|
|
+ this.fontRenderer.drawStringWithShadow(line, x - lw, y - i, 0xFFFFFF);
|
|
+ i += 11;
|
|
+
|
|
+ int xpc = mc.thePlayer.xpBarCap();
|
|
+ line = "XP: " + EnumChatFormatting.GREEN + MathHelper.floor_float(mc.thePlayer.experience * xpc)
|
|
+ + EnumChatFormatting.WHITE + " / " + EnumChatFormatting.GREEN + xpc;
|
|
+ lw = fontRenderer.getStringWidth(line);
|
|
+ this.fontRenderer.drawStringWithShadow(line, x - lw, y - i, 0xFFFFFF);
|
|
+ i += 11;
|
|
+
|
|
+ Iterator<PotionEffect> potions = mc.thePlayer.getActivePotionEffects().iterator();
|
|
+ if (potions.hasNext()) {
|
|
+ while (potions.hasNext()) {
|
|
+ i += 11;
|
|
+ PotionEffect e = potions.next();
|
|
+ int t = e.getDuration() / 20;
|
|
+ int m = t / 60;
|
|
+ int s = t % 60;
|
|
+ int j = e.getAmplifier();
|
|
+ if (j > 0) {
|
|
+ line = I18n.format(e.getEffectName())
|
|
+ + (j > 0 ? (" " + EnumChatFormatting.YELLOW + EnumChatFormatting.BOLD
|
|
+ + I18n.format("potion.potency." + j) + EnumChatFormatting.RESET) : "")
|
|
+ + " [" + EnumChatFormatting.YELLOW + HString.format("%02d:%02d", m, s)
|
|
+ + EnumChatFormatting.RESET + "]";
|
|
+ } else {
|
|
+ line = I18n.format(e.getEffectName()) + " [" + EnumChatFormatting.YELLOW
|
|
+ + HString.format("%02d:%02d", m, s) + EnumChatFormatting.RESET + "]";
|
|
+ }
|
|
+ lw = fontRenderer.getStringWidth(line);
|
|
+ this.fontRenderer.drawStringWithShadow(line, x - lw, y - i, 0xFFFFFF);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ }
|
|
+
|
|
+ public static final int ticksAtMidnight = 18000;
|
|
+ public static final int ticksPerDay = 24000;
|
|
+ public static final int ticksPerHour = 1000;
|
|
+ public static final double ticksPerMinute = 1000d / 60d;
|
|
+ public static final double ticksPerSecond = 1000d / 60d / 60d;
|
|
+ private static final SimpleDateFormat SDFTwentyFour = new SimpleDateFormat("HH:mm", Locale.ENGLISH);
|
|
+ private static final SimpleDateFormat SDFTwelve = new SimpleDateFormat("h:mm aa", Locale.ENGLISH);
|
|
+
|
|
+ private void drawWorldHUD(int x, int y) {
|
|
+ /*
|
|
+ * Math was taken from: https://github.com/EssentialsX/Essentials/blob/
|
|
+ * dc7fb919391d62de45e17b51ae1e6fe3e66d7ac6/Essentials/src/main/java/com/
|
|
+ * earth2me/essentials/utils/DescParseTickFormat.java
|
|
+ */
|
|
+ long totalTicks = mc.theWorld.getWorldTime();
|
|
+ long ticks = totalTicks;
|
|
+ ticks = ticks - ticksAtMidnight + ticksPerDay;
|
|
+ final long days = ticks / ticksPerDay;
|
|
+ ticks -= days * ticksPerDay;
|
|
+ final long hours = ticks / ticksPerHour;
|
|
+ ticks -= hours * ticksPerHour;
|
|
+ final long minutes = (long) Math.floor(ticks / ticksPerMinute);
|
|
+ final double dticks = ticks - minutes * ticksPerMinute;
|
|
+ final long seconds = (long) Math.floor(dticks / ticksPerSecond);
|
|
+
|
|
+ // TODO: why does desktop JRE not apply "GMT" correctly?
|
|
+ final Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"), Locale.ENGLISH);
|
|
+
|
|
+ cal.setLenient(true);
|
|
+ cal.set(0, Calendar.JANUARY, 1, 0, 0, 0);
|
|
+ cal.add(Calendar.DAY_OF_YEAR, (int) days);
|
|
+ cal.add(Calendar.HOUR_OF_DAY, (int) hours);
|
|
+ cal.add(Calendar.MINUTE, (int) minutes);
|
|
+ cal.add(Calendar.SECOND, (int) seconds + 1);
|
|
+
|
|
+ String timeString = EnumChatFormatting.WHITE + "Day " + ((totalTicks + 30000l) / 24000l) + " ("
|
|
+ + EnumChatFormatting.YELLOW
|
|
+ + (this.mc.gameSettings.hud24h ? SDFTwentyFour : SDFTwelve).format(cal.getTime())
|
|
+ + EnumChatFormatting.WHITE + ")";
|
|
+
|
|
+ Entity e = mc.getRenderViewEntity();
|
|
+ BlockPos blockpos = new BlockPos(e.posX, MathHelper.clamp_double(e.getEntityBoundingBox().minY, 0.0D, 254.0D),
|
|
+ e.posZ);
|
|
+ BiomeGenBase biome = mc.theWorld.getBiomeGenForCoords(blockpos);
|
|
+
|
|
+ Chunk c = mc.theWorld.getChunkFromBlockCoords(blockpos);
|
|
+ int blockLight = c.getLightFor(EnumSkyBlock.BLOCK, blockpos);
|
|
+ int skyLight = c.getLightFor(EnumSkyBlock.SKY, blockpos) - mc.theWorld.calculateSkylightSubtracted(1.0f);
|
|
+ int totalLight = Math.max(blockLight, skyLight);
|
|
+ EnumChatFormatting lightColor = blockLight < 8
|
|
+ ? ((skyLight < 8 || !mc.theWorld.isDaytime()) ? EnumChatFormatting.RED : EnumChatFormatting.YELLOW)
|
|
+ : EnumChatFormatting.GREEN;
|
|
+ String lightString = "Light: " + lightColor + totalLight + EnumChatFormatting.WHITE;
|
|
+
|
|
+ float temp = biome.getFloatTemperature(blockpos);
|
|
+
|
|
+ String tempString = "Temp: "
|
|
+ + ((blockLight > 11 || temp > 0.15f) ? EnumChatFormatting.YELLOW : EnumChatFormatting.AQUA)
|
|
+ + HString.format("%.2f", temp) + EnumChatFormatting.WHITE;
|
|
+
|
|
+ this.fontRenderer.drawStringWithShadow(timeString, x, y - 30, 0xFFFFFF);
|
|
+ this.fontRenderer.drawStringWithShadow("Biome: " + EnumChatFormatting.AQUA + biome.biomeName, x, y - 19,
|
|
+ 0xFFFFFF);
|
|
+ this.fontRenderer.drawStringWithShadow(lightString + " " + tempString, x, y - 8, 0xFFFFFF);
|
|
+ }
|
|
+
|
|
+ private void drawHideHUD(int x, int y, int fade) {
|
|
+ drawCenteredString(fontRenderer, I18n.format("options.hud.note"), x, y, 0xEECC00 | (fade << 24));
|
|
+ }
|
|
+
|
|
|
|
> INSERT 4 : 37 @ 4
|
|
|
|
+ private int drawSingleplayerStats(ScaledResolution parScaledResolution) {
|
|
+ if (mc.isDemo()) {
|
|
+ return 13;
|
|
+ }
|
|
+ int i = 0;
|
|
+ if (SingleplayerServerController.isWorldRunning()) {
|
|
+ long tpsAge = SingleplayerServerController.getTPSAge();
|
|
+ if (tpsAge < 20000l) {
|
|
+ int color = tpsAge > 2000l ? 0x777777 : 0xFFFFFF;
|
|
+ List<String> strs = SingleplayerServerController.getTPS();
|
|
+ int l;
|
|
+ boolean first = true;
|
|
+ for (int j = 0, m = strs.size(); j < m; ++j) {
|
|
+ String str = strs.get(j);
|
|
+ l = (int) (this.fontRenderer.getStringWidth(str) * (!first ? 0.5f : 1.0f));
|
|
+ GlStateManager.pushMatrix();
|
|
+ GlStateManager.translate(parScaledResolution.getScaledWidth() - 2 - l, i + 2, 0.0f);
|
|
+ if (!first) {
|
|
+ GlStateManager.scale(0.5f, 0.5f, 0.5f);
|
|
+ }
|
|
+ this.fontRenderer.drawStringWithShadow(str, 0, 0, color);
|
|
+ GlStateManager.popMatrix();
|
|
+ i += (int) (this.fontRenderer.FONT_HEIGHT * (!first ? 0.5f : 1.0f));
|
|
+ first = false;
|
|
+ if (color == 0xFFFFFF) {
|
|
+ color = 14737632;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ return i > 0 ? i + 2 : i;
|
|
+ }
|
|
+
|
|
|
|
> INSERT 35 : 42 @ 35
|
|
|
|
+ if (!this.mc.gameSettings.showDebugInfo) {
|
|
+ BlockPos blockpos = new BlockPos(this.mc.getRenderViewEntity().posX,
|
|
+ this.mc.getRenderViewEntity().getEntityBoundingBox().minY, this.mc.getRenderViewEntity().posZ);
|
|
+ return Lists.newArrayList(new String[] { this.mc.renderGlobal.getDebugInfoShort(),
|
|
+ "x: " + blockpos.getX() + ", y: " + blockpos.getY() + ", z: " + blockpos.getZ() });
|
|
+ }
|
|
+
|
|
|
|
> CHANGE 10 : 11 @ 10 : 11
|
|
|
|
~ HString.format("Chunk-relative: %d %d %d", new Object[] { Integer.valueOf(blockpos.getX() & 15),
|
|
|
|
> CHANGE 25 : 26 @ 25 : 26
|
|
|
|
~ HString.format("XYZ: %.3f / %.5f / %.3f",
|
|
|
|
> CHANGE 3 : 4 @ 3 : 4
|
|
|
|
~ HString.format("Block: %d %d %d",
|
|
|
|
> CHANGE 2 : 3 @ 2 : 3
|
|
|
|
~ HString.format("Chunk: %d %d %d in %d %d %d",
|
|
|
|
> CHANGE 3 : 4 @ 3 : 4
|
|
|
|
~ HString.format("Facing: %s (%s) (%.1f / %.1f)",
|
|
|
|
> INSERT 3 : 6 @ 3
|
|
|
|
+ if (DynamicLightsStateManager.isDynamicLightsRender()) {
|
|
+ arraylist.add(6, DynamicLightsStateManager.getF3String());
|
|
+ }
|
|
|
|
> CHANGE 2 : 3 @ 2 : 3
|
|
|
|
~ arraylist.add("Biome: " + chunk.getBiome(blockpos, null).biomeName);
|
|
|
|
> CHANGE 4 : 5 @ 4 : 14
|
|
|
|
~ arraylist.add(HString.format("Local Difficulty: %.2f (Day %d)",
|
|
|
|
> DELETE 4 @ 4 : 8
|
|
|
|
> CHANGE 4 : 5 @ 4 : 5
|
|
|
|
~ arraylist.add(HString.format("Looking at: %d %d %d", new Object[] { Integer.valueOf(blockpos1.getX()),
|
|
|
|
> CHANGE 8 : 36 @ 8 : 25
|
|
|
|
~ ArrayList arraylist;
|
|
~ if (EagRuntime.getPlatformType() != EnumPlatformType.JAVASCRIPT) {
|
|
~ long i = EagRuntime.maxMemory();
|
|
~ long j = EagRuntime.totalMemory();
|
|
~ long k = EagRuntime.freeMemory();
|
|
~ long l = j - k;
|
|
~ arraylist = Lists.newArrayList(new String[] {
|
|
~ HString.format("Java: %s %dbit",
|
|
~ new Object[] { System.getProperty("java.version"),
|
|
~ Integer.valueOf(this.mc.isJava64bit() ? 64 : 32) }),
|
|
~ HString.format("Mem: % 2d%% %03d/%03dMB",
|
|
~ new Object[] { Long.valueOf(l * 100L / i), Long.valueOf(bytesToMb(l)),
|
|
~ Long.valueOf(bytesToMb(i)) }),
|
|
~ HString.format("Allocated: % 2d%% %03dMB",
|
|
~ new Object[] { Long.valueOf(j * 100L / i), Long.valueOf(bytesToMb(j)) }),
|
|
~ "", HString.format("CPU: %s", new Object[] { "eaglercraft" }), "",
|
|
~ HString.format("Display: %dx%d (%s)",
|
|
~ new Object[] { Integer.valueOf(Display.getWidth()), Integer.valueOf(Display.getHeight()),
|
|
~ EaglercraftGPU.glGetString(7936) }),
|
|
~ EaglercraftGPU.glGetString(7937), EaglercraftGPU.glGetString(7938) });
|
|
~ } else {
|
|
~ arraylist = Lists.newArrayList(
|
|
~ new String[] { "Java: TeaVM", "", HString.format("CPU: %s", new Object[] { "eaglercraft" }), "",
|
|
~ HString.format("Display: %dx%d (%s)",
|
|
~ new Object[] { Integer.valueOf(Display.getWidth()),
|
|
~ Integer.valueOf(Display.getHeight()), EaglercraftGPU.glGetString(7936) }),
|
|
~ EaglercraftGPU.glGetString(7937), EaglercraftGPU.glGetString(7938) });
|
|
~ }
|
|
|
|
> DELETE 8 @ 8 : 12
|
|
|
|
> EOF
|