Skip to content

Commit b0c8bfa

Browse files
committed
Fix renderer mixins
1 parent a6f5ffb commit b0c8bfa

3 files changed

Lines changed: 60 additions & 0 deletions

File tree

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package dev.ryanhcode.sable.neoforge.mixin.compatibility.create.belt;
2+
3+
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
4+
import com.llamalad7.mixinextras.sugar.Local;
5+
import com.simibubi.create.content.kinetics.belt.BeltBlockEntity;
6+
import com.simibubi.create.content.kinetics.belt.BeltRenderer;
7+
import dev.ryanhcode.sable.Sable;
8+
import dev.ryanhcode.sable.sublevel.ClientSubLevel;
9+
import net.minecraft.client.Camera;
10+
import net.minecraft.world.entity.Entity;
11+
import net.minecraft.world.phys.Vec3;
12+
import org.spongepowered.asm.mixin.Mixin;
13+
import org.spongepowered.asm.mixin.injection.At;
14+
import org.spongepowered.asm.mixin.injection.Redirect;
15+
16+
/**
17+
* Make upright items face the the camera properly on belts
18+
*/
19+
@Mixin(BeltRenderer.class)
20+
public class BeltRendererMixin {
21+
22+
@ModifyExpressionValue(method = "renderItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;getPosition()Lnet/minecraft/world/phys/Vec3;"))
23+
private Vec3 sable$renderViewEntityPosition(final Vec3 original, @Local(argsOnly = true) final BeltBlockEntity be) {
24+
final ClientSubLevel subLevel = Sable.HELPER.getContainingClient(be);
25+
if (subLevel != null) {
26+
return subLevel.renderPose().transformPositionInverse(original);
27+
} else {
28+
return original;
29+
}
30+
}
31+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package dev.ryanhcode.sable.neoforge.mixin.compatibility.create.depot;
2+
3+
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
4+
import com.llamalad7.mixinextras.sugar.Local;
5+
import com.simibubi.create.content.logistics.depot.DepotRenderer;
6+
import dev.ryanhcode.sable.Sable;
7+
import dev.ryanhcode.sable.sublevel.ClientSubLevel;
8+
import dev.ryanhcode.sable.sublevel.SubLevel;
9+
import net.minecraft.client.Minecraft;
10+
import net.minecraft.world.entity.Entity;
11+
import net.minecraft.world.phys.Vec3;
12+
import org.spongepowered.asm.mixin.Mixin;
13+
import org.spongepowered.asm.mixin.injection.At;
14+
import org.spongepowered.asm.mixin.injection.Redirect;
15+
16+
@Mixin(DepotRenderer.class)
17+
public class DepotRendererMixin {
18+
@ModifyExpressionValue(method = "renderItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;getPosition()Lnet/minecraft/world/phys/Vec3;"))
19+
private static Vec3 sable$renderViewEntityPosition(final Vec3 original, @Local(argsOnly = true) final Vec3 position) {
20+
final ClientSubLevel subLevel = Sable.HELPER.getContainingClient(position);
21+
if (subLevel != null) {
22+
return subLevel.renderPose().transformPositionInverse(original);
23+
} else {
24+
return original;
25+
}
26+
}
27+
}

neoforge/src/main/resources/sable-neoforge.mixins.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@
1111
"block_entity_visible.ClientHooksMixin",
1212
"camera_rotation.CameraMixin",
1313
"compatibility.create.behaviour_compatibility.harvester_block_entity.HarvesterRendererMixin",
14+
"compatibility.create.belt.BeltRendererMixin",
1415
"compatibility.create.big_outlines_interaction.BigOutlinesMixin",
1516
"compatibility.create.blaze_burner.BlazeBurnerBlockEntityMixin",
1617
"compatibility.create.contraptions.ContraptionControlsRendererMixin",
1718
"compatibility.create.contraptions.ContraptionHandlerClientMixin",
1819
"compatibility.create.contraptions.ContraptionVisualMixin",
1920
"compatibility.create.contraptions.VisualizationEventHandlerMixin",
21+
"compatibility.create.depot.DepotRendererMixin",
2022
"compatibility.create.fluid_handling.PipeConnectionMixin",
2123
"compatibility.create.frogports.ChainConveyorInteractionHandlerMixin",
2224
"compatibility.create.frogports.ChainConveyorRidingHandlerMixin",

0 commit comments

Comments
 (0)