mirror of
https://github.com/TeamMidnightDust/SwordBlocking.git
synced 2025-12-13 05:45:09 +01:00
Small changes
This commit is contained in:
@@ -6,5 +6,11 @@ import net.minecraft.world.item.ItemStack;
|
||||
public interface ArmedItemStackData {
|
||||
ItemStack swordblocking$getItemHeldByArm(HumanoidArm humanoidArm);
|
||||
|
||||
void swordblocking$setItemHeldByArm(HumanoidArm arm, ItemStack itemStack);
|
||||
ItemStack swordblocking$getOffHandItem();
|
||||
|
||||
void swordblocking$setOffHandItem(ItemStack stack);
|
||||
|
||||
ItemStack swordblocking$getMainHandItem();
|
||||
|
||||
void swordblocking$setMainHandItem(ItemStack stack);
|
||||
}
|
||||
|
||||
@@ -15,37 +15,46 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
@Mixin(ArmedEntityRenderState.class)
|
||||
public abstract class MixinArmedEntityRenderState implements ArmedItemStackData {
|
||||
@Unique
|
||||
private ItemStack swordblocking$leftStack = ItemStack.EMPTY;
|
||||
private ItemStack swordblocking$offHandStack = ItemStack.EMPTY;
|
||||
|
||||
@Unique
|
||||
private ItemStack swordblocking$rightStack = ItemStack.EMPTY;
|
||||
private ItemStack swordblocking$mainHandStack = ItemStack.EMPTY;
|
||||
|
||||
@Inject(method = "extractArmedEntityRenderState", at = @At("TAIL"))
|
||||
private static void swordBlocking$storeRequiredData(LivingEntity livingEntity, ArmedEntityRenderState armedEntityRenderState, ItemModelResolver itemModelResolver, CallbackInfo ci) {
|
||||
ArmedItemStackData armedItemStackData = (ArmedItemStackData) armedEntityRenderState;
|
||||
armedItemStackData.swordblocking$setItemHeldByArm(HumanoidArm.LEFT, livingEntity.getItemHeldByArm(HumanoidArm.LEFT));
|
||||
armedItemStackData.swordblocking$setItemHeldByArm(HumanoidArm.RIGHT, livingEntity.getItemHeldByArm(HumanoidArm.RIGHT));
|
||||
armedItemStackData.swordblocking$setOffHandItem(livingEntity.getOffhandItem());
|
||||
armedItemStackData.swordblocking$setMainHandItem(livingEntity.getMainHandItem());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack swordblocking$getItemHeldByArm(HumanoidArm arm) {
|
||||
if (arm == HumanoidArm.LEFT) {
|
||||
return swordblocking$leftStack;
|
||||
return swordblocking$offHandStack;
|
||||
} else if (arm == HumanoidArm.RIGHT) {
|
||||
return swordblocking$rightStack;
|
||||
return swordblocking$mainHandStack;
|
||||
} else {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void swordblocking$setItemHeldByArm(HumanoidArm arm, ItemStack itemStack) {
|
||||
if (arm == HumanoidArm.LEFT) {
|
||||
swordblocking$leftStack = itemStack;
|
||||
} else if (arm == HumanoidArm.RIGHT) {
|
||||
swordblocking$rightStack = itemStack;
|
||||
} else {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
public ItemStack swordblocking$getOffHandItem() {
|
||||
return this.swordblocking$offHandStack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void swordblocking$setOffHandItem(ItemStack stack) {
|
||||
this.swordblocking$offHandStack = stack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack swordblocking$getMainHandItem() {
|
||||
return this.swordblocking$mainHandStack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void swordblocking$setMainHandItem(ItemStack stack) {
|
||||
this.swordblocking$mainHandStack = stack;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,8 +26,8 @@ public abstract class MixinHumanoidModel {
|
||||
@Inject(method = "setupAnim(Lnet/minecraft/client/renderer/entity/state/HumanoidRenderState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/HumanoidModel;setupAttackAnimation(Lnet/minecraft/client/renderer/entity/state/HumanoidRenderState;F)V", shift = At.Shift.BEFORE))
|
||||
private void swordBlocking$setBlockingAngles(HumanoidRenderState renderState, CallbackInfo ci) {
|
||||
final ArmedItemStackData armedItemStackData = (ArmedItemStackData) renderState;
|
||||
final ItemStack offHandStack = armedItemStackData.swordblocking$getItemHeldByArm(HumanoidArm.LEFT);
|
||||
final ItemStack mainHandStack = armedItemStackData.swordblocking$getItemHeldByArm(HumanoidArm.RIGHT);
|
||||
final ItemStack offHandStack = armedItemStackData.swordblocking$getOffHandItem();
|
||||
final ItemStack mainHandStack = armedItemStackData.swordblocking$getMainHandItem();
|
||||
if (renderState.isUsingItem && SwordBlockingClient.canEntityBlock(mainHandStack, offHandStack)) {
|
||||
if (offHandStack.getItem() instanceof ShieldItem) {
|
||||
this.poseRightArm(renderState, HumanoidModel.ArmPose.BLOCK);
|
||||
|
||||
@@ -27,7 +27,7 @@ public abstract class MixinItemInHandLayer<S extends ArmedEntityRenderState, M e
|
||||
private boolean swordBlocking$hideShield(ItemStackRenderState instance, @Local(argsOnly = true) S renderState, @Local(argsOnly = true) HumanoidArm arm) {
|
||||
if (SwordBlockingConfig.enabled) {
|
||||
final ArmedItemStackData armedItemStackData = (ArmedItemStackData) renderState;
|
||||
return SwordBlockingClient.shouldHideShield(armedItemStackData.swordblocking$getItemHeldByArm(HumanoidArm.RIGHT), armedItemStackData.swordblocking$getItemHeldByArm(HumanoidArm.LEFT), armedItemStackData.swordblocking$getItemHeldByArm(arm));
|
||||
return SwordBlockingClient.shouldHideShield(armedItemStackData.swordblocking$getMainHandItem(), armedItemStackData.swordblocking$getOffHandItem(), armedItemStackData.swordblocking$getItemHeldByArm(arm));
|
||||
}
|
||||
|
||||
return instance.isEmpty();
|
||||
|
||||
Reference in New Issue
Block a user