Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
00404da
cleanup
beanbag44 Apr 26, 2026
d6e2ba8
cleanup unused imports and suppress more unnecessary warnings
beanbag44 Apr 26, 2026
e74c212
optimize imports, both kotlin and java folder
beanbag44 Apr 27, 2026
e5627e6
more suppression for unused (used) stuff
beanbag44 Apr 27, 2026
482841d
Merge branch '1.21.11' into improvement/config-system
beanbag44 Apr 28, 2026
6c74d35
checkpoint; doesnt compile in the slightest. About a million errors
beanbag44 Apr 30, 2026
f04e309
checkpoint 2; also doesnt compile in the slightest
beanbag44 May 2, 2026
48e3c6d
handle setting init and registration with tab and group paths handled…
beanbag44 May 3, 2026
f3fbf3a
Merge branch '1.21.11' into improvement/config-system
beanbag44 May 3, 2026
6c5e74d
fix syntax errors in modules and first pass of changes for new system
beanbag44 May 4, 2026
ff5937d
another checkpoint
beanbag44 May 8, 2026
18f1116
mostly finished changes in Config.kt and ConfigEditor.kt
beanbag44 May 8, 2026
455caa1
almost all compilation errors fixed, missing settingBlock group setti…
beanbag44 May 10, 2026
f7760d4
compiles but no baritone settings
beanbag44 May 12, 2026
2ca10f2
forEachSetting improvements in config editor and some grouping improv…
beanbag44 May 13, 2026
1198b07
improved config editing
beanbag44 May 14, 2026
5d5d2cc
better ElytraAltitudeControl setting layout
beanbag44 May 14, 2026
a1b5c71
Merge branch 'refs/heads/1.21.11' into improvement/config-system
beanbag44 May 15, 2026
a45c4fb
mostly fixed config command and added module a module dsl marker
beanbag44 May 15, 2026
37882ed
fix compilation errors
beanbag44 May 15, 2026
e46e67e
Merge branch '1.21.11' into improvement/config-system
beanbag44 May 15, 2026
44004cd
more comp errors
beanbag44 May 15, 2026
4e3b60b
fix ConfigCommand and remove setModulePriority in favor of a param in…
beanbag44 May 16, 2026
2b825b3
use modulePriority param for default ownerPriority value
beanbag44 May 16, 2026
f0fad2a
withEdits for setDefaultAutomationConfig and fix config commands not …
beanbag44 May 18, 2026
94d2307
small improvements
beanbag44 May 18, 2026
047dc37
heuristic-based persistent config migration to handle settings moving…
beanbag44 May 19, 2026
c25ef53
move value change listeners into the Setting class
beanbag44 May 20, 2026
a86a2f3
recursive hideAllExcepts as its cleaner and more intuitive
beanbag44 May 21, 2026
c999205
Merge branch '1.21.11' into improvement/config-system
beanbag44 May 21, 2026
c3f454d
compilation errors
beanbag44 May 21, 2026
0e60ae1
jackson move checkpoint
beanbag44 May 24, 2026
022783f
Merge branch '1.21.11' into improvement/config-system
beanbag44 May 24, 2026
5e7a3df
merge issues and kotlin module in gradle
beanbag44 May 24, 2026
eaec73a
Merge branch '1.21.11' into improvement/config-system
beanbag44 May 24, 2026
33221ad
merge issues
beanbag44 May 24, 2026
3f9a8ab
jackson config serializers
beanbag44 May 26, 2026
d71ddd8
compilation errors and base type adapters/load/save logic
beanbag44 May 28, 2026
f423622
actually loads. Some small issues still
beanbag44 May 29, 2026
4916b56
better serializer setup
beanbag44 May 29, 2026
6b0fa9c
better isModified
beanbag44 May 30, 2026
77b00bc
fixed json module order
beanbag44 May 31, 2026
161f9cc
fix collection setting issues
beanbag44 May 31, 2026
a1c54a6
cleanup
beanbag44 May 31, 2026
f0e055d
compiles
beanbag44 Jun 2, 2026
4d2d7f7
CollectionSetting isModified fix and JsonIncludeProperties for Bind
beanbag44 Jun 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 8 additions & 3 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ val discordIPCVersion: String by project
val classGraphVersion: String by project
val kotlinVersion: String by project
val ktorVersion: String by project
val jacksonVersion: String by project
val mockkVersion: String by project
val spairVersion: String by project
val lwjglVersion: String by project
Expand Down Expand Up @@ -80,6 +81,7 @@ repositories {
}

