Skip to content

Commit

Permalink
fix java edition style mipmaps
Browse files Browse the repository at this point in the history
  • Loading branch information
Jab125 committed Jan 10, 2025
1 parent 4bc4ff2 commit f928949
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package xyz.violaflower.legacy_tweaks;

import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.AbstractInsnNode;
import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.tree.MethodInsnNode;
import org.objectweb.asm.tree.MethodNode;
import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin;
import org.spongepowered.asm.mixin.extensibility.IMixinInfo;

import java.util.List;
import java.util.Set;

public class LegacyTweaksMixinPlugin implements IMixinConfigPlugin {
@Override
public void onLoad(String mixinPackage) {

}

@Override
public String getRefMapperConfig() {
return null;
}

@Override
public boolean shouldApplyMixin(String targetClassName, String mixinClassName) {
return true;
}

@Override
public void acceptTargets(Set<String> myTargets, Set<String> otherTargets) {

}

@Override
public List<String> getMixins() {
return null;
}

@Override
public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {
if (mixinClassName.contains("MipmapGeneratorMixin")) {
System.out.println(mixinClassName);
for (MethodNode method : targetClass.methods) {
for (AbstractInsnNode instruction : method.instructions) {
if (instruction.getOpcode() == Opcodes.AASTORE) {
method.instructions.insert(instruction, new MethodInsnNode(Opcodes.INVOKESTATIC, "xyz/violaflower/legacy_tweaks/helper/tweak/texture/MipmapTypeHelper", "aastoreMarker", "()V"));
}
}
}
}
}

@Override
public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@ private static void exportGeneratedMipmaps(NativeImage[] images, ResourceLocatio
}
}

// Dynamically added to MipmapGenerator via a mixin plugin
public static void aastoreMarker() {}

/// Adds manual mipmaps in `textures/ltmipmaps`
public static void addManualMipmaps(int mipmapLevels, NativeImage[] mipmaps, ResourceLocation currentResourceLocation) {
if (!Tweaks.MIPMAPPING.manualMipmapping.isEnabled()) return;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package xyz.violaflower.legacy_tweaks.mixin.client.tweak.mipmapping;

import com.llamalad7.mixinextras.sugar.Local;
import com.mojang.blaze3d.platform.NativeImage;
import net.minecraft.client.renderer.texture.MipmapGenerator;
import net.minecraft.resources.ResourceLocation;
import org.spongepowered.asm.mixin.Dynamic;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
Expand All @@ -27,10 +29,9 @@ private static void changeMipmapType(NativeImage[] nativeImages, int i, Callback
MipmapTypeHelper.setMipmapType(nativeImages, i, currentResourceLocation, cir);
}

@Inject(method = "generateMipLevels", at = @At("RETURN"))
private static void changeJavaMipmaps(NativeImage[] images, int mipmapLevels, CallbackInfoReturnable<NativeImage[]> cir) {
ResourceLocation currentResourceLocation = MipmapTypeHelper.currentResourceLocation;
if (currentResourceLocation == null) return; // if it's already been canceled, don't do it again.
MipmapTypeHelper.addManualMipmaps(mipmapLevels, cir.getReturnValue(), currentResourceLocation);
@Dynamic // this is some cursed stuff
@Inject(method = "generateMipLevels", at = @At(value = "INVOKE", target = "Lxyz/violaflower/legacy_tweaks/helper/tweak/texture/MipmapTypeHelper;aastoreMarker()V", ordinal = 2))
private static void changeJavaMipmaps(NativeImage[] images, int mipmapLevels, CallbackInfoReturnable<NativeImage[]> cir, @Local(ordinal = 1) int level, @Local(ordinal = 1) NativeImage[] nativeImages) {
MipmapTypeHelper.maybeGetMipmapForLevel(level, g -> nativeImages[level] = g, MipmapTypeHelper.currentResourceLocation);
}
}
1 change: 1 addition & 0 deletions src/main/resources/legacy_tweaks.mixins.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"required": true,
"package": "xyz.violaflower.legacy_tweaks.mixin",
"plugin": "xyz.violaflower.legacy_tweaks.LegacyTweaksMixinPlugin",
"compatibilityLevel": "JAVA_21",
"minVersion": "0.8",
"client": [
Expand Down

0 comments on commit f928949

Please sign in to comment.