aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMy-Name-Is-Jeff <37018278+My-Name-Is-Jeff@users.noreply.github.com>2021-06-25 12:15:02 -0400
committerMy-Name-Is-Jeff <37018278+My-Name-Is-Jeff@users.noreply.github.com>2021-06-25 12:15:02 -0400
commit680444dbbf5ed0340b4f74e2f596f8cd0d996f00 (patch)
treece2eb88d3bfa5394d3f89e36b5277bd7c4be84da /src
parentebe35687597f5741954e2ccdc60ae239c5a36150 (diff)
downloadSkytilsMod-680444dbbf5ed0340b4f74e2f596f8cd0d996f00.tar.gz
SkytilsMod-680444dbbf5ed0340b4f74e2f596f8cd0d996f00.tar.bz2
SkytilsMod-680444dbbf5ed0340b4f74e2f596f8cd0d996f00.zip
Fix check render entity event not working on leashed + targeting guardians
Diffstat (limited to 'src')
-rw-r--r--src/main/java/skytils/skytilsmod/mixins/renderer/MixinRender.java3
-rw-r--r--src/main/java/skytils/skytilsmod/mixins/renderer/MixinRenderGuardian.java50
-rw-r--r--src/main/java/skytils/skytilsmod/mixins/renderer/MixinRenderLiving.java51
-rw-r--r--src/main/kotlin/skytils/skytilsmod/events/CheckRenderEntityEvent.kt2
-rw-r--r--src/main/kotlin/skytils/skytilsmod/features/impl/misc/SlayerFeatures.kt2
-rw-r--r--src/main/resources/mixins.skytils.json2
6 files changed, 107 insertions, 3 deletions
diff --git a/src/main/java/skytils/skytilsmod/mixins/renderer/MixinRender.java b/src/main/java/skytils/skytilsmod/mixins/renderer/MixinRender.java
index ea3fdac1..f0d0cb53 100644
--- a/src/main/java/skytils/skytilsmod/mixins/renderer/MixinRender.java
+++ b/src/main/java/skytils/skytilsmod/mixins/renderer/MixinRender.java
@@ -24,6 +24,7 @@ import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.culling.ICamera;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLiving;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.Vec3;
import net.minecraftforge.common.MinecraftForge;
@@ -41,7 +42,7 @@ public abstract class MixinRender<T extends Entity> {
@Inject(method = "shouldRender", at = @At("HEAD"), cancellable = true)
private void shouldRender(T livingEntity, ICamera camera, double camX, double camY, double camZ, CallbackInfoReturnable<Boolean> cir) {
try {
- if (MinecraftForge.EVENT_BUS.post(new CheckRenderEntityEvent<>(livingEntity, camera, camX, camY, camZ))) cir.setReturnValue(false);
+ if (!(livingEntity instanceof EntityLiving)) if (MinecraftForge.EVENT_BUS.post(new CheckRenderEntityEvent<>(livingEntity, camera, camX, camY, camZ))) cir.setReturnValue(false);
} catch (Throwable e) {
Minecraft.getMinecraft().ingameGUI.getChatGUI().printChatMessage(new ChatComponentText("§cSkytils caught and logged an exception at CheckRenderEntityEvent. Please report this on the Discord server."));
e.printStackTrace();
diff --git a/src/main/java/skytils/skytilsmod/mixins/renderer/MixinRenderGuardian.java b/src/main/java/skytils/skytilsmod/mixins/renderer/MixinRenderGuardian.java
new file mode 100644
index 00000000..b02cc70f
--- /dev/null
+++ b/src/main/java/skytils/skytilsmod/mixins/renderer/MixinRenderGuardian.java
@@ -0,0 +1,50 @@
+/*
+ * Skytils - Hypixel Skyblock Quality of Life Mod
+ * Copyright (C) 2021 Skytils
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package skytils.skytilsmod.mixins.renderer;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.model.ModelBase;
+import net.minecraft.client.renderer.culling.ICamera;
+import net.minecraft.client.renderer.entity.RenderGuardian;
+import net.minecraft.client.renderer.entity.RenderLiving;
+import net.minecraft.client.renderer.entity.RenderManager;
+import net.minecraft.entity.monster.EntityGuardian;
+import net.minecraft.util.ChatComponentText;
+import net.minecraftforge.common.MinecraftForge;
+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.CallbackInfoReturnable;
+import skytils.skytilsmod.events.CheckRenderEntityEvent;
+
+@Mixin(RenderGuardian.class)
+public abstract class MixinRenderGuardian extends RenderLiving<EntityGuardian> {
+ public MixinRenderGuardian(RenderManager rendermanagerIn, ModelBase modelbaseIn, float shadowsizeIn) {
+ super(rendermanagerIn, modelbaseIn, shadowsizeIn);
+ }
+ @Inject(method = "shouldRender", at = @At("HEAD"), cancellable = true)
+ private void shouldRender(EntityGuardian livingEntity, ICamera camera, double camX, double camY, double camZ, CallbackInfoReturnable<Boolean> cir) {
+ try {
+ if (MinecraftForge.EVENT_BUS.post(new CheckRenderEntityEvent<>(livingEntity, camera, camX, camY, camZ))) cir.setReturnValue(false);
+ } catch (Throwable e) {
+ Minecraft.getMinecraft().ingameGUI.getChatGUI().printChatMessage(new ChatComponentText("§cSkytils caught and logged an exception at CheckRenderEntityEvent. Please report this on the Discord server."));
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/skytils/skytilsmod/mixins/renderer/MixinRenderLiving.java b/src/main/java/skytils/skytilsmod/mixins/renderer/MixinRenderLiving.java
new file mode 100644
index 00000000..5eea3c0b
--- /dev/null
+++ b/src/main/java/skytils/skytilsmod/mixins/renderer/MixinRenderLiving.java
@@ -0,0 +1,51 @@
+/*
+ * Skytils - Hypixel Skyblock Quality of Life Mod
+ * Copyright (C) 2021 Skytils
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package skytils.skytilsmod.mixins.renderer;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.model.ModelBase;
+import net.minecraft.client.renderer.culling.ICamera;
+import net.minecraft.client.renderer.entity.Render;
+import net.minecraft.client.renderer.entity.RenderLiving;
+import net.minecraft.client.renderer.entity.RenderManager;
+import net.minecraft.entity.EntityLiving;
+import net.minecraft.entity.monster.EntityGuardian;
+import net.minecraft.util.ChatComponentText;
+import net.minecraftforge.common.MinecraftForge;
+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.CallbackInfoReturnable;
+import skytils.skytilsmod.events.CheckRenderEntityEvent;
+
+@Mixin(RenderLiving.class)
+public abstract class MixinRenderLiving<T extends EntityLiving> extends Render<T> {
+ protected MixinRenderLiving(RenderManager renderManager) {
+ super(renderManager);
+ }
+ @Inject(method = "shouldRender", at = @At("HEAD"), cancellable = true)
+ private void shouldRender(T livingEntity, ICamera camera, double camX, double camY, double camZ, CallbackInfoReturnable<Boolean> cir) {
+ try {
+ if (!(livingEntity instanceof EntityGuardian)) if (MinecraftForge.EVENT_BUS.post(new CheckRenderEntityEvent<>(livingEntity, camera, camX, camY, camZ))) cir.setReturnValue(false);
+ } catch (Throwable e) {
+ Minecraft.getMinecraft().ingameGUI.getChatGUI().printChatMessage(new ChatComponentText("§cSkytils caught and logged an exception at CheckRenderEntityEvent. Please report this on the Discord server."));
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/kotlin/skytils/skytilsmod/events/CheckRenderEntityEvent.kt b/src/main/kotlin/skytils/skytilsmod/events/CheckRenderEntityEvent.kt
index b750b751..a99aeb9b 100644
--- a/src/main/kotlin/skytils/skytilsmod/events/CheckRenderEntityEvent.kt
+++ b/src/main/kotlin/skytils/skytilsmod/events/CheckRenderEntityEvent.kt
@@ -23,7 +23,7 @@ import net.minecraftforge.fml.common.eventhandler.Cancelable
import net.minecraftforge.fml.common.eventhandler.Event
@Cancelable
-class CheckRenderEntityEvent<T : Entity?>(
+class CheckRenderEntityEvent<T : Entity>(
val entity: T,
val camera: ICamera,
val camX: Double,
diff --git a/src/main/kotlin/skytils/skytilsmod/features/impl/misc/SlayerFeatures.kt b/src/main/kotlin/skytils/skytilsmod/features/impl/misc/SlayerFeatures.kt
index 42e0d2b4..af22fdea 100644
--- a/src/main/kotlin/skytils/skytilsmod/features/impl/misc/SlayerFeatures.kt
+++ b/src/main/kotlin/skytils/skytilsmod/features/impl/misc/SlayerFeatures.kt
@@ -353,7 +353,7 @@ class SlayerFeatures {
@SubscribeEvent
fun onCheckRender(event: CheckRenderEntityEvent<*>) {
// TODO force someone to test this
- if (!Skytils.config.hideOthersBrokenHeartRadiation || event.entity !is EntityGuardian) return
+ if (!Skytils.config.hideOthersBrokenHeartRadiation || !event.entity.isInvisible || event.entity !is EntityGuardian) return
if (slayerEntity != null && slayerEntity is EntityEnderman) {
if (slayerEntity!!.isRiding) {
printDebugMessage("Slayer is Riding")
diff --git a/src/main/resources/mixins.skytils.json b/src/main/resources/mixins.skytils.json
index 903b61ee..a190e72f 100644
--- a/src/main/resources/mixins.skytils.json
+++ b/src/main/resources/mixins.skytils.json
@@ -43,8 +43,10 @@
"renderer.MixinRender",
"renderer.MixinRenderBat",
"renderer.MixinRenderEntityItem",
+ "renderer.MixinRenderGuardian",
"renderer.MixinRenderItem",
"renderer.MixinRenderLightningBolt",
+ "renderer.MixinRenderLiving",
"renderer.MixinTileEntityChestRenderer",
"renderer.MixinTileEntityItemStackRenderer",
"renderer.MixinTileEntitySkullRenderer",