Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[1.11.2] Item transformations with custom mesh definition and model loader

Featured Replies

Posted

I am trying to make an item similar forge's universal bucket, in that it can hold any fluid, and render differently depending on the fluid within. I basically just copied the model classes, and the loader, and the blockstate json from the forge source, and it is mostly working, the fluid and bottle have the right textures and stuff, but for some reason that I can't figure out, the transformations from forge:default-item are not getting applied in game.

 

Model class, including overridelist, model loader, and baked model: link

Item class, where the model and mesh definition are set in the initModel() method: link

The item's json file: link

 

The model loader is registered in my clientproxy class, and initModel() is called in the initModels() method of ModItems.class, and initModels() is called from my clientproxy class.

  • Author

Okay, I found a work around. I still don't know why it wasn't working, but I managed to make the transformations happen by hard coding them in in the baked model class.

On 22.4.2017 at 10:57 AM, mangoose said:

Okay, I found a work around. I still don't know why it wasn't working, but I managed to make the transformations happen by hard coding them in in the baked model class.

Any way you could show me on how u fixed it, seen to have the same problem ?

  • Author

private static ImmutableMap<TransformType, TRSRTransformation> itemTransforms() {
            TRSRTransformation thirdperson = get(0, 3, 1, 0, 0, 0, 0.55f);
            TRSRTransformation firstperson = get(1.13f, 3.2f, 1.13f, 0, -90, 25, 0.68f);
            ImmutableMap.Builder<TransformType, TRSRTransformation> builder = ImmutableMap.builder();
            builder.put(TransformType.GROUND,                  get(0, 2, 0, 0, 0, 0, 0.5f));
            builder.put(TransformType.HEAD,                    get(0, 13, 7, 0, 180, 0, 1));
            builder.put(TransformType.THIRD_PERSON_RIGHT_HAND, thirdperson);
            builder.put(TransformType.THIRD_PERSON_LEFT_HAND, leftify(thirdperson));
            builder.put(TransformType.FIRST_PERSON_RIGHT_HAND, firstperson);
            builder.put(TransformType.FIRST_PERSON_LEFT_HAND, leftify(firstperson));
            return (ImmutableMap) builder.build();
        }

        private static TRSRTransformation get(float tx, float ty, float tz, float ax, float ay, float az, float s) {
            return TRSRTransformation.blockCenterToCorner(new TRSRTransformation(
                    new Vector3f(tx / 16, ty / 16, tz / 16),
                    TRSRTransformation.quatFromXYZDegrees(new Vector3f(ax, ay, az)), new Vector3f(s, s, s), null));
        }

        private static final TRSRTransformation flipX = new TRSRTransformation(null, null, new Vector3f(-1, 1, 1),
                null);

        private static TRSRTransformation leftify(TRSRTransformation transform) {
            return TRSRTransformation.blockCenterToCorner(
                    flipX.compose(TRSRTransformation.blockCornerToCenter(transform)).compose(flipX));
        }

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...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.