fabricApi {
@Suppress("UnstableApiUsage")
configureTests {
modId = "${base.archivesName}-tests"
eula = true
Expand Down Expand Up @@ -173,7 +175,10 @@ dependencies {
exclude(group = "org.slf4j")
}
includeLib("io.ktor:ktor-client-content-negotiation:$ktorVersion")
includeLib("io.ktor:ktor-serialization-gson:$ktorVersion")
includeLib("io.ktor:ktor-serialization-jackson:$ktorVersion")
includeLib("tools.jackson.core:jackson-core:$jacksonVersion")
includeLib("tools.jackson.core:jackson-databind:$jacksonVersion")
includeLib("tools.jackson.module:jackson-module-kotlin:$jacksonVersion")

// Add mods
modImplementation("com.github.rfresh2:baritone-fabric:$minecraftVersion-SNAPSHOT")
Expand Down Expand Up @@ -221,7 +226,7 @@ tasks {

kotlin {
compilerOptions {
freeCompilerArgs.addAll("-Xcontext-parameters", "-Xconsistent-data-class-copy-visibility")
freeCompilerArgs.addAll("-Xcontext-parameters", "-Xconsistent-data-class-copy-visibility", "-Xannotation-default-target=param-property")
}

jvmToolchain(21)
Expand Down Expand Up @@ -267,4 +272,4 @@ publishing {
}
}
}
}
}
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ baritoneVersion=1.14.0
discordIPCVersion=6f6b6cce17
classGraphVersion=4.8.184
ktorVersion=3.3.3
jacksonVersion=3.1.1
mockkVersion=1.14.7
spairVersion=1.90.0

Expand Down
21 changes: 15 additions & 6 deletions src/main/java/com/lambda/mixin/CrashReportMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,13 @@
package com.lambda.mixin;

