Skip to content

Commit

Permalink
Rewrite a lot of the mod + porting
Browse files Browse the repository at this point in the history
  • Loading branch information
Deftu committed Dec 18, 2024
1 parent 9fd105d commit 534b263
Show file tree
Hide file tree
Showing 16 changed files with 316 additions and 167 deletions.
1 change: 1 addition & 0 deletions src/dummy/java/gg/essential/handlers/OnlineIndicator.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import net.minecraft.entity.Entity;

public class OnlineIndicator {

public static void drawNametagIndicator(UMatrixStack matrixStack, Entity entity, String str, int light) {
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.polyfrost.polynametag.mixin;

import net.minecraft.client.renderer.EntityRenderer;
import org.polyfrost.polynametag.PolyNametag;
import org.polyfrost.polynametag.NametagRenderer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
Expand All @@ -12,16 +12,17 @@ public class EntityRendererMixin {

@Inject(method = "renderWorld", at = @At("HEAD"))
private void start(float partialTicks, long finishTimeNano, CallbackInfo ci) {
PolyNametag.INSTANCE.setDrawingWorld(true);
NametagRenderer.setCurrentlyDrawingWorld(true);
}

@Inject(method = "renderWorld", at = @At("TAIL"))
private void end(float partialTicks, long finishTimeNano, CallbackInfo ci) {
PolyNametag.INSTANCE.setDrawingWorld(false);
NametagRenderer.setCurrentlyDrawingWorld(false);
}

@Inject(method = "renderWorldPass", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/RenderGlobal;renderEntities(Lnet/minecraft/entity/Entity;Lnet/minecraft/client/renderer/culling/ICamera;F)V", shift = At.Shift.AFTER))
private void draw(int pass, float partialTicks, long finishTimeNano, CallbackInfo ci) {
PolyNametag.INSTANCE.onRender();
NametagRenderer.renderAll();
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@

@Mixin(FontRenderer.class)
public interface FontRendererAccessor {

@Invoker
void invokeResetStyles();

@Invoker
int invokeRenderString(String text, float x, float y, int color, boolean dropShadow);

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ private void translate(String text, float x, float y, int color, boolean dropSha
if (NametagRenderingKt.getDrawingText()) GlStateManager.translate(0f, 0f, -0.01f);
}

}
}
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
package org.polyfrost.polynametag.mixin;

import cc.polyfrost.oneconfig.libs.universal.UMinecraft;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiInventory;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.entity.EntityLivingBase;
import org.polyfrost.polynametag.PolyNametag;
import org.polyfrost.polynametag.config.ModConfig;
import org.polyfrost.polynametag.NametagRenderer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(GuiInventory.class)
public class GuiInventoryMixin {

@Inject(method = "drawEntityOnScreen", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/RenderManager;renderEntityWithPosYaw(Lnet/minecraft/entity/Entity;DDDFF)Z"))
private static void start(int posX, int posY, int scale, float mouseX, float mouseY, EntityLivingBase ent, CallbackInfo ci) {
Minecraft.getMinecraft().getRenderManager().playerViewX = 0f;
int i = 15728880;
int j = i % 65536;
int k = i / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) j, (float) k);
PolyNametag.INSTANCE.setDrawingInventory(true);
int brightness = 15728880;
int x = brightness % 65536;
int y = brightness / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) x, (float) y);
NametagRenderer.setCurrentlyDrawingInventory(true);
}

@Inject(method = "drawEntityOnScreen", at = @At("TAIL"))
private static void end(int posX, int posY, int scale, float mouseX, float mouseY, EntityLivingBase ent, CallbackInfo ci) {
PolyNametag.INSTANCE.setDrawingInventory(false);
NametagRenderer.setCurrentlyDrawingInventory(false);
}

}

65 changes: 44 additions & 21 deletions src/main/java/org/polyfrost/polynametag/mixin/RenderMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;
import org.polyfrost.polynametag.NametagRenderer;
import org.polyfrost.polynametag.PolyNametag;
import org.polyfrost.polynametag.config.ModConfig;
import org.polyfrost.polynametag.PolyNametagConfig;
import org.polyfrost.polynametag.render.NametagRenderingKt;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
Expand All @@ -30,8 +31,11 @@ public abstract class RenderMixin {
index = 1
)
private float polyNametag$overrideY(float y) {
if (!ModConfig.INSTANCE.enabled) return y;
return y + ModConfig.INSTANCE.getHeightOffset();
if (!PolyNametagConfig.INSTANCE.getEnabled()) {
return y;
}

return y + PolyNametagConfig.INSTANCE.getHeightOffset();
}

@ModifyArg(
Expand All @@ -44,7 +48,7 @@ public abstract class RenderMixin {
index = 0
)
private float polyNametag$fixPerspectiveRotation(float x) {
return (!PolyNametag.INSTANCE.isPatcher() && ModConfig.INSTANCE.enabled && Minecraft.getMinecraft().gameSettings.thirdPersonView == 2) ? -x : x;
return (!PolyNametag.INSTANCE.isPatcher() && PolyNametagConfig.INSTANCE.getEnabled() && Minecraft.getMinecraft().gameSettings.thirdPersonView == 2) ? -x : x;
}

@ModifyArgs(
Expand All @@ -55,8 +59,11 @@ public abstract class RenderMixin {
)
)
private void polyNametag$modifyScale(Args args) {
if (!ModConfig.INSTANCE.enabled) return;
float scale = ModConfig.INSTANCE.getScale();
if (!PolyNametagConfig.INSTANCE.getEnabled()) {
return;
}

float scale = PolyNametagConfig.INSTANCE.getScale();
args.set(0, ((float) args.get(0)) * scale);
args.set(1, ((float) args.get(1)) * scale);
args.set(2, ((float) args.get(2)) * scale);
Expand All @@ -71,31 +78,44 @@ public abstract class RenderMixin {
)
)
private void polyNametag$drawBackground(Entity entity, String str, double x, double y, double z, int maxDistance, CallbackInfo ci) {
if (!ModConfig.INSTANCE.enabled) return;
if (!PolyNametagConfig.INSTANCE.getEnabled()) {
return;
}

NametagRenderingKt.setDrawingWithDepth(true);
NametagRenderingKt.drawFrontBackground(str, entity);
}

@Inject(method = "renderLivingLabel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Tessellator;draw()V"))
private void cancel(Entity entityIn, String str, double x, double y, double z, int maxDistance, CallbackInfo ci) {
if (!ModConfig.INSTANCE.enabled) return;
if (!PolyNametagConfig.INSTANCE.getEnabled()) {
return;
}

Tessellator.getInstance().getWorldRenderer().reset();
}

@Inject(method = "renderLivingLabel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Tessellator;draw()V", shift = At.Shift.AFTER))
private void drawBG(Entity entityIn, String str, double x, double y, double z, int maxDistance, CallbackInfo ci) {
if (!ModConfig.INSTANCE.enabled) return;
if (PolyNametag.INSTANCE.getShouldDrawIndicator() && ModConfig.INSTANCE.getEssentialOffset()) GlStateManager.translate(5f, 0f, 0f);
NametagRenderingKt.drawFrontBackground(str, ModConfig.INSTANCE.getBackgroundColor().getRed(), ModConfig.INSTANCE.getBackgroundColor().getGreen(), ModConfig.INSTANCE.getBackgroundColor().getBlue(), NametagRenderingKt.getBackBackgroundAlpha(), entityIn);
if (!PolyNametagConfig.INSTANCE.getEnabled()) {
return;
}

if (NametagRenderer.isDrawingIndicator() && PolyNametagConfig.INSTANCE.getEssentialOffset()) GlStateManager.translate(5f, 0f, 0f);
NametagRenderingKt.drawFrontBackground(str, PolyNametagConfig.INSTANCE.getBackgroundColor().red(), PolyNametagConfig.INSTANCE.getBackgroundColor().green(), PolyNametagConfig.INSTANCE.getBackgroundColor().blue(), NametagRenderingKt.getBackBackgroundAlpha(), entityIn);
}

