aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/entityviewer/EntityViewer.java
diff options
context:
space:
mode:
authorVixid <52578495+Vixid1@users.noreply.github.com>2022-10-21 07:10:32 +0100
committerGitHub <noreply@github.com>2022-10-20 23:10:32 -0700
commitbbf48864fa4894352964f28be11d6686d49052ad (patch)
tree28182ed70140ecabe4cdbd470deb0418d5bdff69 /src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/entityviewer/EntityViewer.java
parent218e8048e345f4792cc1b696570fae29ac532ef8 (diff)
downloadnotenoughupdates-bbf48864fa4894352964f28be11d6686d49052ad.tar.gz
notenoughupdates-bbf48864fa4894352964f28be11d6686d49052ad.tar.bz2
notenoughupdates-bbf48864fa4894352964f28be11d6686d49052ad.zip
Entity Scale and Party and Guild chat social options (#363)
363/merge
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/entityviewer/EntityViewer.java')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/entityviewer/EntityViewer.java63
1 files changed, 60 insertions, 3 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/entityviewer/EntityViewer.java b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/entityviewer/EntityViewer.java
index 367d62d3..2f091304 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/entityviewer/EntityViewer.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/entityviewer/EntityViewer.java
@@ -27,8 +27,10 @@ import io.github.moulberry.notenoughupdates.util.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiScreen;
-import net.minecraft.client.gui.inventory.GuiInventory;
import net.minecraft.client.renderer.GlStateManager;
+import net.minecraft.client.renderer.OpenGlHelper;
+import net.minecraft.client.renderer.RenderHelper;
+import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.boss.EntityDragon;
import net.minecraft.entity.boss.EntityWither;
@@ -63,6 +65,7 @@ import net.minecraft.entity.passive.EntitySquid;
import net.minecraft.entity.passive.EntityVillager;
import net.minecraft.entity.passive.EntityWolf;
import net.minecraft.util.ResourceLocation;
+import org.lwjgl.input.Keyboard;
import java.io.IOException;
import java.io.InputStreamReader;
@@ -224,9 +227,23 @@ public class EntityViewer extends GuiScreen {
float bottomOffset = 0F;
EntityLivingBase stack = entity;
while (true) {
-
+ if (stack instanceof EntityDragon) {
+ if (Keyboard.isKeyDown(Keyboard.KEY_SPACE)) {
+ scale = 35;
+ bottomOffset = 0F;
+ }
+ else {
+ scale = 10;
+ bottomOffset = 2F;
+ }
+ } else if (stack instanceof EntityWither) {
+ scale = 20;
+ } else if (stack instanceof EntityGhast) {
+ scale = 8;
+ bottomOffset = 4F;
+ }
stack.ticksExisted = Minecraft.getMinecraft().thePlayer.ticksExisted;
- GuiInventory.drawEntityOnScreen(
+ drawEntityOnScreen(
posX,
(int) (posY - bottomOffset * scale),
scale,
@@ -242,4 +259,44 @@ public class EntityViewer extends GuiScreen {
}
}
+
+ // Need this to flip the ender dragon and make it follow mouse correctly
+ public static void drawEntityOnScreen(int posX, int posY, int scale, float mouseX, float mouseY, EntityLivingBase ent) {
+ GlStateManager.enableColorMaterial();
+ GlStateManager.pushMatrix();
+ GlStateManager.translate((float)posX, (float)posY, 50.0F);
+ GlStateManager.scale((float)(-scale), (float)scale, (float)scale);
+ GlStateManager.rotate(180.0F, 0.0F, 0.0F, 1.0F);
+ float f = ent.renderYawOffset;
+ float g = ent.rotationYaw;
+ float h = ent.rotationPitch;
+ float i = ent.prevRotationYawHead;
+ float j = ent.rotationYawHead;
+ GlStateManager.rotate(135.0F, 0.0F, 1.0F, 0.0F);
+ RenderHelper.enableStandardItemLighting();
+ GlStateManager.rotate((ent instanceof EntityDragon) ? 45.0F : -135.0F, 0.0F, 1.0F, 0.0F);
+ GlStateManager.rotate((ent instanceof EntityDragon) ? ((float)Math.atan(mouseY / 40.0F)) * 20.0F : -((float)Math.atan(mouseY / 40.0F)) * 20.0F, 1.0F, 0.0F, 0.0F);
+ ent.renderYawOffset = (float)Math.atan(mouseX / 40.0F) * 20.0F;
+ ent.rotationYaw = (float)Math.atan(mouseX / 40.0F) * 40.0F;
+ ent.rotationPitch = -((float)Math.atan(mouseY / 40.0F)) * 20.0F;
+ ent.rotationYawHead = ent.rotationYaw;
+ ent.prevRotationYawHead = ent.rotationYaw;
+ GlStateManager.translate(0.0F, 0.0F, 0.0F);
+ RenderManager renderManager = Minecraft.getMinecraft().getRenderManager();
+ renderManager.setPlayerViewY(180.0F);
+ renderManager.setRenderShadow(false);
+ renderManager.renderEntityWithPosYaw(ent, 0.0D, 0.0D, 0.0D, 0.0F, 1.0F);
+ renderManager.setRenderShadow(true);
+ ent.renderYawOffset = f;
+ ent.rotationYaw = g;
+ ent.rotationPitch = h;
+ ent.prevRotationYawHead = i;
+ ent.rotationYawHead = j;
+ GlStateManager.popMatrix();
+ RenderHelper.disableStandardItemLighting();
+ GlStateManager.disableRescaleNormal();
+ GlStateManager.setActiveTexture(OpenGlHelper.lightmapTexUnit);
+ GlStateManager.disableTexture2D();
+ GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit);
+ }
}