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

@ -1,9 +1,6 @@
# FORK! # FORK!
This is a forked version of https://modrinth.com/mod/powered-jetpacks This is a forked version of https://modrinth.com/mod/powered-jetpacks
which was originally for 1.20.1. I've ported the mod to 1.21.8, but which was originally for 1.20.1. I've ported the mod to 1.21.8.
there's still a major bug, which is if you're using the powered jetback in quirk armor,
it won't show it on your player model.
This version also adds hover flying and creative flying. This version also adds hover flying and creative flying.
Hover is by default bound to H, and creative fly is bound by default to J. Hover is by default bound to H, and creative fly is bound by default to J.

View file

@ -10,7 +10,7 @@ loader_version=0.17.2
loom_version=1.11-SNAPSHOT loom_version=1.11-SNAPSHOT
# Mod Properties # Mod Properties
mod_version=1.1.2 mod_version=1.2.0
maven_group=konhaiii.powered_jetpacks maven_group=konhaiii.powered_jetpacks
archives_base_name=powered_jetpacks archives_base_name=powered_jetpacks

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.PoweredJetpacks;
import konhaiii.powered_jetpacks.item.ModItems; import konhaiii.powered_jetpacks.item.ModItems;
import konhaiii.powered_jetpacks.item.special.JetpackItem; import konhaiii.powered_jetpacks.item.special.JetpackItem;
import konhaiii.powered_jetpacks.PlayerEntityRenderStateTrinkets;
import konhaiii.powered_jetpacks.models.JetpackModel; import konhaiii.powered_jetpacks.models.JetpackModel;
import net.minecraft.client.render.*; import net.minecraft.client.render.*;
import net.minecraft.client.render.entity.LivingEntityRenderer; import net.minecraft.client.render.entity.LivingEntityRenderer;
import net.minecraft.client.render.entity.feature.FeatureRenderer; 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.render.entity.state.PlayerEntityRenderState;
import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.math.RotationAxis; import net.minecraft.util.math.RotationAxis;
import java.lang.reflect.Method;
public class JetpackRenderer extends FeatureRenderer<PlayerEntityRenderState, JetpackModel> { public class JetpackRenderer extends FeatureRenderer<PlayerEntityRenderState, JetpackModel> {
private final JetpackModel jetpackModel; private final JetpackModel jetpackModel;
@ -40,15 +36,9 @@ public class JetpackRenderer extends FeatureRenderer<PlayerEntityRenderState, Je
ItemStack backStack = ItemStack.EMPTY; ItemStack backStack = ItemStack.EMPTY;
// Trinkets support (optional) // Trinkets support (optional)
/*if (PoweredJetpacks.isTrinketsLoaded) { if (PoweredJetpacks.isTrinketsLoaded) {
try { backStack = ((PlayerEntityRenderStateTrinkets)state).powered_jetpacks$getTrinketsBack();
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);
} }
}*/
// Pick the jetpack stack // Pick the jetpack stack
ItemStack jetpackStack = chestStack.getItem() instanceof JetpackItem ? chestStack ItemStack jetpackStack = chestStack.getItem() instanceof JetpackItem ? chestStack

View file

@ -3,7 +3,9 @@
"package": "konhaiii.powered_jetpacks.mixin.client", "package": "konhaiii.powered_jetpacks.mixin.client",
"compatibilityLevel": "JAVA_17", "compatibilityLevel": "JAVA_17",
"client": [ "client": [
"ClientPlayerEntityMixin" "ClientPlayerEntityMixin",
"PlayerEntityRendererMixin",
"PlayerEntityRenderStateMixin"
], ],
"injectors": { "injectors": {
"defaultRequire": 1 "defaultRequire": 1