Skip to content

Commit

Permalink
Widen class check
Browse files Browse the repository at this point in the history
Signed-off-by: roadhog360 <[email protected]>
  • Loading branch information
Roadhog360 committed Sep 8, 2024
1 parent 468825d commit b73b30f
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 21 deletions.
34 changes: 22 additions & 12 deletions src/main/java/roadhog360/simpleskinbackport/core/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import roadhog360.simpleskinbackport.ducks.ITransparentBox;

import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Base64;
import java.util.List;
import java.util.Objects;
Expand Down Expand Up @@ -54,20 +55,26 @@ public static boolean isPlayer(MinecraftProfileTexture.Type type, SkinManager.Sk
return type == MinecraftProfileTexture.Type.SKIN && callback instanceof EntityPlayer;
}

public static String getCallerClassName() {
public static boolean isCallerAssignableFrom(Class<?>... assignables) {
StackTraceElement[] stElements = Thread.currentThread().getStackTrace();
String callerClassName = null;
for (int i=1; i<stElements.length; i++) {
StackTraceElement ste = stElements[i];
if (!ste.getClassName().equals(Utils.class.getName())&& ste.getClassName().indexOf("java.lang.Thread")!=0) {
if (callerClassName==null) {
callerClassName = ste.getClassName();
} else if (!callerClassName.equals(ste.getClassName())) {
return ste.getClassName();
return Arrays.stream(stElements, 4, stElements.length).anyMatch(
element -> Arrays.stream(assignables).anyMatch(
assignable -> {
try {
return assignable.isAssignableFrom(Class.forName(element.getClassName()));
} catch (ClassNotFoundException ignored) {
return false;
}
}
}
return null;
})
);
}

public static boolean isCallerNameEqualTo(String... assignables) {
StackTraceElement[] stElements = Thread.currentThread().getStackTrace();
return Arrays.stream(stElements, 4, stElements.length).anyMatch(
element -> Arrays.stream(assignables).anyMatch(
assignable -> assignable.equals(element.getClassName()))
);
}

public static ModelRenderer setAllChildBoxesTransparent(ModelRenderer renderer) {
Expand Down Expand Up @@ -127,6 +134,9 @@ public static ModelBox cloneBox(ModelBox box, ModelRenderer to, BoxTransformType
int boxMaxX = MathHelper.floor_float(box.posX2 - box.posX1);
int boxMaxY = MathHelper.floor_float(box.posY2 - box.posY1);
int boxMaxZ = MathHelper.floor_float(box.posZ2 - box.posZ1);
// if(box.posX2 - box.posX1 > 0 || box.posY2 - box.posY1 > 0 || box.posZ2 - box.posZ1 > 0) {
// size = Math.max(Math.max(box.posX2 - box.posX1, box.posY2 - box.posY1), box.posZ2 - box.posZ1);
// }
if(transform.isHatLayer()) {
size += 0.25F;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,10 @@ private void checkPlayerModelAndSetDim(ModelBiped instance, int value, Operation
boolean isPlayerRenderer;
boolean isGaia;
//Do all this OUTSIDE of the if bracket, so we can find and add cases for classes that use size > 0
try {
Class<?> caller = Class.forName(Utils.getCallerClassName());
isGaia = caller.getName().equals("vazkii.botania.client.render.entity.RenderDoppleganger");
isPlayerRenderer = caller.isAssignableFrom(RenderPlayer.class) || isGaia
|| caller.getName().equals("net.smart.render.ModelPlayer") || caller.getName().contains("RenderTFGiant");
//We need a way to check if it's a player model, without modifying the RenderPlayer.
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
isGaia = Utils.isCallerNameEqualTo("vazkii.botania.client.render.entity.RenderDoppleganger");
isPlayerRenderer = Utils.isCallerAssignableFrom(RenderPlayer.class) || isGaia
|| Utils.isCallerNameEqualTo("twilightforest.client.renderer.entity.RenderTFGiant");
//We need a way to check if it's a player model, without modifying the RenderPlayer.

if (size == 0 || size == 0.0625F || isGaia) {
//TODO: Might have to add special exceptions for big models, I think this is model size so I named it as such.
Expand Down

0 comments on commit b73b30f

Please sign in to comment.