@Inject(method = "renderLivingLabel", at = @At("HEAD"), cancellable = true)
private void move(Entity entityIn, String str, double x, double y, double z, int maxDistance, CallbackInfo ci) {
if (!ModConfig.INSTANCE.enabled) return;
PolyNametag.INSTANCE.setShouldDrawIndicator(PolyNametag.INSTANCE.getDrawingPlayerName() && NametagRenderingKt.canDrawIndicator(entityIn));
PolyNametag.INSTANCE.setDrawingPlayerName(false);
if (!PolyNametag.INSTANCE.getDrawingTags() && PolyNametag.INSTANCE.getDrawingWorld()) {
PolyNametag.INSTANCE.getNametags().add(new PolyNametag.LabelInfo((Render<Entity>) (Object) this, entityIn, str, x, y, z, maxDistance));
if (!PolyNametagConfig.INSTANCE.getEnabled()) {
return;
}

NametagRenderer.setDrawingIndicator(NametagRenderer.isCurrentlyDrawingPlayerName() && NametagRenderer.canDrawEssentialIndicator(entityIn));
NametagRenderer.setCurrentlyDrawingPlayerName(false);
if (!NametagRenderer.isCurrentlyDrawingTags() && NametagRenderer.isCurrentlyDrawingWorld()) {
//noinspection unchecked
NametagRenderer.getNametags().add(new NametagRenderer.LabelItem((Render<Entity>) (Object) this, entityIn, str, x, y, z, maxDistance));
ci.cancel();
}
}
Expand All @@ -108,17 +128,20 @@ private void move(Entity entityIn, String str, double x, double y, double z, int
)
)
private int polyNametag$renderString(FontRenderer fontRenderer, String text, int x, int y, int color) {
if (!ModConfig.INSTANCE.enabled) return fontRenderer.drawString(text, x, y, color);
if (!PolyNametagConfig.INSTANCE.getEnabled()) {
return fontRenderer.drawString(text, x, y, color);
}

return NametagRenderingKt.drawStringWithoutZFighting(fontRenderer, text, x, y, color);
}