import com.lambda.Lambda;
import com.lambda.config.Setting;
import com.lambda.config.Config.SettingLayer;
import com.lambda.module.Module;
import com.lambda.module.ModuleRegistry;
import com.lambda.util.DynamicExceptionKt;
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import kotlin.Unit;
import net.minecraft.client.MinecraftClient;
import net.minecraft.util.crash.CrashReport;
import net.minecraft.util.crash.ReportType;
Expand Down Expand Up @@ -54,7 +55,7 @@ void injectConstructor(String message, Throwable cause, CallbackInfo ci) {
@WrapMethod(method = "asString(Lnet/minecraft/util/crash/ReportType;Ljava/util/List;)Ljava/lang/String;")
String injectString(ReportType type, List<String> extraInfo, Operation<String> original) {
var list = new ArrayList<>(extraInfo);
list.add("If this issue is related to Lambda, check if other users have experienced this too, or create a new issue at " + Lambda.REPO_URL + "/issues.\n\n");
list.add("If this issue is related to Lambda, check if other users have experienced this too, or create a new issue at " + Lambda.RepoUrl + "/issues.\n\n");

if (MinecraftClient.getInstance() != null) {
list.add("Enabled modules:");
Expand All @@ -65,10 +66,18 @@ String injectString(ReportType type, List<String> extraInfo, Operation<String> o
.forEach(module -> {
list.add(String.format("\t%s", module.getName()));

module.getSettings()
.stream()
.filter(Setting::isModified)
.forEach(setting -> list.add(String.format("\t\t%s -> %s", setting.getName(), setting.getValue())));
module.forEachSetting$lambda(
module.getSettingLayers$lambda(),
true,
null,
(path, single) -> {
final var setting = single.getSetting();
if (setting.isModified()) {
list.add("\t\t" + String.join(".", path.stream().map(SettingLayer.Multiple::getName).toList()) + "." + setting.getName() + " -> " + setting.getValue());
}
return Unit.INSTANCE;
}
);
});
}

Expand Down
9 changes: 5 additions & 4 deletions src/main/java/com/lambda/mixin/MinecraftClientMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

package com.lambda.mixin;

import com.lambda.core.TimerManager;
import com.lambda.core.TimerHandler;
import com.lambda.event.EventFlow;
import com.lambda.event.events.*;
import com.lambda.gui.DearImGui;
Expand Down Expand Up @@ -127,6 +127,7 @@ private void onShutdown(CallbackInfo ci) {
* Inject after the thread field is set so that {@link ThreadExecutor#getThread}
* is available
*/
@SuppressWarnings("JavadocReference")
@Inject(at = @At(value = "FIELD", target = "Lnet/minecraft/client/MinecraftClient;thread:Ljava/lang/Thread;", shift = At.Shift.AFTER, ordinal = 0, opcode = Opcodes.PUTFIELD), method = "run")
private void onStartup(CallbackInfo ci) {
EventFlow.post(new ClientEvent.Startup());
Expand Down Expand Up @@ -191,10 +192,10 @@ void injectItemPick(Operation<Void> original) {

@WrapMethod(method = "getTargetMillisPerTick")
float getTargetMillisPerTick(float millis, Operation<Float> original) {
var length = TimerManager.INSTANCE.getLength();
var length = TimerHandler.INSTANCE.getLength();

if (length == TimerManager.DEFAULT_LENGTH) return original.call(millis);
else return (float) TimerManager.INSTANCE.getLength();
if (length == TimerHandler.DefaultLength) return original.call(millis);
else return (float) TimerHandler.INSTANCE.getLength();
}

@Inject(method = "updateWindowTitle", at = @At("HEAD"), cancellable = true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import baritone.Baritone;
import baritone.api.utils.Rotation;
import baritone.utils.player.BaritonePlayerContext;
import com.lambda.interaction.BaritoneManager;
import com.lambda.interaction.BaritoneHandler;
import com.lambda.interaction.managers.rotating.RotationManager;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import org.spongepowered.asm.mixin.Final;
Expand All @@ -37,7 +37,7 @@ public class BaritonePlayerContextMixin {
// Let baritone know the actual rotation
@ModifyReturnValue(method = "playerRotations", at = @At("RETURN"), remap = false)
Rotation syncRotationWithBaritone(Rotation original) {
if (baritone != BaritoneManager.getPrimary())
if (baritone != BaritoneHandler.getPrimary())
return original;

float yaw = (float) RotationManager.getActiveRotation().getYaw();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import baritone.api.event.events.RotationMoveEvent;
import baritone.api.utils.Rotation;
import baritone.behavior.LookBehavior;
import com.lambda.interaction.BaritoneManager;
import com.lambda.interaction.BaritoneHandler;
import com.lambda.interaction.managers.rotating.RotationManager;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
Expand All @@ -37,22 +37,22 @@ public class LookBehaviourMixin {
// Redirect baritone's rotations into our rotation engine
@Inject(method = "updateTarget", at = @At("HEAD"), cancellable = true)
void onTargetUpdate(Rotation rotation, boolean blockInteract, CallbackInfo ci) {
if (instance.baritone != BaritoneManager.getPrimary()) return;
if (instance.baritone != BaritoneHandler.getPrimary()) return;

RotationManager.handleBaritoneRotation(rotation.getYaw(), rotation.getPitch());
ci.cancel();
}

@Inject(method = "onPlayerUpdate", at = @At("HEAD"), cancellable = true)
void onUpdate(PlayerUpdateEvent event, CallbackInfo ci) {
if (instance.baritone != BaritoneManager.getPrimary()) return;
if (instance.baritone != BaritoneHandler.getPrimary()) return;

ci.cancel();
}

@Inject(method = "onPlayerRotationMove", at = @At("HEAD"), cancellable = true)
void onMovementUpdate(RotationMoveEvent event, CallbackInfo ci) {
if (instance.baritone != BaritoneManager.getPrimary()) return;
if (instance.baritone != BaritoneHandler.getPrimary()) return;

ci.cancel();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@

package com.lambda.mixin.render;

import com.lambda.graphics.outline.OutlineManager;
import com.lambda.graphics.outline.OutlineCapturingQueue;
import com.lambda.graphics.outline.OutlineHandler;
import com.lambda.graphics.outline.VertexCapture;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
Expand All @@ -42,7 +42,7 @@ private <S extends BlockEntityRenderState> void wrapRenderQueue(BlockEntityRende
Operation<Void> original) {
BlockPos pos = renderState.pos;

if (pos != null && OutlineManager.shouldCapture(pos)) {
if (pos != null && OutlineHandler.shouldCapture(pos)) {
VertexCapture.INSTANCE.beginCapture(pos);

boolean outlineOnly = !Vec3d.ofCenter(pos).isInRange(cameraState.pos, renderer.getRenderDistance());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

package com.lambda.mixin.render;

import com.lambda.graphics.outline.OutlineManager;
import com.lambda.graphics.outline.OutlineHandler;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.client.render.block.entity.BlockEntityRenderer;
import net.minecraft.util.math.Vec3d;
Expand All @@ -31,7 +31,7 @@ public interface BlockEntityRendererMixin<T extends BlockEntity> {

@Inject(method = "isInRenderDistance", at = @At("HEAD"), cancellable = true)
default void forceOutlineRenderDistance(T blockEntity, Vec3d pos, CallbackInfoReturnable<Boolean> cir) {
if (OutlineManager.INSTANCE.shouldCapture(blockEntity.getPos())) {
if (OutlineHandler.shouldCapture(blockEntity.getPos())) {
cir.setReturnValue(true);
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/lambda/mixin/render/CameraMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
package com.lambda.mixin.render;

import com.lambda.interaction.managers.rotating.RotationManager;
import com.lambda.module.modules.render.Freecam;
import com.lambda.module.modules.render.CameraTweaks;
import com.lambda.module.modules.render.FreeLook;
import com.lambda.module.modules.render.Freecam;
import com.lambda.module.modules.render.NoRender;
import net.minecraft.block.enums.CameraSubmersionType;
import net.minecraft.client.render.Camera;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

import com.lambda.Lambda;
import com.lambda.module.modules.client.Capes;
import com.lambda.network.CapeManager;
import com.lambda.network.CapeHandler;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import net.minecraft.client.render.command.OrderedRenderCommandQueue;
import net.minecraft.client.render.entity.feature.CapeFeatureRenderer;
Expand All @@ -43,8 +43,8 @@ Identifier renderCape(Identifier original, MatrixStack matrixStack, OrderedRende
if (entry == null) return original;

var profile = entry.getProfile();
if (!Capes.INSTANCE.isEnabled() || !CapeManager.INSTANCE.getCache().containsKey(profile.id())) return original;
if (!Capes.INSTANCE.isEnabled() || !CapeHandler.INSTANCE.getCache().containsKey(profile.id())) return original;

return Identifier.of("lambda", CapeManager.INSTANCE.getCache().get(profile.id()));
return Identifier.of("lambda", CapeHandler.INSTANCE.getCache().get(profile.id()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

package com.lambda.mixin.render;

import com.lambda.command.CommandManager;
import com.lambda.command.CommandHandler;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.mojang.brigadier.CommandDispatcher;
Expand All @@ -40,12 +40,12 @@ public abstract class ChatInputSuggestorMixin {

@ModifyVariable(method = "refresh", at = @At(value = "STORE"), index = 3)
private boolean refreshModify(boolean showCompletions) {
return CommandManager.INSTANCE.isCommand(textField.getText());
return CommandHandler.INSTANCE.isCommand(textField.getText());
}

@SuppressWarnings("unchecked")
@WrapOperation(method = "refresh", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;getCommandDispatcher()Lcom/mojang/brigadier/CommandDispatcher;"))
private CommandDispatcher<CommandSource> wrapRefresh(ClientPlayNetworkHandler instance, Operation<CommandDispatcher<CommandSource>> original) {
return (CommandDispatcher<CommandSource>) CommandManager.INSTANCE.currentDispatcher(textField.getText());
return (CommandDispatcher<CommandSource>) CommandHandler.INSTANCE.currentDispatcher(textField.getText());
}
}
6 changes: 3 additions & 3 deletions src/main/java/com/lambda/mixin/render/ChatScreenMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

package com.lambda.mixin.render;

import com.lambda.command.CommandManager;
import com.lambda.command.CommandHandler;
import net.minecraft.client.gui.screen.ChatScreen;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
Expand All @@ -28,8 +28,8 @@
public abstract class ChatScreenMixin {
@Inject(method = "sendMessage", at = @At("HEAD"), cancellable = true)
void sendMessageInject(String chatText, boolean addToHistory, CallbackInfo ci) {
if (!CommandManager.INSTANCE.isLambdaCommand(chatText)) return;
CommandManager.INSTANCE.executeCommand(chatText);
if (!CommandHandler.INSTANCE.isLambdaCommand(chatText)) return;
CommandHandler.INSTANCE.executeCommand(chatText);
ci.cancel();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import com.lambda.Lambda;
import com.lambda.module.modules.client.Capes;
import com.lambda.module.modules.render.NoRender;
import com.lambda.network.CapeManager;
import com.lambda.network.CapeHandler;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
Expand Down Expand Up @@ -50,10 +50,10 @@ private static Identifier injectElytra(Identifier original, BipedEntityRenderSta

var profile = entry.getProfile();

if (!Capes.INSTANCE.isEnabled() || !CapeManager.INSTANCE.getCache().containsKey(profile.id()))
if (!Capes.INSTANCE.isEnabled() || !CapeHandler.INSTANCE.getCache().containsKey(profile.id()))
return original;

return Identifier.of("lambda", CapeManager.INSTANCE.getCache().get(profile.id()));
return Identifier.of("lambda", CapeHandler.INSTANCE.getCache().get(profile.id()));
}

@WrapMethod(method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;ILnet/minecraft/client/render/entity/state/BipedEntityRenderState;FF)V")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
package com.lambda.mixin.render;

import com.lambda.graphics.outline.IEntityRenderState;
import com.lambda.graphics.outline.OutlineManager;
import com.lambda.graphics.outline.OutlineCapturingQueue;
import com.lambda.graphics.outline.OutlineHandler;
import com.lambda.graphics.outline.VertexCapture;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
Expand Down Expand Up @@ -51,7 +51,7 @@ private <S extends EntityRenderState> void wrapRenderQueue(EntityRenderer<?, S>
entityId = lambdaState.lambda$getEntityId();
}

if (entityId != -1 && OutlineManager.shouldCapture(entityId)) {
if (entityId != -1 && OutlineHandler.shouldCapture(entityId)) {
VertexCapture.INSTANCE.beginCapture(entityId);

OrderedRenderCommandQueueImpl wrappedQueue = new OutlineCapturingQueue((OrderedRenderCommandQueueImpl) queue, entityId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

package com.lambda.mixin.render;

import com.lambda.graphics.outline.OutlineManager;
import com.lambda.graphics.outline.OutlineHandler;
import com.lambda.module.modules.render.NoRender;
import net.minecraft.client.render.Frustum;
import net.minecraft.client.render.command.OrderedRenderCommandQueue;
Expand All @@ -37,7 +37,7 @@ public class EntityRendererMixin {
@Inject(method = "shouldRender(Lnet/minecraft/entity/Entity;Lnet/minecraft/client/render/Frustum;DDD)Z", at = @At("HEAD"), cancellable = true)
private void injectShouldRender(Entity entity, Frustum frustum, double x, double y, double z, CallbackInfoReturnable<Boolean> cir) {
if (NoRender.shouldOmitEntity(entity)) cir.cancel();
else if (OutlineManager.shouldCapture(entity.getId())) cir.setReturnValue(true);
else if (OutlineHandler.shouldCapture(entity.getId())) cir.setReturnValue(true);
}

@Inject(method = "renderLabelIfPresent", at = @At("HEAD"), cancellable = true)
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/lambda/mixin/render/GameRendererMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,9 @@

import com.lambda.event.EventFlow;
import com.lambda.event.events.RenderEvent;
import com.lambda.gui.DearImGui;
import com.lambda.graphics.RenderMain;
import com.lambda.graphics.outline.OutlineCapturingQueue;
import net.minecraft.client.render.command.OrderedRenderCommandQueueImpl;
import com.lambda.gui.DearImGui;
import com.lambda.module.modules.render.BlockOutline;
import com.lambda.module.modules.render.Bobbing;
import com.lambda.module.modules.render.NoRender;
Expand All @@ -36,6 +35,7 @@
import net.minecraft.client.render.GameRenderer;
import net.minecraft.client.render.RenderTickCounter;
import net.minecraft.client.render.WorldRenderer;
import net.minecraft.client.render.command.OrderedRenderCommandQueueImpl;
import net.minecraft.client.util.ObjectAllocator;
import net.minecraft.item.ItemStack;
import org.joml.Matrix4f;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@
package com.lambda.mixin.render;

import com.lambda.graphics.outline.OutlineCapturingQueue;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.command.OrderedRenderCommandQueue;
import net.minecraft.client.render.entity.ItemFrameEntityRenderer;
import net.minecraft.client.render.model.BlockStateModel;
import net.minecraft.client.util.math.MatrixStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;

@Mixin(ItemFrameEntityRenderer.class)
public class ItemFrameEntityRendererMixin {
Expand Down
Loading