diff --git a/settings.gradle.kts b/settings.gradle.kts index 6e40af0..dcfbf04 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -6,6 +6,7 @@ pluginManagement { mavenCentral() maven("https://repo.polyfrost.org/releases") // Adds the Polyfrost maven repository to get Polyfrost Gradle Toolkit } + plugins { val pgtVersion = "0.6.5" // Sets the default versions for Polyfrost Gradle Toolkit id("org.polyfrost.multi-version.root") version pgtVersion @@ -13,7 +14,7 @@ pluginManagement { } plugins { - id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.+" + id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.+" } val mod_name: String by settings diff --git a/src/main/java/org/polyfrost/overflowanimations/ModDetectorPlugin.java b/src/main/java/org/polyfrost/overflowanimations/ModDetectorPlugin.java index 2079120..e893640 100644 --- a/src/main/java/org/polyfrost/overflowanimations/ModDetectorPlugin.java +++ b/src/main/java/org/polyfrost/overflowanimations/ModDetectorPlugin.java @@ -14,8 +14,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipFile; -public class ModDetectorPlugin implements IFMLLoadingPlugin { - +public final class ModDetectorPlugin implements IFMLLoadingPlugin { public ModDetectorPlugin() { try { File modsFolder = new File(Launch.minecraftHome, "mods"); @@ -112,7 +111,6 @@ public ModDetectorPlugin() { } } catch (Exception ignored) { - } } @@ -133,7 +131,6 @@ public String getSetupClass() { @Override public void injectData(Map map) { - } @Override diff --git a/src/main/java/org/polyfrost/overflowanimations/config/ItemPositionAdvancedSettings.java b/src/main/java/org/polyfrost/overflowanimations/config/ItemPositionAdvancedSettings.java index 647c85c..601004b 100644 --- a/src/main/java/org/polyfrost/overflowanimations/config/ItemPositionAdvancedSettings.java +++ b/src/main/java/org/polyfrost/overflowanimations/config/ItemPositionAdvancedSettings.java @@ -4,11 +4,9 @@ import cc.polyfrost.oneconfig.config.annotations.Checkbox; import cc.polyfrost.oneconfig.config.annotations.Slider; import cc.polyfrost.oneconfig.config.annotations.Switch; -import net.minecraft.client.Minecraft; @SuppressWarnings("unused") public class ItemPositionAdvancedSettings { - // Swing Position Customization @Slider( name = "Item Swing X Position", @@ -474,5 +472,4 @@ public class ItemPositionAdvancedSettings { fishingLinePositionY = 0.03f; fishingLinePositionZ = OldAnimationsSettings.fishingRodPosition ? 0.8f : 0.35f; }); - } diff --git a/src/main/java/org/polyfrost/overflowanimations/config/OldAnimationsSettings.java b/src/main/java/org/polyfrost/overflowanimations/config/OldAnimationsSettings.java index e1483c2..0efa826 100644 --- a/src/main/java/org/polyfrost/overflowanimations/config/OldAnimationsSettings.java +++ b/src/main/java/org/polyfrost/overflowanimations/config/OldAnimationsSettings.java @@ -12,7 +12,6 @@ import org.polyfrost.overflowanimations.hooks.PotionColors; public class OldAnimationsSettings extends Config { - // 2D Items @Switch( name = "2D Dropped Items", @@ -139,6 +138,13 @@ public class OldAnimationsSettings extends Config { ) public static boolean punching = true; + @Checkbox( + name = "1.7 Left-Right Click Item Usage", + description = "Re-enables the ability to right click (use item) when holding left click on a block. (WARNING: Does flag anti-cheats)", + subcategory = "Interaction" + ) + public static boolean leftRightClickItemUsage = true; + @Checkbox( name = "1.7 Punch-During-Usage Particles", description = "Spawns Particles whilst Punching During Usage", @@ -613,7 +619,7 @@ public class OldAnimationsSettings extends Config { advancedSettings.blockedRotationYaw = 0.0F; advancedSettings.blockedRotationPitch = 0.0F; advancedSettings.blockedRotationRoll = 0.0F; - advancedSettings. blockedScale = 0.0F; + advancedSettings.blockedScale = 0.0F; advancedSettings.droppedPositionX = 0.0F; advancedSettings.droppedPositionY = 0.0F; @@ -813,7 +819,8 @@ public void transferDulkirItemPositions() { public static boolean didTheFunnyDulkirThingElectricBoogaloo = false; - @Exclude public static final OldAnimationsSettings INSTANCE = new OldAnimationsSettings(); + @Exclude + public static final OldAnimationsSettings INSTANCE = new OldAnimationsSettings(); public OldAnimationsSettings() { super(new Mod(OverflowAnimations.NAME, ModType.PVP, "/overflowanimations_dark.svg", new VigilanceMigrator("./config/sk1eroldanimations.toml")), "overflowanimations.json"); @@ -830,6 +837,7 @@ public OldAnimationsSettings() { addDependency("punchingParticles", "oldBlockhitting"); addDependency("adventureParticles", "oldBlockhitting"); addDependency("adventurePunching", "oldBlockhitting"); + addDependency("useItemWhenMining", "oldBlockhitting"); addDependency("adventureParticles", "punchingParticles"); addDependency("punchingParticles", "punching"); addDependency("adventureParticles", "punching"); diff --git a/src/main/java/org/polyfrost/overflowanimations/hooks/AnimationExportUtils.java b/src/main/java/org/polyfrost/overflowanimations/hooks/AnimationExportUtils.java index 7088c1b..3b8bd61 100644 --- a/src/main/java/org/polyfrost/overflowanimations/hooks/AnimationExportUtils.java +++ b/src/main/java/org/polyfrost/overflowanimations/hooks/AnimationExportUtils.java @@ -18,10 +18,12 @@ import java.io.File; import java.util.Base64; -public class AnimationExportUtils { - +public final class AnimationExportUtils { private static final Gson GSON = new Gson(); + private AnimationExportUtils() { + } + public static void exportItemPositions() { String string = Base64.getEncoder().encodeToString(GSON.toJson(new OverflowConfigData()).getBytes()); StringSelection selection = new StringSelection(string); diff --git a/src/main/java/org/polyfrost/overflowanimations/hooks/DebugCrosshairHook.java b/src/main/java/org/polyfrost/overflowanimations/hooks/DebugCrosshairHook.java index d34e38a..d8b5207 100644 --- a/src/main/java/org/polyfrost/overflowanimations/hooks/DebugCrosshairHook.java +++ b/src/main/java/org/polyfrost/overflowanimations/hooks/DebugCrosshairHook.java @@ -10,14 +10,16 @@ import org.lwjgl.opengl.GL11; import org.polyfrost.overflowanimations.util.MathUtils; -public class DebugCrosshairHook { +public final class DebugCrosshairHook { + private DebugCrosshairHook() { + } public static void renderDirections(float partialTicks, Minecraft mc) { GlStateManager.pushMatrix(); - GlStateManager.translate((float)(UResolution.getScaledWidth() / 2), (float)(UResolution.getScaledHeight() / 2), 100); + GlStateManager.translate((float) (UResolution.getScaledWidth() / 2), (float) (UResolution.getScaledHeight() / 2), 100); Entity entity = mc.getRenderViewEntity(); - GlStateManager.rotate(MathUtils.interp(entity.prevRotationPitch, entity.rotationPitch, partialTicks), -1.0F, 0.0F, 0.0F); - GlStateManager.rotate(MathUtils.interp(entity.prevRotationYaw , entity.rotationYaw, partialTicks), 0.0F, 1.0F, 0.0F); + GlStateManager.rotate(MathUtils.lerp(entity.prevRotationPitch, entity.rotationPitch, partialTicks), -1.0F, 0.0F, 0.0F); + GlStateManager.rotate(MathUtils.lerp(entity.prevRotationYaw, entity.rotationYaw, partialTicks), 0.0F, 1.0F, 0.0F); GlStateManager.scale(-1.0F, -1.0F, -1.0F); GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); @@ -50,5 +52,4 @@ public static void renderDirections(float partialTicks, Minecraft mc) { GlStateManager.enableTexture2D(); GlStateManager.popMatrix(); } - } diff --git a/src/main/java/org/polyfrost/overflowanimations/hooks/DebugOverlayHook.java b/src/main/java/org/polyfrost/overflowanimations/hooks/DebugOverlayHook.java index a045b40..8289762 100644 --- a/src/main/java/org/polyfrost/overflowanimations/hooks/DebugOverlayHook.java +++ b/src/main/java/org/polyfrost/overflowanimations/hooks/DebugOverlayHook.java @@ -1,6 +1,5 @@ package org.polyfrost.overflowanimations.hooks; -import org.polyfrost.overflowanimations.config.OldAnimationsSettings; import com.google.common.collect.Lists; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.chunk.RenderChunk; @@ -11,15 +10,19 @@ import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.chunk.Chunk; import net.minecraftforge.fml.common.FMLCommonHandler; +import org.polyfrost.overflowanimations.config.OldAnimationsSettings; import java.util.List; /** * This is obviously quite an intrusive overwrite, so we put it in a hook so other mods can inject into it easier. */ -public class DebugOverlayHook { +public final class DebugOverlayHook { private static float overflowEyeHeight; + private DebugOverlayHook() { + } + public static List getDebugInfoLeft() { final Minecraft mc = Minecraft.getMinecraft(); BlockPos blockpos = new BlockPos(mc.getRenderViewEntity().posX, mc.getRenderViewEntity().getEntityBoundingBox().minY, mc.getRenderViewEntity().posZ); diff --git a/src/main/java/org/polyfrost/overflowanimations/hooks/DroppedItemHook.java b/src/main/java/org/polyfrost/overflowanimations/hooks/DroppedItemHook.java index bdc7be8..a9c5dd4 100644 --- a/src/main/java/org/polyfrost/overflowanimations/hooks/DroppedItemHook.java +++ b/src/main/java/org/polyfrost/overflowanimations/hooks/DroppedItemHook.java @@ -2,12 +2,13 @@ import org.polyfrost.overflowanimations.OverflowAnimations; -public class DroppedItemHook { +public final class DroppedItemHook { + private DroppedItemHook() { + } public static boolean isItemDropped; - public static boolean isItemPhysicsAndEntityDropped() { - return OverflowAnimations.isItemPhysics && isItemDropped; + public static boolean isItemPhysicsAndEntityNotDropped() { + return !OverflowAnimations.isItemPhysics || !isItemDropped; } - } \ No newline at end of file diff --git a/src/main/java/org/polyfrost/overflowanimations/hooks/HitColorHook.java b/src/main/java/org/polyfrost/overflowanimations/hooks/HitColorHook.java index c364d9f..f05c691 100644 --- a/src/main/java/org/polyfrost/overflowanimations/hooks/HitColorHook.java +++ b/src/main/java/org/polyfrost/overflowanimations/hooks/HitColorHook.java @@ -8,7 +8,9 @@ import org.polyfrost.overflowanimations.OverflowAnimations; import org.polyfrost.overflowanimations.mixin.interfaces.RendererLivingEntityInvoker; -public class HitColorHook { +public final class HitColorHook { + private HitColorHook() { + } public static void renderHitColorPre(EntityLivingBase entitylivingbaseIn, boolean bl, float partialTicks, RendererLivingEntity instance) { float brightness = entitylivingbaseIn.getBrightness(partialTicks); @@ -39,7 +41,7 @@ public static void renderHitColorPost(boolean bl) { GlStateManager.enableAlpha(); GlStateManager.enableTexture2D(); } + Minecraft.getMinecraft().entityRenderer.enableLightmap(); } - } diff --git a/src/main/java/org/polyfrost/overflowanimations/hooks/OverflowConfigData.java b/src/main/java/org/polyfrost/overflowanimations/hooks/OverflowConfigData.java index dc694dd..d97a332 100644 --- a/src/main/java/org/polyfrost/overflowanimations/hooks/OverflowConfigData.java +++ b/src/main/java/org/polyfrost/overflowanimations/hooks/OverflowConfigData.java @@ -4,90 +4,89 @@ import org.polyfrost.overflowanimations.config.OldAnimationsSettings; public class OverflowConfigData { + public float itemPositionX; - public float itemPositionX = 0.0F; + public float itemPositionY; - public float itemPositionY = 0.0F; + public float itemPositionZ; - public float itemPositionZ = 0.0F; + public float itemRotationYaw; - public float itemRotationYaw = 0.0F; + public float itemRotationPitch; - public float itemRotationPitch = 0.0F; + public float itemRotationRoll; - public float itemRotationRoll = 0.0F; - - public float itemScale = 0.0F; + public float itemScale; // Swing Position Customization - public float itemSwingPositionX = 0.0F; + public float itemSwingPositionX; - public float itemSwingPositionY = 0.0F; + public float itemSwingPositionY; - public float itemSwingPositionZ = 0.0F; + public float itemSwingPositionZ; - public float itemSwingSpeed = 0.0F; + public float itemSwingSpeed; - public float itemSwingSpeedHaste = 0.0F; + public float itemSwingSpeedHaste; - public float itemSwingSpeedFatigue = 0.0F; + public float itemSwingSpeedFatigue; public boolean shouldScaleSwing = false; // Eating/Drinking Position - public float consumePositionX = 0.0F; + public float consumePositionX; - public float consumePositionY = 0.0F; + public float consumePositionY; - public float consumePositionZ = 0.0F; + public float consumePositionZ; - public float consumeRotationYaw = 0.0F; + public float consumeRotationYaw; - public float consumeRotationPitch = 0.0F; + public float consumeRotationPitch; - public float consumeRotationRoll = 0.0F; + public float consumeRotationRoll; - public float consumeScale = 0.0F; + public float consumeScale; - public float consumeIntensity = 0.0F; + public float consumeIntensity; - public float consumeSpeed = 0.0F; + public float consumeSpeed; public boolean shouldScaleEat = false; // Sword Block Position - public float blockedPositionX = 0.0F; + public float blockedPositionX; - public float blockedPositionY = 0.0F; + public float blockedPositionY; - public float blockedPositionZ = 0.0F; + public float blockedPositionZ; - public float blockedRotationYaw = 0.0F; + public float blockedRotationYaw; - public float blockedRotationPitch = 0.0F; + public float blockedRotationPitch; - public float blockedRotationRoll = 0.0F; + public float blockedRotationRoll; - public float blockedScale = 0.0F; + public float blockedScale; // Projectiles Position - public float projectilePositionX = 0.0F; + public float projectilePositionX; - public float projectilePositionY = 0.0F; + public float projectilePositionY; - public float projectilePositionZ = 0.0F; + public float projectilePositionZ; - public float projectileRotationYaw = 0.0F; + public float projectileRotationYaw; - public float projectileRotationPitch = 0.0F; + public float projectileRotationPitch; - public float projectileRotationRoll = 0.0F; + public float projectileRotationRoll; - public float projectileScale = 0.0F; + public float projectileScale; public OverflowConfigData() { - OldAnimationsSettings settings = OldAnimationsSettings.INSTANCE; - ItemPositionAdvancedSettings advanced = OldAnimationsSettings.advancedSettings; + final OldAnimationsSettings settings = OldAnimationsSettings.INSTANCE; + final ItemPositionAdvancedSettings advanced = OldAnimationsSettings.advancedSettings; itemPositionX = settings.itemPositionX; itemPositionY = settings.itemPositionY; itemPositionZ = settings.itemPositionZ; diff --git a/src/main/java/org/polyfrost/overflowanimations/hooks/PatcherConfigHook.java b/src/main/java/org/polyfrost/overflowanimations/hooks/PatcherConfigHook.java index ef00155..8f093d8 100644 --- a/src/main/java/org/polyfrost/overflowanimations/hooks/PatcherConfigHook.java +++ b/src/main/java/org/polyfrost/overflowanimations/hooks/PatcherConfigHook.java @@ -3,7 +3,10 @@ import club.sk1er.patcher.config.PatcherConfig; import org.polyfrost.overflowanimations.OverflowAnimations; -public class PatcherConfigHook { +public final class PatcherConfigHook { + private PatcherConfigHook() { + } + public static boolean isParallaxFixEnabled() { return OverflowAnimations.isPatcherPresent && PatcherConfig.parallaxFix; } diff --git a/src/main/java/org/polyfrost/overflowanimations/hooks/PotionColors.java b/src/main/java/org/polyfrost/overflowanimations/hooks/PotionColors.java index e64a5b5..f6a40d1 100644 --- a/src/main/java/org/polyfrost/overflowanimations/hooks/PotionColors.java +++ b/src/main/java/org/polyfrost/overflowanimations/hooks/PotionColors.java @@ -3,8 +3,7 @@ import java.util.HashMap; import java.util.Map; -public class PotionColors { - +public final class PotionColors { public static final Map POTION_COLORS; public static boolean shouldReload; @@ -13,6 +12,9 @@ public static void reloadColor() { shouldReload = true; } + private PotionColors() { + } + static { POTION_COLORS = new HashMap() {{ put(1, 3402751); @@ -40,5 +42,4 @@ public static void reloadColor() { put(23, 16262179); }}; } - } diff --git a/src/main/java/org/polyfrost/overflowanimations/hooks/SmoothSneakHook.java b/src/main/java/org/polyfrost/overflowanimations/hooks/SmoothSneakHook.java index 04ce345..fb58712 100644 --- a/src/main/java/org/polyfrost/overflowanimations/hooks/SmoothSneakHook.java +++ b/src/main/java/org/polyfrost/overflowanimations/hooks/SmoothSneakHook.java @@ -1,9 +1,10 @@ package org.polyfrost.overflowanimations.hooks; -import net.minecraft.client.Minecraft; import org.polyfrost.overflowanimations.config.OldAnimationsSettings; -public class SmoothSneakHook { +public final class SmoothSneakHook { + private SmoothSneakHook() { + } private static float sneakingHeight; @@ -11,12 +12,11 @@ public static void setSneakingHeight(float sneakingHeight) { SmoothSneakHook.sneakingHeight = sneakingHeight; } - public static float getSmoothSneak() { - if (OldAnimationsSettings.smoothSneaking && OldAnimationsSettings.INSTANCE.enabled) { + public static float getSmoothSneak(float originalEyeHeight) { + if (OldAnimationsSettings.INSTANCE.enabled && OldAnimationsSettings.smoothSneaking) { return sneakingHeight; } else { - return Minecraft.getMinecraft().getRenderViewEntity().getEyeHeight(); + return originalEyeHeight; } } - } diff --git a/src/main/java/org/polyfrost/overflowanimations/hooks/SwingHook.java b/src/main/java/org/polyfrost/overflowanimations/hooks/SwingHook.java index de38a80..1721b28 100644 --- a/src/main/java/org/polyfrost/overflowanimations/hooks/SwingHook.java +++ b/src/main/java/org/polyfrost/overflowanimations/hooks/SwingHook.java @@ -1,17 +1,24 @@ package org.polyfrost.overflowanimations.hooks; -import org.polyfrost.overflowanimations.mixin.interfaces.EntityLivingBaseInvoker; import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import org.polyfrost.overflowanimations.mixin.interfaces.EntityLivingBaseInvoker; -public class SwingHook { +public final class SwingHook { + private SwingHook() { + } + + public static boolean isNotSwinging(EntityPlayer player) { + return !player.isSwingInProgress || + player.swingProgressInt >= ((EntityLivingBaseInvoker) player).getArmSwingAnimation() / 2 || + player.swingProgressInt < 0; + } public static void swingItem() { - final Minecraft mc = Minecraft.getMinecraft(); - if (!mc.thePlayer.isSwingInProgress || - mc.thePlayer.swingProgressInt >= ((EntityLivingBaseInvoker) mc.thePlayer).getArmSwingAnimation() / 2 || - mc.thePlayer.swingProgressInt < 0) { - mc.thePlayer.swingProgressInt = -1; - mc.thePlayer.isSwingInProgress = true; + final EntityPlayer player = Minecraft.getMinecraft().thePlayer; + if (isNotSwinging(player)) { + player.swingProgressInt = -1; + player.isSwingInProgress = true; } } } diff --git a/src/main/java/org/polyfrost/overflowanimations/hooks/TabOverlayHook.java b/src/main/java/org/polyfrost/overflowanimations/hooks/TabOverlayHook.java index 8efb5a0..c712b39 100644 --- a/src/main/java/org/polyfrost/overflowanimations/hooks/TabOverlayHook.java +++ b/src/main/java/org/polyfrost/overflowanimations/hooks/TabOverlayHook.java @@ -1,6 +1,5 @@ package org.polyfrost.overflowanimations.hooks; -import org.polyfrost.overflowanimations.mixin.interfaces.GuiPlayerTabOverlayInvoker; import com.google.common.collect.Ordering; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; @@ -13,6 +12,7 @@ import net.minecraft.scoreboard.ScoreObjective; import net.minecraft.scoreboard.ScorePlayerTeam; import net.minecraft.util.EnumChatFormatting; +import org.polyfrost.overflowanimations.mixin.interfaces.GuiPlayerTabOverlayInvoker; import java.util.List; diff --git a/src/main/java/org/polyfrost/overflowanimations/hooks/TransformTypeHook.java b/src/main/java/org/polyfrost/overflowanimations/hooks/TransformTypeHook.java index 601ee52..8ecf039 100644 --- a/src/main/java/org/polyfrost/overflowanimations/hooks/TransformTypeHook.java +++ b/src/main/java/org/polyfrost/overflowanimations/hooks/TransformTypeHook.java @@ -4,15 +4,12 @@ import java.util.EnumSet; -public class TransformTypeHook { - +public final class TransformTypeHook { public static ItemCameraTransforms.TransformType transform; - private static final EnumSet cameraTypes = - EnumSet.of( - ItemCameraTransforms.TransformType.GROUND, - ItemCameraTransforms.TransformType.FIXED - ); + private static final EnumSet ITEM_CAMERA_TYPES = EnumSet.of(ItemCameraTransforms.TransformType.GROUND, ItemCameraTransforms.TransformType.FIXED); + private TransformTypeHook() { + } public static boolean shouldBeSprite() { return shouldNotHaveGlint() || isRenderingInGUI(); @@ -23,6 +20,6 @@ public static boolean isRenderingInGUI() { } public static boolean shouldNotHaveGlint() { - return cameraTypes.contains(TransformTypeHook.transform); + return ITEM_CAMERA_TYPES.contains(TransformTypeHook.transform); } } diff --git a/src/main/java/org/polyfrost/overflowanimations/mixin/EntityRendererMixin.java b/src/main/java/org/polyfrost/overflowanimations/mixin/EntityRendererMixin.java index c3e4b35..56085ad 100644 --- a/src/main/java/org/polyfrost/overflowanimations/mixin/EntityRendererMixin.java +++ b/src/main/java/org/polyfrost/overflowanimations/mixin/EntityRendererMixin.java @@ -1,12 +1,12 @@ package org.polyfrost.overflowanimations.mixin; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.entity.Entity; import org.polyfrost.overflowanimations.config.OldAnimationsSettings; import org.polyfrost.overflowanimations.hooks.DebugCrosshairHook; import org.polyfrost.overflowanimations.hooks.DebugOverlayHook; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.EntityRenderer; -import net.minecraft.entity.Entity; import org.polyfrost.overflowanimations.hooks.SmoothSneakHook; import org.polyfrost.overflowanimations.util.MathUtils; import org.spongepowered.asm.mixin.Final; @@ -18,81 +18,90 @@ @Mixin(value = EntityRenderer.class, priority = 1001) public abstract class EntityRendererMixin { + @Shadow + private Minecraft mc; - @Shadow private Minecraft mc; - - @Shadow public abstract void setupOverlayRendering(); + @Shadow + public abstract void setupOverlayRendering(); @Unique @Final private final Minecraft overflowAnimations$mc = Minecraft.getMinecraft(); + @Unique private float overflow$height; + @Unique private float overflow$previousHeight; @Inject(method = "setupCameraTransform", at = @At("HEAD")) protected void overflowAnimations$getInterpolatedEyeHeight(float partialTicks, int pass, CallbackInfo ci) { - if (!OldAnimationsSettings.INSTANCE.enabled) { return; } - float interpEyeHeight = MathUtils.interp(overflow$previousHeight, overflow$height, partialTicks); - SmoothSneakHook.setSneakingHeight(interpEyeHeight); + if (OldAnimationsSettings.INSTANCE.enabled) { + final float interpEyeHeight = MathUtils.lerp(overflow$previousHeight, overflow$height, partialTicks); + SmoothSneakHook.setSneakingHeight(interpEyeHeight); + } } @ModifyVariable(method = "orientCamera", at = @At(value = "STORE", ordinal = 0), index = 3) public float overflowAnimations$modifyEyeHeight(float eyeHeight) { - return SmoothSneakHook.getSmoothSneak(); + return SmoothSneakHook.getSmoothSneak(eyeHeight); } @ModifyArg(method = "renderWorldDirections", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GlStateManager;translate(FFF)V"), index = 1) - public float overflowAnimations$syncCrossHair(float x) { - return SmoothSneakHook.getSmoothSneak(); + public float overflowAnimations$syncCrossHair(float eyeHeight) { + return SmoothSneakHook.getSmoothSneak(eyeHeight); } @Inject(method = "renderWorldDirections", at = @At("HEAD"), cancellable = true) public void overflowAnimations$renderCrosshair(float partialTicks, CallbackInfo ci) { - if ((OldAnimationsSettings.INSTANCE.debugCrosshairMode != 1) && OldAnimationsSettings.INSTANCE.enabled) + if (OldAnimationsSettings.INSTANCE.enabled && OldAnimationsSettings.INSTANCE.debugCrosshairMode != 1) { ci.cancel(); + } } @Inject(method = "updateRenderer", at = @At("HEAD")) private void overflowAnimations$interpolateHeight(CallbackInfo ci) { - if (!OldAnimationsSettings.INSTANCE.enabled) { return; } - Entity entity = overflowAnimations$mc.getRenderViewEntity(); - float eyeHeight = entity.getEyeHeight(); - overflow$previousHeight = overflow$height; - - if (OldAnimationsSettings.longerUnsneak) { - if (eyeHeight < overflow$height) + if (OldAnimationsSettings.INSTANCE.enabled) { + final Entity entity = overflowAnimations$mc.getRenderViewEntity(); + final float eyeHeight = entity.getEyeHeight(); + overflow$previousHeight = overflow$height; + if (OldAnimationsSettings.longerUnsneak) { + if (eyeHeight < overflow$height) { + overflow$height = eyeHeight; + } else { + overflow$height += (eyeHeight - overflow$height) * 0.5f; + } + } else { overflow$height = eyeHeight; - else - overflow$height += (eyeHeight - overflow$height) * 0.5f; - } else { - overflow$height = eyeHeight; + } + + DebugOverlayHook.setOverflowEyeHeight(overflow$height); } - DebugOverlayHook.setOverflowEyeHeight(overflow$height); } @Inject(method = "hurtCameraEffect", at = @At("HEAD"), cancellable = true) public void overflowAnimations$cancelHurtCamera(float partialTicks, CallbackInfo ci) { - if (OldAnimationsSettings.noHurtCam && OldAnimationsSettings.INSTANCE.enabled) + if (OldAnimationsSettings.INSTANCE.enabled && OldAnimationsSettings.noHurtCam) { ci.cancel(); + } } @Redirect(method = "setupViewBobbing", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GlStateManager;rotate(FFFF)V", ordinal = 2)) public void overflowAnimations$modernBobbing(float angle, float x, float y, float z) { - if (!OldAnimationsSettings.modernBobbing || !OldAnimationsSettings.INSTANCE.enabled) { + if (!OldAnimationsSettings.INSTANCE.enabled || !OldAnimationsSettings.modernBobbing) { GlStateManager.rotate(angle, x, y, z); } } @Inject(method = "updateCameraAndRender", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiIngame;renderGameOverlay(F)V")) private void draw(float partialTicks, long nanoTime, CallbackInfo ci) { - if (OldAnimationsSettings.INSTANCE.debugCrosshairMode == 2 && - OldAnimationsSettings.INSTANCE.enabled && mc.gameSettings.showDebugInfo && !mc.thePlayer.hasReducedDebug() && + if (OldAnimationsSettings.INSTANCE.enabled && + OldAnimationsSettings.INSTANCE.debugCrosshairMode == 2 && + mc.gameSettings.showDebugInfo && + !mc.thePlayer.hasReducedDebug() && !mc.gameSettings.reducedDebugInfo) { setupOverlayRendering(); DebugCrosshairHook.renderDirections(partialTicks, mc); } } - } diff --git a/src/main/java/org/polyfrost/overflowanimations/mixin/ForgeHooksClientMixin.java b/src/main/java/org/polyfrost/overflowanimations/mixin/ForgeHooksClientMixin.java index 1015400..fdaace6 100644 --- a/src/main/java/org/polyfrost/overflowanimations/mixin/ForgeHooksClientMixin.java +++ b/src/main/java/org/polyfrost/overflowanimations/mixin/ForgeHooksClientMixin.java @@ -1,17 +1,16 @@ package org.polyfrost.overflowanimations.mixin; -import org.polyfrost.overflowanimations.hooks.TransformTypeHook; import net.minecraft.client.renderer.block.model.ItemCameraTransforms; import net.minecraft.client.resources.model.IBakedModel; import net.minecraftforge.client.ForgeHooksClient; +import org.polyfrost.overflowanimations.hooks.TransformTypeHook; 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; @Mixin(value = ForgeHooksClient.class, remap = false) -public class ForgeHooksClientMixin { - +public abstract class ForgeHooksClientMixin { @Inject(method = "handleCameraTransforms", at = @At("HEAD")) private static void overflowAnimations$getCameraPerspective(IBakedModel model, ItemCameraTransforms.TransformType cameraTransformType, CallbackInfoReturnable cir) { TransformTypeHook.transform = cameraTransformType; diff --git a/src/main/java/org/polyfrost/overflowanimations/mixin/MinecraftMixin.java b/src/main/java/org/polyfrost/overflowanimations/mixin/MinecraftMixin.java index 6136859..9ff3c0d 100644 --- a/src/main/java/org/polyfrost/overflowanimations/mixin/MinecraftMixin.java +++ b/src/main/java/org/polyfrost/overflowanimations/mixin/MinecraftMixin.java @@ -24,34 +24,43 @@ @Mixin(Minecraft.class) public abstract class MinecraftMixin { - @Shadow public MovingObjectPosition objectMouseOver; + @Shadow public EffectRenderer effectRenderer; + @Shadow public EntityPlayerSP thePlayer; + @Shadow public WorldClient theWorld; + @Shadow private int leftClickCounter; - @Shadow public GameSettings gameSettings; + @Shadow + public GameSettings gameSettings; - @Shadow public EntityRenderer entityRenderer; + @Shadow + public EntityRenderer entityRenderer; + + @Shadow + private static Minecraft theMinecraft; @Inject(method = "sendClickBlockToController", at = @At("HEAD")) - public void overflowAnimations$blockHitAnimation(boolean leftClick, CallbackInfo ci) { - if (OldAnimationsSettings.oldBlockhitting && OldAnimationsSettings.punching && OldAnimationsSettings.INSTANCE.enabled && gameSettings.keyBindUseItem.isKeyDown()) { - if (leftClickCounter <= 0 && leftClick && objectMouseOver != null - //todo: fix the logic - && ((thePlayer.isUsingItem() && objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) || !OldAnimationsSettings.adventurePunching)) { - BlockPos posBlock = objectMouseOver.getBlockPos(); - if (!theWorld.isAirBlock(posBlock)) { - if ((thePlayer.isAllowEdit() || !OldAnimationsSettings.adventureParticles) && OldAnimationsSettings.punchingParticles) { - effectRenderer.addBlockHitEffects(posBlock, objectMouseOver.sideHit); + private void overflowAnimations$blockHitAnimation(boolean leftClick, CallbackInfo ci) { + if (OldAnimationsSettings.INSTANCE.enabled && OldAnimationsSettings.oldBlockhitting && OldAnimationsSettings.punching) { + if (this.thePlayer != null && !(this.thePlayer.getHeldItem() == null || !this.thePlayer.isUsingItem() || !theMinecraft.gameSettings.keyBindAttack.isKeyDown())) { + final boolean isBlockObject = this.objectMouseOver != null && this.objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK; + if (isBlockObject) { + // TODO: Fix adventure, pretty sure I forgot something idk + final BlockPos blockPos = this.objectMouseOver.getBlockPos(); + if ((this.thePlayer.isAllowEdit() || !OldAnimationsSettings.adventureParticles) && OldAnimationsSettings.punchingParticles) { + this.effectRenderer.addBlockHitEffects(blockPos, this.objectMouseOver.sideHit); } - if ((thePlayer.isAllowEdit() || !OldAnimationsSettings.adventureBlockHit)) { + + if ((this.thePlayer.isAllowEdit() || !OldAnimationsSettings.adventureBlockHit)) { SwingHook.swingItem(); } } @@ -60,31 +69,35 @@ public abstract class MinecraftMixin { } @Inject(method = "clickMouse", at = @At(value = "TAIL")) - public void overflowAnimations$onHitParticles(CallbackInfo ci) { + private void overflowAnimations$onHitParticles(CallbackInfo ci) { if (OldAnimationsSettings.visualSwing && OldAnimationsSettings.INSTANCE.enabled && leftClickCounter > 0) { - if (objectMouseOver != null && objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && - !objectMouseOver.entityHit.hitByEntity(thePlayer) && objectMouseOver.entityHit instanceof EntityLivingBase) { - if (thePlayer.fallDistance > 0.0F && !thePlayer.onGround && !thePlayer.isOnLadder() && - !thePlayer.isInWater() && !thePlayer.isPotionActive(Potion.blindness) && thePlayer.ridingEntity == null) { + if (objectMouseOver != null && objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && !objectMouseOver.entityHit.hitByEntity(thePlayer) && objectMouseOver.entityHit instanceof EntityLivingBase) { + if (thePlayer.fallDistance > 0.0F && + !thePlayer.onGround && + !thePlayer.isOnLadder() && + !thePlayer.isInWater() && + !thePlayer.isPotionActive(Potion.blindness) && + thePlayer.ridingEntity == null) { thePlayer.onCriticalHit(objectMouseOver.entityHit); } - if (EnchantmentHelper.getModifierForCreature(thePlayer.getHeldItem(), - ((EntityLivingBase)objectMouseOver.entityHit).getCreatureAttribute()) > 0.0F) { + + if (EnchantmentHelper.getModifierForCreature(thePlayer.getHeldItem(), ((EntityLivingBase) objectMouseOver.entityHit).getCreatureAttribute()) > 0.0F) { thePlayer.onEnchantmentCritical(objectMouseOver.entityHit); } } + SwingHook.swingItem(); } } @Redirect(method = "rightClickMouse", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/PlayerControllerMP;getIsHittingBlock()Z")) - public boolean overflowAnimations$enabledRightClick(PlayerControllerMP instance) { - return (!OldAnimationsSettings.oldBlockhitting || !OldAnimationsSettings.INSTANCE.enabled) && instance.getIsHittingBlock(); + private boolean overflowAnimations$enabledRightClick(PlayerControllerMP instance) { + return (!(OldAnimationsSettings.oldBlockhitting && OldAnimationsSettings.leftRightClickItemUsage) || !OldAnimationsSettings.INSTANCE.enabled) && instance.getIsHittingBlock(); } @Inject(method = "runTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/settings/KeyBinding;isPressed()Z", ordinal = 7)) - public void overflowAnimations$fakeBlockHit(CallbackInfo ci) { - if (OldAnimationsSettings.fakeBlockHit && OldAnimationsSettings.INSTANCE.enabled) { + private void overflowAnimations$fakeBlockHit(CallbackInfo ci) { + if (OldAnimationsSettings.INSTANCE.enabled && OldAnimationsSettings.fakeBlockHit) { while (gameSettings.keyBindAttack.isPressed()) { SwingHook.swingItem(); } @@ -92,17 +105,20 @@ public abstract class MinecraftMixin { } @Inject(method = "runTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/entity/EntityPlayerSP;dropOneItem(Z)Lnet/minecraft/entity/item/EntityItem;", shift = At.Shift.AFTER)) - public void overflowAnimations$dropItemSwing(CallbackInfo ci) { - if (OldAnimationsSettings.modernDropSwing && OldAnimationsSettings.INSTANCE.enabled && thePlayer.getHeldItem() != null) { + private void overflowAnimations$dropItemSwing(CallbackInfo ci) { + if (OldAnimationsSettings.INSTANCE.enabled && OldAnimationsSettings.modernDropSwing && thePlayer.getHeldItem() != null) { SwingHook.swingItem(); } } @Inject(method = "rightClickMouse", at = @At(value = "HEAD")) - public void overflowAnimations$funnyFidgetyThing(CallbackInfo ci) { - if (OldAnimationsSettings.funnyFidget && OldAnimationsSettings.INSTANCE.enabled && thePlayer != null && thePlayer.getHeldItem() != null && thePlayer.getHeldItem().getItemUseAction() != EnumAction.NONE) { + private void overflowAnimations$funnyFidgetyThing(CallbackInfo ci) { + if (OldAnimationsSettings.INSTANCE.enabled && + OldAnimationsSettings.funnyFidget && + thePlayer != null && + thePlayer.getHeldItem() != null && + thePlayer.getHeldItem().getItemUseAction() != EnumAction.NONE) { entityRenderer.itemRenderer.resetEquippedProgress(); } } - } diff --git a/src/main/java/org/polyfrost/overflowanimations/mixin/RenderFishMixin.java b/src/main/java/org/polyfrost/overflowanimations/mixin/RenderFishMixin.java index 4075050..c90b103 100644 --- a/src/main/java/org/polyfrost/overflowanimations/mixin/RenderFishMixin.java +++ b/src/main/java/org/polyfrost/overflowanimations/mixin/RenderFishMixin.java @@ -16,56 +16,58 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(value = RenderFish.class, priority = 2000) -public class RenderFishMixin { - +public abstract class RenderFishMixin { @ModifyVariable(method = "doRender(Lnet/minecraft/entity/projectile/EntityFishHook;DDDFF)V", at = @At(value = "STORE", ordinal = 0), index = 23) private Vec3 overflowAnimations$modifyLinePosition(Vec3 vec3) { - if (!OldAnimationsSettings.INSTANCE.enabled) { return vec3; } - ItemPositionAdvancedSettings advanced = OldAnimationsSettings.advancedSettings; - double fov = Minecraft.getMinecraft().gameSettings.fovSetting; - double decimalFov = fov / 110; - boolean isParallaxOffset = PatcherConfigHook.isParallaxFixEnabled(); - double xCoord = vec3.xCoord; - double yCoord = vec3.yCoord; - double zCoord = vec3.zCoord; - if (OldAnimationsSettings.fishingRodPosition && !OldAnimationsSettings.fixRod) { - xCoord = -0.5D + (isParallaxOffset ? -0.1D : 0.0D); - yCoord = 0.03D; - zCoord = 0.8D; - } else if (OldAnimationsSettings.fixRod) { - xCoord = (-decimalFov + (decimalFov / 2.5) - (decimalFov / 8)) + 0.16 + (isParallaxOffset ? 0.15D : 0.0D); - yCoord = 0.0D; - zCoord = 0.4D; - } - if (ItemPositionAdvancedSettings.customRodLine) { - xCoord = advanced.fishingLinePositionX; - yCoord = advanced.fishingLinePositionY; - zCoord = advanced.fishingLinePositionZ; + if (OldAnimationsSettings.INSTANCE.enabled) { + final ItemPositionAdvancedSettings advanced = OldAnimationsSettings.advancedSettings; + double fov = Minecraft.getMinecraft().gameSettings.fovSetting; + double decimalFov = fov / 110; + boolean isParallaxOffset = PatcherConfigHook.isParallaxFixEnabled(); + double xCoord = vec3.xCoord; + double yCoord = vec3.yCoord; + double zCoord = vec3.zCoord; + if (OldAnimationsSettings.fishingRodPosition && !OldAnimationsSettings.fixRod) { + xCoord = -0.5D + (isParallaxOffset ? -0.1D : 0.0D); + yCoord = 0.03D; + zCoord = 0.8D; + } else if (OldAnimationsSettings.fixRod) { + xCoord = (-decimalFov + (decimalFov / 2.5) - (decimalFov / 8)) + 0.16 + (isParallaxOffset ? 0.15D : 0.0D); + yCoord = 0.0D; + zCoord = 0.4D; + } + + if (ItemPositionAdvancedSettings.customRodLine) { + xCoord = advanced.fishingLinePositionX; + yCoord = advanced.fishingLinePositionY; + zCoord = advanced.fishingLinePositionZ; + } + + return new Vec3(xCoord, yCoord, zCoord); + } else { + return vec3; } - return new Vec3(xCoord, yCoord, zCoord); } - @ModifyConstant(method = "doRender(Lnet/minecraft/entity/projectile/EntityFishHook;DDDFF)V", - constant = @Constant(doubleValue = 0.8D) - ) + @ModifyConstant(method = "doRender(Lnet/minecraft/entity/projectile/EntityFishHook;DDDFF)V", constant = @Constant(doubleValue = 0.8D)) public double overflowAnimations$moveLinePosition(double constant) { return overflowAnimations$moveVecLine(constant); } @Redirect(method = "doRender(Lnet/minecraft/entity/projectile/EntityFishHook;DDDFF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/EntityPlayer;getEyeHeight()F")) public float overflowAnimations$modifyEyeHeight(EntityPlayer instance) { - return SmoothSneakHook.getSmoothSneak(); + return SmoothSneakHook.getSmoothSneak(instance.getEyeHeight()); } @Inject(method = "doRender(Lnet/minecraft/entity/projectile/EntityFishHook;DDDFF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/WorldRenderer;begin(ILnet/minecraft/client/renderer/vertex/VertexFormat;)V", ordinal = 1)) private void overflowAnimations$modifyLineThickness(EntityFishHook entity, double x, double y, double z, float entityYaw, float partialTicks, CallbackInfo ci) { - if (!OldAnimationsSettings.INSTANCE.enabled) { return; } - GL11.glLineWidth(1.0f + OldAnimationsSettings.INSTANCE.rodThickness); + if (OldAnimationsSettings.INSTANCE.enabled) { + GL11.glLineWidth(1.0f + OldAnimationsSettings.INSTANCE.rodThickness); + } } @Unique private double overflowAnimations$moveVecLine(double constant) { return OldAnimationsSettings.fishingStick && OldAnimationsSettings.INSTANCE.enabled ? 0.85D : constant; } - } diff --git a/src/main/java/org/polyfrost/overflowanimations/mixin/RenderItemMixin.java b/src/main/java/org/polyfrost/overflowanimations/mixin/RenderItemMixin.java index c3809ad..06c121a 100644 --- a/src/main/java/org/polyfrost/overflowanimations/mixin/RenderItemMixin.java +++ b/src/main/java/org/polyfrost/overflowanimations/mixin/RenderItemMixin.java @@ -35,17 +35,22 @@ @Mixin(RenderItem.class) public abstract class RenderItemMixin { - - // @Shadow // public abstract void renderItem(ItemStack stack, IBakedModel model); - @Shadow @Final + + @Shadow + @Final private static ResourceLocation RES_ITEM_GLINT; + // @Unique private ItemStack overflowanimations$stackGui = null; // @Unique private ItemStack overflowanimations$stackHeld = null; - @Unique private ItemStack overflowanimations$stack = null; + + @Unique + private ItemStack overflowanimations$stack = null; + @Unique public IBakedModel overflowAnimations$model; + @Unique private EntityLivingBase overflowAnimations$entityLivingBase; @@ -61,7 +66,7 @@ public abstract class RenderItemMixin { @ModifyArg(method = "renderModel(Lnet/minecraft/client/resources/model/IBakedModel;ILnet/minecraft/item/ItemStack;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/RenderItem;renderQuads(Lnet/minecraft/client/renderer/WorldRenderer;Ljava/util/List;ILnet/minecraft/item/ItemStack;)V", ordinal = 1), index = 1) private List overflowAnimations$changeToSprite(List quads) { - if (OldAnimationsSettings.itemSprites && OldAnimationsSettings.INSTANCE.enabled && !overflowAnimations$model.isGui3d() && TransformTypeHook.shouldBeSprite() && !DroppedItemHook.isItemPhysicsAndEntityDropped()) { + if (OldAnimationsSettings.itemSprites && OldAnimationsSettings.INSTANCE.enabled && !overflowAnimations$model.isGui3d() && TransformTypeHook.shouldBeSprite() && DroppedItemHook.isItemPhysicsAndEntityNotDropped()) { return quads.stream().filter(baked -> baked.getFace() == EnumFacing.SOUTH).collect(Collectors.toList()); } return quads; @@ -69,8 +74,7 @@ public abstract class RenderItemMixin { @ModifyArgs(method = "putQuadNormal", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/WorldRenderer;putNormal(FFF)V")) private void overflowAnimations$modifyNormalValue(Args args) { - if (OldAnimationsSettings.itemSprites && OldAnimationsSettings.itemSpritesColor && OldAnimationsSettings.INSTANCE.enabled && - !overflowAnimations$model.isGui3d() && !(Minecraft.getMinecraft().currentScreen instanceof GuiFlatPresets) && TransformTypeHook.shouldNotHaveGlint() && !DroppedItemHook.isItemPhysicsAndEntityDropped()) { + if (OldAnimationsSettings.INSTANCE.enabled && OldAnimationsSettings.itemSprites && OldAnimationsSettings.itemSpritesColor && !overflowAnimations$model.isGui3d() && !(Minecraft.getMinecraft().currentScreen instanceof GuiFlatPresets) && TransformTypeHook.shouldNotHaveGlint() && DroppedItemHook.isItemPhysicsAndEntityNotDropped()) { args.setAll(args.get(0), args.get(2), args.get(1)); } } @@ -81,9 +85,11 @@ public abstract class RenderItemMixin { if (OldAnimationsSettings.potionGlint && overflowanimations$stack.getItem() instanceof ItemPotion) { ci.cancel(); } - if (OldAnimationsSettings.itemSprites && OldAnimationsSettings.spritesGlint && TransformTypeHook.shouldNotHaveGlint() && !DroppedItemHook.isItemPhysicsAndEntityDropped()) { + + if (OldAnimationsSettings.itemSprites && OldAnimationsSettings.spritesGlint && TransformTypeHook.shouldNotHaveGlint() && DroppedItemHook.isItemPhysicsAndEntityNotDropped()) { ci.cancel(); } + if (OldAnimationsSettings.enchantmentGlintGui && TransformTypeHook.isRenderingInGUI() && !OverflowAnimations.isNEUPresent) { // if (OldAnimationsSettings.oldPotionsGui && overflowanimations$stackGui.getItem() instanceof ItemPotion) { return; } ci.cancel(); @@ -110,15 +116,15 @@ public abstract class RenderItemMixin { Block block = ((ItemBlock) stack.getItem()).getBlock(); isCarpet = block instanceof BlockCarpet || block instanceof BlockSnow; } + if (cameraTransformType == ItemCameraTransforms.TransformType.FIRST_PERSON && !OldAnimationsSettings.lunarPositions) { if (OldAnimationsSettings.fishingRodPosition && isRod) { GlStateManager.rotate(180.0F, 0.0F, 1.0F, 0.0F); GlStateManager.rotate(50.0F, 0.0F, 0.0F, 1.0F); - } else if (OldAnimationsSettings.firstTransformations && OldAnimationsSettings.firstPersonCarpetPosition && isCarpet) { + } else if (OldAnimationsSettings.firstTransformations && OldAnimationsSettings.firstPersonCarpetPosition && isCarpet) { GlStateManager.translate(0.0F, -5.25F * 0.0625F, 0.0F); } - } else if (OldAnimationsSettings.thirdTransformations && cameraTransformType == ItemCameraTransforms.TransformType.THIRD_PERSON - && (overflowAnimations$entityLivingBase instanceof EntityPlayer || !OldAnimationsSettings.entityTransforms)) { + } else if (OldAnimationsSettings.thirdTransformations && cameraTransformType == ItemCameraTransforms.TransformType.THIRD_PERSON && (overflowAnimations$entityLivingBase instanceof EntityPlayer || !OldAnimationsSettings.entityTransforms)) { if (isRod) { GlStateManager.rotate(180.0F, 0.0F, 1.0F, 0.0F); GlStateManager.rotate(110.0F, 0.0F, 0.0F, 1.0F); @@ -126,12 +132,14 @@ public abstract class RenderItemMixin { } else if (OldAnimationsSettings.thirdPersonCarpetPosition && isCarpet) { GlStateManager.translate(0.0F, -0.25F, 0.0F); } + if (isBlock) { if (Block.getBlockFromItem(stack.getItem()).getRenderType() != 2) { GlStateManager.translate(-0.0285F, -0.0375F, 0.0285F); GlStateManager.rotate(-5.0f, 1.0f, 0.0f, 0.0f); GlStateManager.rotate(-5.0f, 0.0f, 0.0f, 1.0f); } + GlStateManager.scale(-1.0F, 1.0F, -1.0F); } } else if (cameraTransformType == ItemCameraTransforms.TransformType.GUI) { @@ -161,7 +169,8 @@ public abstract class RenderItemMixin { modelresourcelocation = new ModelResourceLocation("fishing_rod_cast", inventory); } else { modelresourcelocation = item.getModel(stack, entityplayer, entityplayer.getItemInUseCount()); - } if (modelresourcelocation != null) { + } + if (modelresourcelocation != null) { return instance.getModelManager().getModel(modelresourcelocation); } } @@ -335,5 +344,4 @@ public abstract class RenderItemMixin { // private IBakedModel overflowAnimations$getBottleModel(ItemStack stack) { // return ItemPotion.isSplash(stack.getMetadata()) ? CustomModelBakery.BOTTLE_SPLASH_EMPTY.getBakedModel() : CustomModelBakery.BOTTLE_DRINKABLE_EMPTY.getBakedModel(); // } - } diff --git a/src/main/java/org/polyfrost/overflowanimations/mixin/RendererLivingEntityMixin.java b/src/main/java/org/polyfrost/overflowanimations/mixin/RendererLivingEntityMixin.java index 8e59405..ef03a24 100644 --- a/src/main/java/org/polyfrost/overflowanimations/mixin/RendererLivingEntityMixin.java +++ b/src/main/java/org/polyfrost/overflowanimations/mixin/RendererLivingEntityMixin.java @@ -17,25 +17,27 @@ @Mixin(RendererLivingEntity.class) public abstract class RendererLivingEntityMixin extends Render { - protected RendererLivingEntityMixin(RenderManager renderManager) { super(renderManager); } @Inject(method = "doRender(Lnet/minecraft/entity/EntityLivingBase;DDDFF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GlStateManager;translate(FFF)V")) public void overflowAnimations$movePlayerModel(T entity, double x, double y, double z, float entityYaw, float partialTicks, CallbackInfo ci) { - if (OldAnimationsSettings.smoothModelSneak && OldAnimationsSettings.INSTANCE.enabled && - entity instanceof EntityPlayerSP && entity.getName().equals(Minecraft.getMinecraft().thePlayer.getName())) { + if (OldAnimationsSettings.INSTANCE.enabled && + OldAnimationsSettings.smoothModelSneak && + entity instanceof EntityPlayerSP && + entity.getName().equals(Minecraft.getMinecraft().thePlayer.getName())) { if (entity.isSneaking()) { GlStateManager.translate(0.0F, -0.2F, 0.0F); } - GlStateManager.translate(0.0F, 1.62F - SmoothSneakHook.getSmoothSneak(), 0.0F); + + GlStateManager.translate(0.0F, 1.62F - SmoothSneakHook.getSmoothSneak(entity.getEyeHeight()), 0.0F); } } @Inject(method = "rotateCorpse", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GlStateManager;rotate(FFFF)V", shift = At.Shift.AFTER)) public void overflowAnimations$rotateCorpse(T bat, float p_77043_2_, float p_77043_3_, float partialTicks, CallbackInfo ci) { - boolean player = bat.getName().equals(Minecraft.getMinecraft().thePlayer.getName()); + final boolean player = bat.getName().equals(Minecraft.getMinecraft().thePlayer.getName()); if (OldAnimationsSettings.INSTANCE.enabled) { if (OldAnimationsSettings.dinnerBoneMode && player) { overflowAnimations$dinnerboneRotation(bat); @@ -50,5 +52,4 @@ protected RendererLivingEntityMixin(RenderManager renderManager) { GlStateManager.translate(0.0f, entity.height + 0.1f, 0.0f); GlStateManager.rotate(180.0f, 0.0f, 0.0f, 1.0f); } - } diff --git a/src/main/java/org/polyfrost/overflowanimations/mixin/interfaces/EntityLivingBaseInvoker.java b/src/main/java/org/polyfrost/overflowanimations/mixin/interfaces/EntityLivingBaseInvoker.java index 2547e10..fd47787 100644 --- a/src/main/java/org/polyfrost/overflowanimations/mixin/interfaces/EntityLivingBaseInvoker.java +++ b/src/main/java/org/polyfrost/overflowanimations/mixin/interfaces/EntityLivingBaseInvoker.java @@ -6,7 +6,6 @@ @Mixin(EntityLivingBase.class) public interface EntityLivingBaseInvoker { - @Invoker("getArmSwingAnimationEnd") int getArmSwingAnimation(); } diff --git a/src/main/java/org/polyfrost/overflowanimations/util/MathUtils.java b/src/main/java/org/polyfrost/overflowanimations/util/MathUtils.java index da173cb..f461cd0 100644 --- a/src/main/java/org/polyfrost/overflowanimations/util/MathUtils.java +++ b/src/main/java/org/polyfrost/overflowanimations/util/MathUtils.java @@ -1,9 +1,10 @@ package org.polyfrost.overflowanimations.util; -public class MathUtils { +public final class MathUtils { + private MathUtils() { + } - public static float interp(float previous, float current, float partialTick) { + public static float lerp(float previous, float current, float partialTick) { return previous + (current - previous) * partialTick; } - } diff --git a/src/main/kotlin/org/polyfrost/overflowanimations/OverflowAnimations.kt b/src/main/kotlin/org/polyfrost/overflowanimations/OverflowAnimations.kt index ed0c2cc..79ca580 100644 --- a/src/main/kotlin/org/polyfrost/overflowanimations/OverflowAnimations.kt +++ b/src/main/kotlin/org/polyfrost/overflowanimations/OverflowAnimations.kt @@ -28,22 +28,26 @@ import java.net.URI modLanguageAdapter = "cc.polyfrost.oneconfig.utils.KotlinLanguageAdapter" ) object OverflowAnimations { - const val MODID: String = "@ID@" const val NAME: String = "@NAME@" const val VERSION: String = "@VER@" @JvmField var isPatcherPresent: Boolean = false + @JvmField var doTheFunnyDulkirThing = false + @JvmField var oldDulkirMod: Boolean = false private var customCrosshair = false + @JvmField var isDamageTintPresent: Boolean = false + @JvmField var isItemPhysics: Boolean = false + @JvmField var isNEUPresent: Boolean = false; @@ -76,9 +80,13 @@ object OverflowAnimations { if (customCrosshair) { OldAnimationsSettings.smoothModelSneak = false OldAnimationsSettings.INSTANCE.save() - Notifications.INSTANCE.send("OverflowAnimations", "Custom Crosshair Mod has been detected, which is written poorly and causes major issues with OverflowAnimations. Disabling Smooth Model Sneak. If you want a better crosshair mod, please click here to use PolyCrosshair instead.", 5000f, Runnable { - UDesktop.browse(URI("https://modrinth.com/mod/crosshair")) - }) + Notifications.INSTANCE.send( + "OverflowAnimations", + "Custom Crosshair Mod has been detected, which is written poorly and causes major issues with OverflowAnimations. Disabling Smooth Model Sneak. If you want a better crosshair mod, please click here to use PolyCrosshair instead.", + 5000f, + Runnable { + UDesktop.browse(URI("https://modrinth.com/mod/crosshair")) + }) } } @@ -102,5 +110,4 @@ object OverflowAnimations { private fun dulkirTrollage() { GuiUtils.displayScreen(PleaseMigrateDulkirModGui()) } - } \ No newline at end of file diff --git a/src/main/kotlin/org/polyfrost/overflowanimations/hooks/GlintModelHook.kt b/src/main/kotlin/org/polyfrost/overflowanimations/hooks/GlintModelHook.kt index 2879993..0169808 100644 --- a/src/main/kotlin/org/polyfrost/overflowanimations/hooks/GlintModelHook.kt +++ b/src/main/kotlin/org/polyfrost/overflowanimations/hooks/GlintModelHook.kt @@ -16,7 +16,6 @@ import org.lwjgl.opengl.GL11 import org.polyfrost.overflowanimations.mixin.interfaces.RenderItemInvoker object GlintModelHook { - private val glintMap = hashMapOf() fun getGlint(model: IBakedModel): IBakedModel = @@ -26,7 +25,11 @@ object GlintModelHook { data class HashedModel(val data: List) { constructor(model: IBakedModel) : this( - (EnumFacing.entries.flatMap { face -> model.getFaceQuads(face) } + model.generalQuads).flatMap { it.vertexData.slice(0..2) } + (EnumFacing.entries.flatMap { face -> model.getFaceQuads(face) } + model.generalQuads).flatMap { + it.vertexData.slice( + 0..2 + ) + } ) } @@ -41,8 +44,8 @@ object GlintModelHook { val blue = 204 / 255f val alpha = 255 / 255f - val tessellator = Tessellator.getInstance() - val worldrenderer = tessellator.worldRenderer + val tesselator = Tessellator.getInstance() + val vertexConsumer = tesselator.worldRenderer val currentTime = Minecraft.getSystemTime() val twentyPixels = 20.0 / 256.0 @@ -67,10 +70,10 @@ object GlintModelHook { GlStateManager.scale(0.5f, 0.5f, 0.5f) GlStateManager.translate(-0.5f, -0.5f, -0.5f) - worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX) - drawVertices(worldrenderer, a, twentyPixels) - drawVertices(worldrenderer, b - twentyPixels, twentyPixels) - tessellator.draw() + vertexConsumer.begin(7, DefaultVertexFormats.POSITION_TEX) + drawVertices(vertexConsumer, a, twentyPixels) + drawVertices(vertexConsumer, b - twentyPixels, twentyPixels) + tesselator.draw() GlStateManager.popMatrix() @@ -84,13 +87,12 @@ object GlintModelHook { mc.textureManager.bindTexture(TextureMap.locationBlocksTexture) } - private fun drawVertices(worldrenderer: WorldRenderer, uOffset: Double, twentyPixels: Double) { - worldrenderer.run { + private fun drawVertices(vertexConsumer: WorldRenderer, uOffset: Double, twentyPixels: Double) { + vertexConsumer.run { pos(0.0, 0.0, 0.0).tex(uOffset + twentyPixels * 4.0, twentyPixels).endVertex() pos(1.0, 0.0, 0.0).tex(uOffset + twentyPixels * 5.0, twentyPixels).endVertex() pos(1.0, 1.0, 0.0).tex(uOffset + twentyPixels, 0.0).endVertex() pos(0.0, 1.0, 0.0).tex(uOffset, 0.0).endVertex() } } - } \ No newline at end of file diff --git a/src/main/kotlin/org/polyfrost/overflowanimations/hooks/SkullModelHook.kt b/src/main/kotlin/org/polyfrost/overflowanimations/hooks/SkullModelHook.kt index 42f3dc7..9676a3a 100644 --- a/src/main/kotlin/org/polyfrost/overflowanimations/hooks/SkullModelHook.kt +++ b/src/main/kotlin/org/polyfrost/overflowanimations/hooks/SkullModelHook.kt @@ -1,7 +1,6 @@ package org.polyfrost.overflowanimations.hooks object SkullModelHook { - // fun getSkullModel(stack: ItemStack): IBakedModel { // return when (stack.metadata) { // 0 -> CustomModelBakery.SKULL_SKELETON.bakedModel @@ -11,5 +10,4 @@ object SkullModelHook { // else -> CustomModelBakery.SKULL_CHAR.bakedModel // } // } - } \ No newline at end of file diff --git a/src/main/kotlin/org/polyfrost/overflowanimations/init/CustomModelBakery.kt b/src/main/kotlin/org/polyfrost/overflowanimations/init/CustomModelBakery.kt index 461b106..4de2794 100644 --- a/src/main/kotlin/org/polyfrost/overflowanimations/init/CustomModelBakery.kt +++ b/src/main/kotlin/org/polyfrost/overflowanimations/init/CustomModelBakery.kt @@ -14,7 +14,6 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import org.polyfrost.overflowanimations.OverflowAnimations enum class CustomModelBakery(modelPath: String) { - BOTTLE_OVERLAY("item/bottle_overlay"), BOTTLE_DRINKABLE_EMPTY("item/bottle_drinkable_empty"), BOTTLE_SPLASH_EMPTY("item/bottle_splash_empty"), @@ -30,15 +29,16 @@ enum class CustomModelBakery(modelPath: String) { private set private fun stitch(map: TextureMap) { - loadedModel = ModelLoaderRegistry.getModel(resourceLocation).apply { textures.forEach { map.registerSprite(it) } } + loadedModel = + ModelLoaderRegistry.getModel(resourceLocation).apply { textures.forEach { map.registerSprite(it) } } } private fun bake() { - bakedModel = loadedModel.bake(loadedModel.defaultState, DefaultVertexFormats.ITEM, ModelLoader.defaultTextureGetter()) + bakedModel = + loadedModel.bake(loadedModel.defaultState, DefaultVertexFormats.ITEM, ModelLoader.defaultTextureGetter()) } companion object { - init { MinecraftForge.EVENT_BUS.register(this) } @@ -53,5 +53,4 @@ enum class CustomModelBakery(modelPath: String) { CustomModelBakery.entries.forEach { it.bake() } } } - } \ No newline at end of file