Jump to content

Recommended Posts

Posted (edited)

I am working in the latest MDK.  Minecraft 1.21.4, Forge 54.1.0.

I am trying to create a mixin.  The implementation doesn't matter.  Assume it is doing nothing more than logging to the console:

@Mixin(LevelRenderer.class)
public abstract class LevelRendererMixin {
    private static final Logger LOGGER = LogManager.getLogger("LevelRendererMixin");

    @Inject(method = "renderLevel", at = @At("TAIL"))
    private void onRenderLevel(
            com.mojang.blaze3d.resource.GraphicsResourceAllocator allocator,
            net.minecraft.client.DeltaTracker deltaTracker,
            boolean someFlag,
            Camera camera,
            GameRenderer gameRenderer,
            Matrix4f matrix1,
            Matrix4f matrix2,
            CallbackInfo ci
    ) {

Assuming my whole implementation is just to write something to console, it works perfectly fine in when I debug (runClient) in IntelliJ.  Whenever the Minecraft `renderLevel` runs every frame, my logging is overlaid at "TAIL".

Yes, this spams the sht out of the console.

But when I `build` and use the jar as a mod, it does not.  The mixin annotation processor shows to be loading, and my other parts of my mod work, but the nothing gets logged by my mixin.

I am apparently generating a proper `refmap` and it's in the jar root.  Other files are also in the jar appropriately, including mods.toml.  And all the naming and reference paths are correct.

I had to add this to my build.gradle to get my refmap into the jar ([name] obviously replaced):

tasks.register("copyRefmap", Copy) {
    dependsOn tasks.named("compileJava")
    from("${project.buildDir}/tmp/compileJava") {
        include "mixins.[name].refmap.json"
    }
    into("${project.buildDir}/resources/main")
}

tasks.named("processResources", ProcessResources).configure {
    dependsOn(tasks.named("copyRefmap"))
}

tasks.named("jar", Jar).configure {
    // Include the generated refmap from build/resources/main into the jar.
    from("${project.buildDir}/resources/main") {
        include "mixins.[name].refmap.json"
    }
}

 

Just for fun, here is my refmap in case something looks wrong to anybody:
 

{
  "mappings": {
    "com/[name]/mixin/LevelRendererMixin": {
      "renderLevel": "Lnet/minecraft/client/renderer/LevelRenderer;m_109599_(Lcom/mojang/blaze3d/resource/GraphicsResourceAllocator;Lnet/minecraft/client/DeltaTracker;ZLnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/GameRenderer;Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;)V"
    }
  },
  "data": {
    "searge": {
      "com/[name]/mixin/LevelRendererMixin": {
        "renderLevel": "Lnet/minecraft/client/renderer/LevelRenderer;m_109599_(Lcom/mojang/blaze3d/resource/GraphicsResourceAllocator;Lnet/minecraft/client/DeltaTracker;ZLnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/GameRenderer;Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;)V"
      }
    }
  }
}


TLDR;
My mixin works in dev, but not when built and run in an official Forge/Minecraft environment.  Like it's not overlaying/replacing the minecraft function.

What are some typical other things to check when a mixin works in dev, but not after build?

Edited by Suamere
actual question added

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Forge is probably the most feature loaded mod loader currently. You can change just about anything with the game mechanics by using mixins. You can also add more items and feature than what the docs show you. It is good to start with a Modding tutorial series like this one by Kaupenjoe.  Some good examples of what is possible with forge is clockwork, dynamic trees, and I guess create but its on fabric too.
    • I'm new to modding and trying to make a mod in 1.20.1. My mod currently just has a custom bow, but when I use my bow, it does not play the animation. I have the jsons and pngs in the right spots and I've compared my jsons with that of existing mods, everything seems to line up just fine. Anyone know what might be causing this? I've changed the item between a basic BowItem and a custom class extending from BowItem, even overriding the animation code, no dice. odysseus_bow.json: { "parent": "item/generated", "textures": { "layer0": "odyssey:item/odysseus_bow" }, "overrides": [ { "predicate": { "pulling": 1 }, "model": "odyssey:item/odysseus_bow_pulling_0" }, { "predicate": { "pulling": 1, "pull": 0.65 }, "model": "odyssey:item/odysseus_bow_pulling_1" }, { "predicate": { "pulling": 1, "pull": 0.9 }, "model": "odyssey:item/odysseus_bow_pulling_2" } ] } odysseus_bow_pulling_0.json: { "parent": "item/generated", "textures": { "layer0": "odyssey:item/odysseus_bow_pulling_0" }, "display": { "thirdperson_righthand": { "rotation": [ -80, 260, -40 ], "translation": [ -1, -2, 2.5 ], "scale": [ 1.2, 0.9, 1.2 ] }, "firstperson_righthand": { "rotation": [ 0, -90, 25 ], "translation": [ 1.13, 3.2, 1.13 ], "scale": [ 0.88, 0.68, 0.88 ] } } } (_1 and _2 are the same with the respective layer0)
    • Hello I've been having some issues with Multipart entities and that it is constantly taking damage. The video below shows the issues. Also the hit boxes that are moving constantly seem to be still, because you can still be seated on the hit box where it is suppose to be.  Here is some modified code taken from EnderDragonPart. public class TheHeartPart extends PartEntity<TheHeart> { public final TheHeart parentMob; public final String name; private final EntityDimensions size; public TheHeartPart(TheHeart pParentMob, String pName, float pWidth, float pHeight) { super(pParentMob); this.size = EntityDimensions.scalable(pWidth, pHeight); this.refreshDimensions(); this.parentMob = pParentMob; this.name = pName; } @Override protected void defineSynchedData() { } @Override protected void readAdditionalSaveData(CompoundTag pCompound) { } @Override protected void addAdditionalSaveData(CompoundTag pCompound) { } @Override public boolean isPickable() { return true; } @Nullable public ItemStack getPickResult() { return this.parentMob.getPickResult(); } @Override public boolean hurt(DamageSource pSource, float pAmount) { return false; //return this.isInvulnerableTo(pSource) ? false : this.parentMob.hurt(pSource, pAmount); } @Override public boolean is(Entity pEntity) { return this == pEntity || this.parentMob == pEntity; } @Override public Packet<ClientGamePacketListener> getAddEntityPacket() { throw new UnsupportedOperationException(); } @Override public EntityDimensions getDimensions(Pose pPose) { return this.size; } @Override public boolean shouldBeSaved() {return false;} } Any help is greatly appreciated!
    • I've been trying to run some modpacks through Prism launcher which haven't been working and I narrowed it down due to some forge issues. The issues only happen with modpacks using forge 1.20.1 so I tried to reinstall 1.20.1, but I keep getting this error log:https://pastebin.com/4w9pGURJ 
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.