Armor GUI, CPS, Potion Effects GUI

This commit is contained in:
PeytonPlayz595 2024-06-03 00:13:01 -04:00
parent 0dfb8cf3cc
commit 4703cac0e9
14 changed files with 472 additions and 115 deletions

View File

@ -2338,4 +2338,8 @@ public class Minecraft implements IThreadListener {
} }
return ret; return ret;
} }
public float getPartialTicks() {
return this.timer.renderPartialTicks;
}
} }

View File

@ -5,6 +5,7 @@ import static net.lax1dude.eaglercraft.v1_8.opengl.RealOpenGLEnums.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import net.PeytonPlayz585.shadow.ArmorGui;
import net.PeytonPlayz585.shadow.Config; import net.PeytonPlayz585.shadow.Config;
import net.PeytonPlayz585.shadow.CustomColors; import net.PeytonPlayz585.shadow.CustomColors;
import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom; import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom;
@ -77,7 +78,7 @@ public class GuiIngame extends Gui {
private static final ResourceLocation pumpkinBlurTexPath = new ResourceLocation("textures/misc/pumpkinblur.png"); private static final ResourceLocation pumpkinBlurTexPath = new ResourceLocation("textures/misc/pumpkinblur.png");
private final EaglercraftRandom rand = new EaglercraftRandom(); private final EaglercraftRandom rand = new EaglercraftRandom();
private final Minecraft mc; private final Minecraft mc;
private final RenderItem itemRenderer; public final RenderItem itemRenderer;
private final GuiNewChat persistantChatGUI; private final GuiNewChat persistantChatGUI;
private int updateCounter; private int updateCounter;
/**+ /**+
@ -312,6 +313,8 @@ public class GuiIngame extends Gui {
this.overlayPlayerList.updatePlayerList(true); this.overlayPlayerList.updatePlayerList(true);
this.overlayPlayerList.renderPlayerlist(i, scoreboard, scoreobjective1); this.overlayPlayerList.renderPlayerlist(i, scoreboard, scoreobjective1);
} }
ArmorGui.draw();
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
GlStateManager.disableLighting(); GlStateManager.disableLighting();

View File

@ -269,6 +269,12 @@ public class GameSettings {
public boolean hidePassword = true; public boolean hidePassword = true;
public boolean fullBright = false; public boolean fullBright = false;
public boolean leftHand = false; public boolean leftHand = false;
public boolean entityCulling = true;
public boolean particleCulling = true;
public boolean armorgui = false;
public boolean cps = false;
public boolean keyStrokes = false;
public boolean potionGUI = false;
public boolean enableFNAWSkins = true; public boolean enableFNAWSkins = true;
public int voiceListenRadius = 16; public int voiceListenRadius = 16;
@ -928,6 +934,30 @@ public class GameSettings {
this.leftHand = !this.leftHand; this.leftHand = !this.leftHand;
} }
if(parOptions == GameSettings.Options.ENTITY_CULLING) {
this.entityCulling = !this.entityCulling;
}
if(parOptions == GameSettings.Options.PARTICLE_CULLING) {
this.particleCulling = !this.particleCulling;
}
if(parOptions == GameSettings.Options.ARMOR_GUI) {
this.armorgui = !this.armorgui;
}
if(parOptions == GameSettings.Options.CPS) {
this.cps = !this.cps;
}
if(parOptions == GameSettings.Options.KEYSTROKES) {
this.keyStrokes = !this.keyStrokes;
}
if(parOptions == GameSettings.Options.POTION_GUI) {
this.potionGUI = !this.potionGUI;
}
this.saveOptions(); this.saveOptions();
} }
@ -1058,6 +1088,16 @@ public class GameSettings {
return this.fullBright; return this.fullBright;
case LEFT_HAND: case LEFT_HAND:
return this.leftHand; return this.leftHand;
case ENTITY_CULLING:
return this.entityCulling;
case PARTICLE_CULLING:
return this.particleCulling;
case ARMOR_GUI:
return this.armorgui;
case CPS:
return this.cps;
case POTION_GUI:
return this.potionGUI;
default: default:
return false; return false;
} }
@ -1935,6 +1975,30 @@ public class GameSettings {
if (astring[0].equals("leftHand") && astring.length >= 2) { if (astring[0].equals("leftHand") && astring.length >= 2) {
leftHand = Boolean.valueOf(astring[1]).booleanValue(); leftHand = Boolean.valueOf(astring[1]).booleanValue();
} }
if(astring[0].equals("particleCulling") && astring.length >= 2) {
particleCulling = Boolean.valueOf(astring[1]).booleanValue();
}
if(astring[0].equals("entityCulling") && astring.length >= 2) {
entityCulling = Boolean.valueOf(astring[1]).booleanValue();
}
if(astring[0].equals("armorgui") && astring.length >= 2) {
armorgui = Boolean.valueOf(astring[1]).booleanValue();
}
if(astring[0].equals("cps") && astring.length >= 2) {
cps = Boolean.valueOf(astring[1]).booleanValue();
}
if(astring[0].equals("keyStrokes") && astring.length >= 2) {
keyStrokes = Boolean.valueOf(astring[1]).booleanValue();
}
if(astring[0].equals("potionGUI") && astring.length >= 2) {
potionGUI = Boolean.valueOf(astring[1]).booleanValue();
}
for (SoundCategory soundcategory : SoundCategory._VALUES) { for (SoundCategory soundcategory : SoundCategory._VALUES) {
if (astring[0].equals("soundCategory_" + soundcategory.getCategoryName())) { if (astring[0].equals("soundCategory_" + soundcategory.getCategoryName())) {
@ -2131,6 +2195,12 @@ public class GameSettings {
printwriter.println("enableFNAWSkins:" + this.enableFNAWSkins); printwriter.println("enableFNAWSkins:" + this.enableFNAWSkins);
printwriter.println("fullbright:" + this.fullBright); printwriter.println("fullbright:" + this.fullBright);
printwriter.println("leftHand:" + this.leftHand); printwriter.println("leftHand:" + this.leftHand);
printwriter.println("entityCulling:" + this.entityCulling);
printwriter.println("particleCulling:" + this.particleCulling);
printwriter.println("armorgui:" + this.armorgui);
printwriter.println("cps:" + this.cps);
printwriter.println("keyStrokes:" + this.keyStrokes);
printwriter.println("potionGUI:" + this.potionGUI);
for (KeyBinding keybinding : this.keyBindings) { for (KeyBinding keybinding : this.keyBindings) {
printwriter.println("key_" + keybinding.getKeyDescription() + ":" + keybinding.getKeyCode()); printwriter.println("key_" + keybinding.getKeyDescription() + ":" + keybinding.getKeyCode());
@ -2344,7 +2414,13 @@ public class GameSettings {
FNAW_SKINS("options.skinCustomisation.enableFNAWSkins", false, true), FNAW_SKINS("options.skinCustomisation.enableFNAWSkins", false, true),
EAGLER_VSYNC("options.vsync", false, true), EAGLER_VSYNC("options.vsync", false, true),
FULLBRIGHT("Fullbright", false, true), FULLBRIGHT("Fullbright", false, true),
LEFT_HAND("Main Hand", false, true); LEFT_HAND("Main Hand", false, true),
ENTITY_CULLING("Entity Culling", false, true),
PARTICLE_CULLING("Particle Culling", false, true),
ARMOR_GUI("Armor GUI", false, true),
CPS("CPS", false, true),
KEYSTROKES("Keystrokes", false, true),
POTION_GUI("Potion Effects GUI", false, true);
private final boolean enumFloat; private final boolean enumFloat;
private final boolean enumBoolean; private final boolean enumBoolean;

View File

@ -36,8 +36,8 @@ public class KeyBinding implements Comparable<KeyBinding> {
private final String keyDescription; private final String keyDescription;
private final int keyCodeDefault; private final int keyCodeDefault;
private final String keyCategory; private final String keyCategory;
private int keyCode; public int keyCode;
private boolean pressed; public boolean pressed;
private int pressTime; private int pressTime;
public static void onTick(int keyCode) { public static void onTick(int keyCode) {

View File

@ -0,0 +1,178 @@
package net.PeytonPlayz585.shadow;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import net.lax1dude.eaglercraft.v1_8.Mouse;
import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiIngame;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.settings.GameSettings;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.ResourceLocation;
public class ArmorGui {
public static void draw() {
if(Minecraft.getMinecraft().gameSettings.potionGUI) {
renderPotEffects();
}
if(Minecraft.getMinecraft().gameSettings.armorgui) {
renderArmorDura();
}
if(Minecraft.getMinecraft().gameSettings.cps) {
renderCPS();
}
if(Minecraft.getMinecraft().gameSettings.keyStrokes) {
renderKeyStrokes();
}
}
public static void renderArmorDura() {
GlStateManager.enableLighting();
ItemStack boots = Minecraft.getMinecraft().thePlayer.inventory.armorInventory[0];
ItemStack legs = Minecraft.getMinecraft().thePlayer.inventory.armorInventory[1];
ItemStack chest = Minecraft.getMinecraft().thePlayer.inventory.armorInventory[2];
ItemStack helmet = Minecraft.getMinecraft().thePlayer.inventory.armorInventory[3];
ItemStack hand = Minecraft.getMinecraft().thePlayer.inventory.getCurrentItem();
if (helmet != null) {
ItemStack displayhelmet = helmet.copy();
displayhelmet.stackSize = 1;
Minecraft.getMinecraft().ingameGUI.itemRenderer.renderItemAndEffectIntoGUI(displayhelmet, 5 + 3, 15 + 2);
Minecraft.getMinecraft().ingameGUI.itemRenderer.renderItemOverlayIntoGUI(Minecraft.getMinecraft().fontRendererObj, displayhelmet, 5 + 3, 15 + 2, "");
}
if (chest != null) {
ItemStack displaychest = chest.copy();
displaychest.stackSize = 1;
Minecraft.getMinecraft().ingameGUI.itemRenderer.renderItemAndEffectIntoGUI(displaychest, 5 + 3, 15 + 18);
Minecraft.getMinecraft().ingameGUI.itemRenderer.renderItemOverlayIntoGUI(Minecraft.getMinecraft().fontRendererObj, displaychest, 5 + 3, 15 + 18, "");
}
if (legs != null) {
ItemStack displaylegs = legs.copy();
displaylegs.stackSize = 1;
Minecraft.getMinecraft().ingameGUI.itemRenderer.renderItemAndEffectIntoGUI(displaylegs, 5 + 3, 10 + 38);
Minecraft.getMinecraft().ingameGUI.itemRenderer.renderItemOverlayIntoGUI(Minecraft.getMinecraft().fontRendererObj, displaylegs, 5 + 3, 15 + 38, "");
}
if (boots != null) {
ItemStack displayboots = boots.copy();
displayboots.stackSize = 1;
Minecraft.getMinecraft().ingameGUI.itemRenderer.renderItemAndEffectIntoGUI(displayboots, 5 + 3, 15 + 50);
Minecraft.getMinecraft().ingameGUI.itemRenderer.renderItemOverlayIntoGUI(Minecraft.getMinecraft().fontRendererObj, displayboots, 5 + 3, 15 + 50, "");
}
RenderHelper.enableGUIStandardItemLighting();
if (hand != null) {
ItemStack displayhand = hand.copy();
float f = (float) displayhand.animationsToGo - Minecraft.getMinecraft().getPartialTicks();
if (f > 0.0F) {
GlStateManager.pushMatrix();
float f1 = 1.0F + f / 5.0F;
GlStateManager.translate((float) ((5 + 3) + 8), (float) ((15 + 66) + 12), 0.0F);
GlStateManager.scale(1.0F / f1, (f1 + 1.0F) / 2.0F, 1.0F);
GlStateManager.translate((float) (-((5 + 3) + 8)), (float) (-((15 + 66) + 12)), 0.0F);
}
Minecraft.getMinecraft().ingameGUI.itemRenderer.renderItemAndEffectIntoGUI(displayhand, 5 + 3, 15 + 66);
if (f > 0.0F) {
GlStateManager.popMatrix();
}
Minecraft.getMinecraft().ingameGUI.itemRenderer.renderItemOverlays(Minecraft.getMinecraft().fontRendererObj, displayhand, 5 + 3, 15 + 66);
}
RenderHelper.disableStandardItemLighting();
}
public static void renderPotEffects() {
int i = 80;
int i2 = 16;
Collection <PotionEffect> collection = Minecraft.getMinecraft().thePlayer.getActivePotionEffects();
if (!collection.isEmpty()) {
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
GlStateManager.disableLighting();
GlStateManager.enableAlpha();
int l = 33;
if (collection.size() > 5) l = 132 / (collection.size() - 1);
for (PotionEffect potioneffect: Minecraft.getMinecraft().thePlayer.getActivePotionEffects()) {
Potion potion = Potion.potionTypes[potioneffect.getPotionID()];
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
if (potion.hasStatusIcon()) {
Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation("textures/gui/container/inventory.png"));
int i3 = potion.getStatusIconIndex();
GuiIngame guiIngame = new GuiIngame(Minecraft.getMinecraft());
guiIngame.drawTexturedModalRect(4 + 21 - 20, 110 + i2 - 14, 0 + i3 % 8 * 18, 198 + i3 / 8 * 18, 18, 18);
}
String s1 = I18n.format(potion.getName(), new Object[0]);
if (potioneffect.getAmplifier() == 1) {
s1 = String.valueOf(String.valueOf(s1)) + " " + I18n.format("enchantment.level.2", new Object[0]);
} else if (potioneffect.getAmplifier() == 2) {
s1 = String.valueOf(String.valueOf(s1)) + " " + I18n.format("enchantment.level.3", new Object[0]);
} else if (potioneffect.getAmplifier() == 3) {
s1 = String.valueOf(String.valueOf(s1)) + " " + I18n.format("enchantment.level.4", new Object[0]);
}
Minecraft.getMinecraft().fontRendererObj.drawString(s1, (4 + 21), (110 + i2 - 14), -1);
String s2 = Potion.getDurationString(potioneffect);
Minecraft.getMinecraft().fontRendererObj.drawString(s2, (4 + 21), (110 + i2 + 10 - 14), -1);
i2 += l;
}
}
}
public static boolean wasPressed;
public static long lastPressed;
private static List <Long> clicks = new ArrayList < > ();
public static void renderCPS() {
boolean pressed = Mouse.isButtonDown(0) || Mouse.isButtonDown(1);
if (pressed != wasPressed) {
lastPressed = System.currentTimeMillis();
wasPressed = pressed;
if (pressed) {
clicks.add(lastPressed);
}
}
final long time = System.currentTimeMillis();
FuncUtils.removeIf(clicks, sinceLast -> sinceLast + 1000 < time);
ScaledResolution res = new ScaledResolution(Minecraft.getMinecraft());
Minecraft.getMinecraft().fontRendererObj.drawString("[CPS: " + clicks.size() + "]", res.getScaledWidth() / 2 - 17, 5 + 2, -1);
}
public static void renderKeyStrokes() {
}
private static void renderHotbarItem(int xPos, int yPos, float partialTicks, ItemStack stack) {
ItemStack itemstack = stack;
if (itemstack != null) {
float f = (float) itemstack.animationsToGo - partialTicks;
if (f > 0.0F) {
GlStateManager.pushMatrix();
float f1 = 1.0F + f / 5.0F;
GlStateManager.translate((float) (xPos + 8), (float) (yPos + 12), 0.0F);
GlStateManager.scale(1.0F / f1, (f1 + 1.0F) / 2.0F, 1.0F);
GlStateManager.translate((float) (-(xPos + 8)), (float) (-(yPos + 12)), 0.0F);
}
Minecraft.getMinecraft().ingameGUI.itemRenderer.renderItemAndEffectIntoGUI(itemstack, xPos, yPos);
if (f > 0.0F) {
GlStateManager.popMatrix();
}
Minecraft.getMinecraft().ingameGUI.itemRenderer.renderItemOverlays(Minecraft.getMinecraft().fontRendererObj, itemstack, xPos, yPos);
}
}
}

View File

@ -0,0 +1,34 @@
package net.PeytonPlayz585.shadow;
import java.util.Collection;
import java.util.Iterator;
import java.util.function.Predicate;
import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
public class FuncUtils {
public static <T> boolean removeIf(Collection<T> collection, Predicate<T> pre) {
boolean ret = false;
Iterator<T> itr = collection.iterator();
while (itr.hasNext()) {
if (pre.test(itr.next())) {
itr.remove();
ret = true;
}
}
return ret;
}
public static boolean isInside(int mouseX, int mouseY, double x, double y, double width, double height) {
return (mouseX > x && mouseX < (x + width)) && (mouseY > y && mouseY < (y + height));
}
public static void setColor(int color) {
float f3 = (float) (color >> 24 & 255) / 255.0F;
float f = (float) (color >> 16 & 255) / 255.0F;
float f1 = (float) (color >> 8 & 255) / 255.0F;
float f2 = (float) (color & 255) / 255.0F;
GlStateManager.color(f, f1, f2, f3);
}
}

View File

@ -9,7 +9,7 @@ import net.minecraft.client.settings.GameSettings;
public class GuiShadow extends GuiScreen { public class GuiShadow extends GuiScreen {
private static GameSettings.Options[] enumOptions = new GameSettings.Options[] {GameSettings.Options.TOGGLE_SPRINT, GameSettings.Options.CHUNK_BORDERS, GameSettings.Options.HIDE_PASSWORD, GameSettings.Options.FULLBRIGHT, GameSettings.Options.LEFT_HAND}; private static GameSettings.Options[] enumOptions = new GameSettings.Options[] {GameSettings.Options.TOGGLE_SPRINT, GameSettings.Options.CHUNK_BORDERS, GameSettings.Options.HIDE_PASSWORD, GameSettings.Options.FULLBRIGHT, GameSettings.Options.LEFT_HAND, GameSettings.Options.ENTITY_CULLING, GameSettings.Options.PARTICLE_CULLING, GameSettings.Options.ARMOR_GUI, GameSettings.Options.CPS, GameSettings.Options.POTION_GUI};
private GuiScreen parentScreen; private GuiScreen parentScreen;
protected String title; protected String title;

View File

@ -43,109 +43,86 @@ public class ImageData {
public ImageData fillAlpha() { public ImageData fillAlpha() {
for(int i = 0; i < pixels.length; ++i) { for(int i = 0; i < pixels.length; ++i) {
pixels[i] = pixels[i] | 0xFF000000; pixels[i] |= 0xFF000000;
} }
return this; return this;
} }
public ImageData getSubImage(int x, int y, int pw, int ph) { public ImageData getSubImage(int x, int y, int pw, int ph) {
int[] img = new int[pw * ph]; int[] img = new int[pw * ph];
for(int i = 0; i < ph; ++i) { for (int i = 0; i < ph; ++i) {
System.arraycopy(pixels, (i + y) * this.width + x, img, i * pw, pw); System.arraycopy(pixels, (i + y) * this.width + x, img, i * pw, pw);
} }
return new ImageData(pw, ph, img, alpha); return new ImageData(pw, ph, img, alpha);
} }
public static final ImageData loadImageFile(String path) { public static final ImageData loadImageFile(String path) {
byte[] fileData = EagRuntime.getResourceBytes(path); byte[] fileData = EagRuntime.getResourceBytes(path);
if(fileData != null) { return (fileData != null) ? loadImageFile(fileData) : null;
return loadImageFile(fileData); }
}else {
return null;
}
}
public static final ImageData loadImageFile(InputStream data) { public static final ImageData loadImageFile(InputStream data) {
return PlatformAssets.loadImageFile(data); return PlatformAssets.loadImageFile(data);
} }
public static final ImageData loadImageFile(byte[] data) { public static final ImageData loadImageFile(byte[] data) {
return PlatformAssets.loadImageFile(data); return PlatformAssets.loadImageFile(data);
} }
public void getRGB(int startX, int startY, int w, int h, public void getRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize) {
int[] rgbArray, int offset, int scansize) { for (int y = 0; y < h; ++y) {
for(int y = 0; y < h; ++y) { System.arraycopy(pixels, offset + (y + startY) * scansize + startX, rgbArray, y * w, w);
System.arraycopy(pixels, offset + (y + startY) * scansize + startX, rgbArray, y * w, w); }
} }
}
public void copyPixelsFrom(ImageData input, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2) {
public void copyPixelsFrom(ImageData input, int dx1, int dy1, int dx2, int dy2, int cw = sx2 - sx1;
int sx1, int sy1, int sx2, int sy2) { int ch = sy2 - sy1;
if(sx2 - sx1 != dx2 - dx1) { for (int y = 0; y < ch; ++y) {
throw new IllegalArgumentException("Width of the copied region must match the" System.arraycopy(input.pixels, sx1 + (sy1 + y) * cw, pixels, dx1 + (dy1 + y) * cw, cw);
+ "width of the pasted region"); }
} }
int cw = sx2 - sx1;
if(sy2 - sy1 != dy2 - dy1) { public void drawLayer(ImageData input, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2) {
throw new IllegalArgumentException("Height of the copied region must match the" int cw = sx2 - sx1;
+ "height of the pasted region"); int ch = sy2 - sy1;
} for (int y = 0; y < ch; ++y) {
int ch = sy2 - sy1; for (int x = 0; x < cw; ++x) {
for(int y = 0; y < ch; ++y) { int si = (sy1 + y) * cw + sx1 + x;
System.arraycopy(input.pixels, sx1 + (sy1 + y) * cw, pixels, dx1 + (dy1 + y) * cw, cw); int di = (dy1 + y) * cw + dx1 + x;
} int spx = input.pixels[si];
} int dpx = pixels[di];
public void drawLayer(ImageData input, int dx1, int dy1, int dx2, int dy2, if ((spx & 0xFF000000) == 0xFF000000 || (dpx & 0xFF000000) == 0) {
int sx1, int sy1, int sx2, int sy2) { pixels[di] = spx;
if(sx2 - sx1 != dx2 - dx1) { } else {
throw new IllegalArgumentException("Width of the copied region must match the" int sa = (spx >> 24) & 0xFF;
+ "width of the pasted region"); int da = (dpx >> 24) & 0xFF;
} int r = ((spx >> 16) & 0xFF) * sa >> 8;
int cw = sx2 - sx1; int g = ((spx >> 8) & 0xFF) * sa >> 8;
if(sy2 - sy1 != dy2 - dy1) { int b = (spx & 0xFF) * sa >> 8;
throw new IllegalArgumentException("Height of the copied region must match the" int aa = (255 - sa) * da >> 8;
+ "height of the pasted region"); r += ((dpx >> 16) & 0xFF) * aa >> 8;
} g += ((dpx >> 8) & 0xFF) * aa >> 8;
int ch = sy2 - sy1; b += (dpx & 0xFF) * aa >> 8;
for(int y = 0; y < ch; ++y) { sa += da;
for(int x = 0; x < cw; ++x) { if (sa > 0xFF) sa = 0xFF;
int si = (sy1 + y) * cw + sx1 + x; pixels[di] = (sa << 24) | (r << 16) | (g << 8) | b;
int di = (dy1 + y) * cw + dx1 + x; }
int spx = input.pixels[si]; }
int dpx = pixels[di]; }
if((spx & 0xFF000000) == 0xFF000000 || (dpx & 0xFF000000) == 0) { }
pixels[di] = spx;
}else { public ImageData swapRB() {
int sa = (spx >> 24) & 0xFF; for (int i = 0; i < pixels.length; ++i) {
int da = (dpx >> 24) & 0xFF; int j = pixels[i];
int r = ((spx >> 16) & 0xFF) * sa / 255; pixels[i] = (j & 0xFF00FF00) | ((j & 0x00FF0000) >> 16) | ((j & 0x000000FF) << 16);
int g = ((spx >> 8) & 0xFF) * sa / 255; }
int b = (spx & 0xFF) * sa / 255; return this;
int aa = (255 - sa) * da; }
r += ((dpx >> 16) & 0xFF) * aa / 65025;
g += ((dpx >> 8) & 0xFF) * aa / 65025; public static int swapRB(int c) {
b += (dpx & 0xFF) * aa / 65025; return (c & 0xFF00FF00) | ((c & 0x00FF0000) >> 16) | ((c & 0x000000FF) << 16);
sa += da; }
if(sa > 0xFF) sa = 0xFF;
pixels[di] = ((sa) << 24) | (r << 16) | (g << 8) | b;
}
}
}
}
public ImageData swapRB() {
for(int i = 0; i < pixels.length; ++i) {
int j = pixels[i];
pixels[i] = (j & 0xFF00FF00) | ((j & 0x00FF0000) >> 16) |
((j & 0x000000FF) << 16);
}
return this;
}
public static int swapRB(int c) {
return (c & 0xFF00FF00) | ((c & 0x00FF0000) >> 16) | ((c & 0x000000FF) << 16);
}
} }

View File

@ -64,22 +64,21 @@ public class EaglerIntegratedServerWorker {
List<IPCPacketData> pktList = ServerPlatformSingleplayer.recieveAllPacket(); List<IPCPacketData> pktList = ServerPlatformSingleplayer.recieveAllPacket();
if(pktList != null) { if(pktList != null) {
IPCPacketData packetData; IPCPacketData packetData;
for(int i = 0, l = pktList.size(); i < l; ++i) { for(IPCPacketData pkt : pktList) {
packetData = pktList.get(i); if(pkt.channel.equals(SingleplayerServerController.IPC_CHANNEL)) {
if(packetData.channel.equals(SingleplayerServerController.IPC_CHANNEL)) {
IPCPacketBase ipc; IPCPacketBase ipc;
try { try {
ipc = IPCPacketManager.IPCDeserialize(packetData.contents); ipc = IPCPacketManager.IPCDeserialize(pkt.contents);
}catch(IOException ex) { }catch(IOException ex) {
throw new RuntimeException("Failed to deserialize IPC packet", ex); throw new RuntimeException("Failed to deserialize IPC packet", ex);
} }
handleIPCPacket(ipc); handleIPCPacket(ipc);
}else { }else {
IntegratedServerPlayerNetworkManager netHandler = openChannels.get(packetData.channel); IntegratedServerPlayerNetworkManager netHandler = openChannels.get(pkt.channel);
if(netHandler != null) { if(netHandler != null) {
netHandler.addRecievedPacket(packetData.contents); netHandler.addRecievedPacket(pkt.contents);
}else { }else {
logger.error("Recieved packet on channel that does not exist: \"{}\"", packetData.channel); logger.error("Recieved packet on channel that does not exist: \"{}\"", pkt.channel);
} }
} }
} }
@ -88,8 +87,8 @@ public class EaglerIntegratedServerWorker {
public static void tick() { public static void tick() {
List<IntegratedServerPlayerNetworkManager> ocs = new ArrayList<>(openChannels.values()); List<IntegratedServerPlayerNetworkManager> ocs = new ArrayList<>(openChannels.values());
for(int i = 0, l = ocs.size(); i < l; ++i) { for(IntegratedServerPlayerNetworkManager netHandler : ocs) {
ocs.get(i).tick(); netHandler.tick();
} }
} }

View File

@ -506,7 +506,7 @@ public class RenderGlobal implements IWorldAccess, IResourceManagerReloadListene
public void renderEntities(Entity renderViewEntity, ICamera camera, float partialTicks) { public void renderEntities(Entity renderViewEntity, ICamera camera, float partialTicks) {
boolean b = true; boolean b = true;
if(entityCantBeSeen(renderViewEntity)) { if(this.mc.gameSettings.entityCulling && entityCantBeSeen(renderViewEntity)) {
return; return;
} }
if (this.renderEntitiesStartupCounter > 0) { if (this.renderEntitiesStartupCounter > 0) {
@ -2293,7 +2293,7 @@ public class RenderGlobal implements IWorldAccess, IResourceManagerReloadListene
private EntityFX spawnEntityFX(int p_174974_1_, boolean ignoreRange, double p_174974_3_, double p_174974_5_, double p_174974_7_, double p_174974_9_, double p_174974_11_, double p_174974_13_, int... p_174974_15_) { private EntityFX spawnEntityFX(int p_174974_1_, boolean ignoreRange, double p_174974_3_, double p_174974_5_, double p_174974_7_, double p_174974_9_, double p_174974_11_, double p_174974_13_, int... p_174974_15_) {
if (this.mc != null && this.mc.getRenderViewEntity() != null && this.mc.effectRenderer != null) { if (this.mc != null && this.mc.getRenderViewEntity() != null && this.mc.effectRenderer != null) {
if(isBehindPlayer(new BlockPos(p_174974_3_, p_174974_5_, p_174974_7_))) { if(this.mc.gameSettings.particleCulling && isBehindPlayer(new BlockPos(p_174974_3_, p_174974_5_, p_174974_7_))) {
return null; return null;
} }

View File

@ -2368,4 +2368,8 @@ public class Minecraft extends ModData implements IThreadListener {
} }
return ret; return ret;
} }
public float getPartialTicks() {
return this.timer.renderPartialTicks;
}
} }

View File

@ -5,6 +5,7 @@ import static net.lax1dude.eaglercraft.v1_8.opengl.RealOpenGLEnums.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import net.PeytonPlayz585.shadow.ArmorGui;
import net.PeytonPlayz585.shadow.Config; import net.PeytonPlayz585.shadow.Config;
import net.PeytonPlayz585.shadow.CustomColors; import net.PeytonPlayz585.shadow.CustomColors;
import net.eaglerforge.api.ModAPI; import net.eaglerforge.api.ModAPI;
@ -79,7 +80,7 @@ public class GuiIngame extends Gui {
private static final ResourceLocation pumpkinBlurTexPath = new ResourceLocation("textures/misc/pumpkinblur.png"); private static final ResourceLocation pumpkinBlurTexPath = new ResourceLocation("textures/misc/pumpkinblur.png");
private final EaglercraftRandom rand = new EaglercraftRandom(); private final EaglercraftRandom rand = new EaglercraftRandom();
private final Minecraft mc; private final Minecraft mc;
private final RenderItem itemRenderer; public final RenderItem itemRenderer;
private final GuiNewChat persistantChatGUI; private final GuiNewChat persistantChatGUI;
private int updateCounter; private int updateCounter;
/**+ /**+
@ -315,6 +316,9 @@ public class GuiIngame extends Gui {
this.overlayPlayerList.renderPlayerlist(i, scoreboard, scoreobjective1); this.overlayPlayerList.renderPlayerlist(i, scoreboard, scoreobjective1);
} }
if(this.mc.gameSettings.armorgui) {
ArmorGui.draw();
}
ModAPI.callEvent("drawhud", new ModData()); ModAPI.callEvent("drawhud", new ModData());
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);

View File

@ -272,6 +272,12 @@ public class GameSettings extends ModData {
public boolean enableFNAWSkins = true; public boolean enableFNAWSkins = true;
public boolean fullBright = false; public boolean fullBright = false;
public boolean leftHand = false; public boolean leftHand = false;
public boolean entityCulling = true;
public boolean particleCulling = true;
public boolean armorgui = false;
public boolean cps = false;
public boolean keyStrokes = false;
public boolean potionGUI = false;
public int voiceListenRadius = 16; public int voiceListenRadius = 16;
public float voiceListenVolume = 0.5f; public float voiceListenVolume = 0.5f;
@ -1091,6 +1097,30 @@ public class GameSettings extends ModData {
if(parOptions == GameSettings.Options.LEFT_HAND) { if(parOptions == GameSettings.Options.LEFT_HAND) {
this.leftHand = !this.leftHand; this.leftHand = !this.leftHand;
} }
if(parOptions == GameSettings.Options.ENTITY_CULLING) {
this.entityCulling = !this.entityCulling;
}
if(parOptions == GameSettings.Options.PARTICLE_CULLING) {
this.particleCulling = !this.particleCulling;
}
if(parOptions == GameSettings.Options.ARMOR_GUI) {
this.armorgui = !this.armorgui;
}
if(parOptions == GameSettings.Options.CPS) {
this.cps = !this.cps;
}
if(parOptions == GameSettings.Options.KEYSTROKES) {
this.keyStrokes = !this.keyStrokes;
}
if(parOptions == GameSettings.Options.POTION_GUI) {
this.potionGUI = !this.potionGUI;
}
this.saveOptions(); this.saveOptions();
} }
@ -1220,6 +1250,18 @@ public class GameSettings extends ModData {
return this.fullBright; return this.fullBright;
case LEFT_HAND: case LEFT_HAND:
return this.leftHand; return this.leftHand;
case ENTITY_CULLING:
return this.entityCulling;
case PARTICLE_CULLING:
return this.particleCulling;
case ARMOR_GUI:
return this.armorgui;
case CPS:
return this.cps;
case POTION_GUI:
return this.potionGUI;
case KEYSTROKES:
return this.keyStrokes;
default: default:
return false; return false;
} }
@ -2097,6 +2139,30 @@ public class GameSettings extends ModData {
if (astring[0].equals("leftHand") && astring.length >= 2) { if (astring[0].equals("leftHand") && astring.length >= 2) {
leftHand = Boolean.valueOf(astring[1]).booleanValue(); leftHand = Boolean.valueOf(astring[1]).booleanValue();
} }
if(astring[0].equals("particleCulling") && astring.length >= 2) {
particleCulling = Boolean.valueOf(astring[1]).booleanValue();
}
if(astring[0].equals("entityCulling") && astring.length >= 2) {
entityCulling = Boolean.valueOf(astring[1]).booleanValue();
}
if(astring[0].equals("armorgui") && astring.length >= 2) {
armorgui = Boolean.valueOf(astring[1]).booleanValue();
}
if(astring[0].equals("cps") && astring.length >= 2) {
cps = Boolean.valueOf(astring[1]).booleanValue();
}
if(astring[0].equals("keyStrokes") && astring.length >= 2) {
keyStrokes = Boolean.valueOf(astring[1]).booleanValue();
}
if(astring[0].equals("potionGUI") && astring.length >= 2) {
potionGUI = Boolean.valueOf(astring[1]).booleanValue();
}
for (SoundCategory soundcategory : SoundCategory._VALUES) { for (SoundCategory soundcategory : SoundCategory._VALUES) {
if (astring[0].equals("soundCategory_" + soundcategory.getCategoryName())) { if (astring[0].equals("soundCategory_" + soundcategory.getCategoryName())) {
@ -2293,6 +2359,12 @@ public class GameSettings extends ModData {
printwriter.println("enableFNAWSkins:" + this.enableFNAWSkins); printwriter.println("enableFNAWSkins:" + this.enableFNAWSkins);
printwriter.println("fullbright:" + this.fullBright); printwriter.println("fullbright:" + this.fullBright);
printwriter.println("leftHand:" + this.leftHand); printwriter.println("leftHand:" + this.leftHand);
printwriter.println("entityCulling:" + this.entityCulling);
printwriter.println("particleCulling:" + this.particleCulling);
printwriter.println("armorgui:" + this.armorgui);
printwriter.println("cps:" + this.cps);
printwriter.println("keyStrokes:" + this.keyStrokes);
printwriter.println("potionGUI:" + this.potionGUI);
for (KeyBinding keybinding : this.keyBindings) { for (KeyBinding keybinding : this.keyBindings) {
printwriter.println("key_" + keybinding.getKeyDescription() + ":" + keybinding.getKeyCode()); printwriter.println("key_" + keybinding.getKeyDescription() + ":" + keybinding.getKeyCode());
@ -2506,7 +2578,13 @@ public class GameSettings extends ModData {
FNAW_SKINS("options.skinCustomisation.enableFNAWSkins", false, true), FNAW_SKINS("options.skinCustomisation.enableFNAWSkins", false, true),
EAGLER_VSYNC("options.vsync", false, true), EAGLER_VSYNC("options.vsync", false, true),
FULLBRIGHT("Fullbright", false, true), FULLBRIGHT("Fullbright", false, true),
LEFT_HAND("Main Hand", false, true); LEFT_HAND("Main Hand", false, true),
ENTITY_CULLING("Entity Culling", false, true),
PARTICLE_CULLING("Particle Culling", false, true),
ARMOR_GUI("Armor GUI", false, true),
CPS("CPS", false, true),
KEYSTROKES("Keystrokes", false, true),
POTION_GUI("Potion Effects GUI", false, true);
private final boolean enumFloat; private final boolean enumFloat;
private final boolean enumBoolean; private final boolean enumBoolean;

View File

@ -38,8 +38,8 @@ public class KeyBinding extends ModData implements Comparable<KeyBinding> {
private final String keyDescription; private final String keyDescription;
private final int keyCodeDefault; private final int keyCodeDefault;
private final String keyCategory; private final String keyCategory;
private int keyCode; public int keyCode;
private boolean pressed; public boolean pressed;
private int pressTime; private int pressTime;
public static void onTick(int keyCode) { public static void onTick(int keyCode) {