trinkets unfucking pt.1
Some checks failed
build / build (push) Has been cancelled

This commit is contained in:
Soph :3 2025-10-08 14:42:01 +03:00
parent 8c313ff6ea
commit 31a96a7c1a
7 changed files with 83 additions and 27 deletions

View file

@ -0,0 +1,8 @@
package konhaiii.powered_jetpacks;
import net.minecraft.item.ItemStack;
public interface PlayerEntityRenderStateTrinkets {
ItemStack powered_jetpacks$getTrinketsBack();
void powered_jetpacks$setTrinketsBack(ItemStack stack);
}

View file

@ -0,0 +1,23 @@
package konhaiii.powered_jetpacks.mixin.client;
import konhaiii.powered_jetpacks.PlayerEntityRenderStateTrinkets;
import net.minecraft.client.render.entity.state.PlayerEntityRenderState;
import net.minecraft.item.ItemStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
@Mixin(PlayerEntityRenderState.class)
public class PlayerEntityRenderStateMixin implements PlayerEntityRenderStateTrinkets {
@Unique
private ItemStack trinketsBack = ItemStack.EMPTY;
@Override
public ItemStack powered_jetpacks$getTrinketsBack() {
return trinketsBack;
}
@Override
public void powered_jetpacks$setTrinketsBack(ItemStack stack) {
this.trinketsBack = stack;
}
}

View file

@ -0,0 +1,36 @@
package konhaiii.powered_jetpacks.mixin.client;
import konhaiii.powered_jetpacks.PlayerEntityRenderStateTrinkets;
import konhaiii.powered_jetpacks.PoweredJetpacks;
import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.client.render.entity.PlayerEntityRenderer;
import net.minecraft.client.render.entity.state.PlayerEntityRenderState;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.ItemStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.lang.reflect.Method;
@Mixin(PlayerEntityRenderer.class)
public class PlayerEntityRendererMixin {
@Inject(
method = "updateRenderState(Lnet/minecraft/client/network/AbstractClientPlayerEntity;Lnet/minecraft/client/render/entity/state/PlayerEntityRenderState;F)V",
at = @At("RETURN")
)
private void updateRenderStateRotations(AbstractClientPlayerEntity entity, PlayerEntityRenderState state, float f, CallbackInfo ci) {
if (PoweredJetpacks.isTrinketsLoaded) {
try {
Class<?> trinkets = Class.forName("konhaiii.powered_jetpacks.compat.TrinketsServer");
Method getBackStack = trinkets.getMethod("getBackStack", LivingEntity.class);
ItemStack backStack = (ItemStack) getBackStack.invoke(null, entity);
((PlayerEntityRenderStateTrinkets)state).powered_jetpacks$setTrinketsBack(backStack);
} catch (Exception e) {
PoweredJetpacks.LOGGER.error("PlayerEntityRendererMixin: Could not load Trinkets compat class.", e);
}
}
}
}

View file

@ -3,21 +3,17 @@ package konhaiii.powered_jetpacks.renderers;
import konhaiii.powered_jetpacks.PoweredJetpacks;
import konhaiii.powered_jetpacks.item.ModItems;
import konhaiii.powered_jetpacks.item.special.JetpackItem;
import konhaiii.powered_jetpacks.PlayerEntityRenderStateTrinkets;
import konhaiii.powered_jetpacks.models.JetpackModel;
import net.minecraft.client.render.*;
import net.minecraft.client.render.entity.LivingEntityRenderer;
import net.minecraft.client.render.entity.feature.FeatureRenderer;
import net.minecraft.client.render.entity.feature.FeatureRendererContext;
import net.minecraft.client.render.entity.model.EntityModelLayers;
import net.minecraft.client.render.entity.state.PlayerEntityRenderState;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.RotationAxis;
import java.lang.reflect.Method;
public class JetpackRenderer extends FeatureRenderer<PlayerEntityRenderState, JetpackModel> {
private final JetpackModel jetpackModel;
@ -40,15 +36,9 @@ public class JetpackRenderer extends FeatureRenderer<PlayerEntityRenderState, Je
ItemStack backStack = ItemStack.EMPTY;
// Trinkets support (optional)
/*if (PoweredJetpacks.isTrinketsLoaded) {
try {
Class<?> trinkets = Class.forName("konhaiii.powered_jetpacks.compat.TrinketsServer");
Method getBackStack = trinkets.getMethod("getBackStack", state.entity().getClass());
backStack = (ItemStack) getBackStack.invoke(null, state.entity());
} catch (Exception e) {
PoweredJetpacks.LOGGER.error("JetpackRenderer: Could not load Trinkets compat class.", e);
}
}*/
if (PoweredJetpacks.isTrinketsLoaded) {
backStack = ((PlayerEntityRenderStateTrinkets)state).powered_jetpacks$getTrinketsBack();
}
// Pick the jetpack stack
ItemStack jetpackStack = chestStack.getItem() instanceof JetpackItem ? chestStack

View file

@ -1,11 +1,13 @@
{
"required": true,
"package": "konhaiii.powered_jetpacks.mixin.client",
"compatibilityLevel": "JAVA_17",
"client": [
"ClientPlayerEntityMixin"
],
"injectors": {
"defaultRequire": 1
"required": true,
"package": "konhaiii.powered_jetpacks.mixin.client",
"compatibilityLevel": "JAVA_17",
"client": [
"ClientPlayerEntityMixin",
"PlayerEntityRendererMixin",
"PlayerEntityRenderStateMixin"
],
"injectors": {
"defaultRequire": 1
}
}