@Inject(method = "renderLivingLabel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GlStateManager;enableLighting()V"))
private void essential(Entity entityIn, String str, double x, double y, double z, int maxDistance, CallbackInfo ci) {
if (!ModConfig.INSTANCE.enabled) return;
if (!PolyNametagConfig.INSTANCE.getEnabled()) return;
PolyNametag instance = PolyNametag.INSTANCE;
if (instance.isEssential() && instance.getShouldDrawIndicator()) {
NametagRenderingKt.drawIndicator(entityIn, str);
instance.setShouldDrawIndicator(false);
if (instance.isEssential() && NametagRenderer.isDrawingIndicator()) {
NametagRenderer.drawEssentialIndicator(entityIn, str);
NametagRenderer.setDrawingIndicator(false);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import net.minecraft.client.entity.AbstractClientPlayer;
import net.minecraft.client.renderer.entity.RenderPlayer;
import org.polyfrost.polynametag.NametagRenderer;
import org.polyfrost.polynametag.PolyNametag;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
Expand All @@ -13,6 +14,7 @@ public class RenderPlayerMixin {

@Inject(method = "renderOffsetLivingLabel(Lnet/minecraft/client/entity/AbstractClientPlayer;DDDLjava/lang/String;FD)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/RendererLivingEntity;renderOffsetLivingLabel(Lnet/minecraft/entity/Entity;DDDLjava/lang/String;FD)V"))
private void preEssential(AbstractClientPlayer entityIn, double x, double y, double z, String str, float p_177069_9_, double p_177069_10_, CallbackInfo ci) {
PolyNametag.INSTANCE.setDrawingPlayerName(true);
NametagRenderer.setCurrentlyDrawingPlayerName(true);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
import net.minecraft.client.renderer.entity.RendererLivingEntity;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import org.polyfrost.polynametag.NametagRenderer;
import org.polyfrost.polynametag.PolyNametag;
import org.polyfrost.polynametag.config.ModConfig;
import org.polyfrost.polynametag.PolyNametagConfig;
import org.polyfrost.polynametag.render.NametagRenderingKt;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
Expand All @@ -27,7 +28,7 @@ public abstract class RendererLivingEntityMixin {
at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;isGuiEnabled()Z")
)
private boolean gui() {
shouldShowOwnNametag = ((ModConfig.INSTANCE.enabled && ModConfig.INSTANCE.getShowOwnNametag() && (ModConfig.INSTANCE.getShowInInventory() || !PolyNametag.INSTANCE.getDrawingInventory()) && (!PolyNametag.INSTANCE.getDrawingWorld() || Minecraft.getMinecraft().gameSettings.thirdPersonView != 0)) || ModConfig.INSTANCE.getNametagPreview().getDrawing());
shouldShowOwnNametag = ((PolyNametagConfig.INSTANCE.getEnabled() && PolyNametagConfig.INSTANCE.getShowOwnNametag() && (PolyNametagConfig.INSTANCE.getShowInInventory() || !NametagRenderer.isCurrentlyDrawingInventory()) && (!NametagRenderer.isCurrentlyDrawingWorld() || Minecraft.getMinecraft().gameSettings.thirdPersonView != 0)) || PolyNametagConfig.INSTANCE.getNametagPreview().getDrawing());
return shouldShowOwnNametag || Minecraft.isGuiEnabled();
}

Expand All @@ -52,8 +53,11 @@ private boolean gui() {
index = 1
)
private float polyNametag$overrideY(float y) {
if (!ModConfig.INSTANCE.enabled) return y;
return y + ModConfig.INSTANCE.getHeightOffset();
if (!PolyNametagConfig.INSTANCE.getEnabled()) {
return y;
}

return y + PolyNametagConfig.INSTANCE.getHeightOffset();
}

@ModifyArg(
Expand All @@ -66,7 +70,7 @@ private boolean gui() {
index = 0
)
private float polyNametag$fixPerspectiveRotation(float x) {
return (!PolyNametag.INSTANCE.isPatcher() && ModConfig.INSTANCE.enabled && Minecraft.getMinecraft().gameSettings.thirdPersonView == 2) ? -x : x;
return (!PolyNametag.INSTANCE.isPatcher() && PolyNametagConfig.INSTANCE.getEnabled() && Minecraft.getMinecraft().gameSettings.thirdPersonView == 2) ? -x : x;
}

@Inject(
Expand All @@ -77,22 +81,31 @@ private boolean gui() {
)
)
private void polyNametag$modifyScale(EntityLivingBase entity, double x, double y, double z, CallbackInfo ci) {
if (!ModConfig.INSTANCE.enabled) return;
float scale = ModConfig.INSTANCE.getScale();
if (!PolyNametagConfig.INSTANCE.getEnabled()) {
return;
}

float scale = PolyNametagConfig.INSTANCE.getScale();
GlStateManager.scale(scale, scale, scale);
}

@Inject(method = "renderName(Lnet/minecraft/entity/EntityLivingBase;DDD)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Tessellator;draw()V"))
private void cancel(EntityLivingBase entity, double x, double y, double z, CallbackInfo ci) {
if (!ModConfig.INSTANCE.enabled) return;
if (!PolyNametagConfig.INSTANCE.getEnabled()) {
return;
}

Tessellator.getInstance().getWorldRenderer().reset();
}

@Inject(method = "renderName(Lnet/minecraft/entity/EntityLivingBase;DDD)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Tessellator;draw()V", shift = At.Shift.AFTER))
private void drawBG(EntityLivingBase entity, double x, double y, double z, CallbackInfo ci) {
if (!ModConfig.INSTANCE.enabled) return;
if (PolyNametag.INSTANCE.getShouldDrawIndicator() && ModConfig.INSTANCE.getEssentialOffset()) GlStateManager.translate(5f, 0f, 0f);
NametagRenderingKt.drawFrontBackground(entity.getDisplayName().getFormattedText(), ModConfig.INSTANCE.getBackgroundColor().getRed(), ModConfig.INSTANCE.getBackgroundColor().getGreen(), ModConfig.INSTANCE.getBackgroundColor().getBlue(), NametagRenderingKt.getBackBackgroundAlpha(), entity);
if (!PolyNametagConfig.INSTANCE.getEnabled()) {
return;
}

if (NametagRenderer.isDrawingIndicator() && PolyNametagConfig.INSTANCE.getEssentialOffset()) GlStateManager.translate(5f, 0f, 0f);
NametagRenderingKt.drawFrontBackground(entity.getDisplayName().getFormattedText(), PolyNametagConfig.INSTANCE.getBackgroundColor().getRed(), PolyNametagConfig.INSTANCE.getBackgroundColor().getGreen(), PolyNametagConfig.INSTANCE.getBackgroundColor().getBlue(), NametagRenderingKt.getBackBackgroundAlpha(), entity);
}

@Redirect(
Expand All @@ -103,27 +116,37 @@ private void drawBG(EntityLivingBase entity, double x, double y, double z, Callb
)
)
private int polyNametag$renderDrawString(FontRenderer fontRenderer, String text, int x, int y, int color) {
if (!ModConfig.INSTANCE.enabled) return fontRenderer.drawString(text, x, y, color);
if (!PolyNametagConfig.INSTANCE.getEnabled()) {
return fontRenderer.drawString(text, x, y, color);
}

return NametagRenderingKt.drawStringWithoutZFighting(fontRenderer, text, x, y, color);
}

@Inject(method = "renderName(Lnet/minecraft/entity/EntityLivingBase;DDD)V", at = @At("HEAD"), cancellable = true)
private void move(EntityLivingBase entity, double x, double y, double z, CallbackInfo ci) {
if (!ModConfig.INSTANCE.enabled) return;
PolyNametag.INSTANCE.setShouldDrawIndicator(NametagRenderingKt.canDrawIndicator(entity));
if (!PolyNametag.INSTANCE.getDrawingTags() && PolyNametag.INSTANCE.getDrawingWorld()) {
PolyNametag.INSTANCE.getNametags().add(new PolyNametag.NameInfo((RendererLivingEntity<EntityLivingBase>) (Object) this, entity, x, y, z));
if (!PolyNametagConfig.INSTANCE.getEnabled()) {
return;
}

NametagRenderer.setDrawingIndicator(NametagRenderer.canDrawEssentialIndicator(entity));
if (!NametagRenderer.isCurrentlyDrawingTags() && NametagRenderer.isCurrentlyDrawingWorld()) {
//noinspection unchecked
NametagRenderer.getNametags().add(new NametagRenderer.NameItem((RendererLivingEntity<EntityLivingBase>) (Object) this, entity, x, y, z));
ci.cancel();
}
}

@Inject(method = "renderName(Lnet/minecraft/entity/EntityLivingBase;DDD)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GlStateManager;enableLighting()V"))
private void essential(EntityLivingBase entity, double x, double y, double z, CallbackInfo ci) {
if (!ModConfig.INSTANCE.enabled) return;
if (!PolyNametagConfig.INSTANCE.getEnabled()) {
return;
}

PolyNametag instance = PolyNametag.INSTANCE;
if (instance.isEssential() && instance.getShouldDrawIndicator()) {
NametagRenderingKt.drawIndicator(entity, entity.getDisplayName().getFormattedText());
instance.setShouldDrawIndicator(false);
if (instance.isEssential() && NametagRenderer.isDrawingIndicator()) {
NametagRenderer.drawEssentialIndicator(entity, entity.getDisplayName().getFormattedText());
NametagRenderer.setDrawingIndicator(false);
}
}
}
Loading

0 comments on commit 534b263

Please sign in to comment.