aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/dulkirmod/mixins/MixinEntityRenderer.java21
-rw-r--r--src/main/kotlin/dulkirmod/DulkirMod.kt6
-rw-r--r--src/main/kotlin/dulkirmod/features/MemoryLeakFix.kt12
3 files changed, 24 insertions, 15 deletions
diff --git a/src/main/java/dulkirmod/mixins/MixinEntityRenderer.java b/src/main/java/dulkirmod/mixins/MixinEntityRenderer.java
index f754f2c..b7099c2 100644
--- a/src/main/java/dulkirmod/mixins/MixinEntityRenderer.java
+++ b/src/main/java/dulkirmod/mixins/MixinEntityRenderer.java
@@ -1,25 +1,16 @@
package dulkirmod.mixins;
-import dulkirmod.features.HurtCamSlider;
-import dulkirmod.features.ViewBobbing;
+import dulkirmod.config.DulkirConfig;
import net.minecraft.client.renderer.EntityRenderer;
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;
+import org.spongepowered.asm.mixin.injection.Constant;
+import org.spongepowered.asm.mixin.injection.ModifyConstant;
@Mixin(EntityRenderer.class)
public class MixinEntityRenderer {
- @Inject(method = "hurtCameraEffect", at = @At("HEAD"), cancellable = true)
- private void hurtCameraEffect(float partialTicks, CallbackInfo ci) {
- if (HurtCamSlider.INSTANCE.renderHurt(partialTicks))
- ci.cancel();
- }
-
- @Inject(method = "setupViewBobbing", at = @At("HEAD"), cancellable = true)
- private void modifyViewBobbing(float partialTicks, CallbackInfo ci) {
- if (ViewBobbing.INSTANCE.renderBob(partialTicks))
- ci.cancel();
+ @ModifyConstant(method = "hurtCameraEffect", constant = @Constant(floatValue = 14.0f))
+ private float hurtCameraEffect(float constant) {
+ return constant * DulkirConfig.INSTANCE.getHurtCamIntensity();
}
}
diff --git a/src/main/kotlin/dulkirmod/DulkirMod.kt b/src/main/kotlin/dulkirmod/DulkirMod.kt
index 6b955ef..70e029e 100644
--- a/src/main/kotlin/dulkirmod/DulkirMod.kt
+++ b/src/main/kotlin/dulkirmod/DulkirMod.kt
@@ -39,6 +39,7 @@ import kotlin.coroutines.EmptyCoroutineContext
class DulkirMod {
var lastLongUpdate: Long = 0
+ var lastLongerUpdate: Long = 0
@Mod.EventHandler
fun preInit(event: FMLPreInitializationEvent) {
@@ -117,6 +118,11 @@ class DulkirMod {
DragonFeatures.updateDragonDead()
lastLongUpdate = currTime
}
+
+ if (currTime - lastLongerUpdate > 5000) { // longer update
+ MemoryLeakFix.clearBlankStands()
+ lastLongerUpdate = currTime
+ }
}
@SubscribeEvent
diff --git a/src/main/kotlin/dulkirmod/features/MemoryLeakFix.kt b/src/main/kotlin/dulkirmod/features/MemoryLeakFix.kt
index dcb46ef..0bf768f 100644
--- a/src/main/kotlin/dulkirmod/features/MemoryLeakFix.kt
+++ b/src/main/kotlin/dulkirmod/features/MemoryLeakFix.kt
@@ -3,6 +3,7 @@ package dulkirmod.features
import dulkirmod.DulkirMod.Companion.mc
import dulkirmod.config.DulkirConfig
import net.minecraft.entity.Entity
+import net.minecraft.entity.item.EntityArmorStand
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import net.minecraftforge.fml.common.gameevent.TickEvent
@@ -31,4 +32,15 @@ object MemoryLeakFix {
private fun isNullVec(entity: Entity): Boolean {
return entity.posX == 0.0 && entity.posY == 0.0 && entity.posZ == 0.0
}
+
+ fun clearBlankStands() {
+ val world = mc.theWorld ?: return
+ val currentEnts = world.loadedEntityList
+ currentEnts.forEach {
+ if (it !is EntityArmorStand) return
+ if (it.name != "Armor Stand") return
+ if (it.inventory.any{slot -> slot != null}) return
+ world.removeEntityFromWorld(it.entityId)
+ }
+ }
} \ No newline at end of file