mirror of
https://github.com/TeamMidnightDust/SwordBlocking.git
synced 2025-12-15 14:35:10 +01:00
Small changes
This commit is contained in:
@@ -6,5 +6,11 @@ import net.minecraft.world.item.ItemStack;
|
|||||||
public interface ArmedItemStackData {
|
public interface ArmedItemStackData {
|
||||||
ItemStack swordblocking$getItemHeldByArm(HumanoidArm humanoidArm);
|
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)
|
@Mixin(ArmedEntityRenderState.class)
|
||||||
public abstract class MixinArmedEntityRenderState implements ArmedItemStackData {
|
public abstract class MixinArmedEntityRenderState implements ArmedItemStackData {
|
||||||
@Unique
|
@Unique
|
||||||
private ItemStack swordblocking$leftStack = ItemStack.EMPTY;
|
private ItemStack swordblocking$offHandStack = ItemStack.EMPTY;
|
||||||
|
|
||||||
@Unique
|
@Unique
|
||||||
private ItemStack swordblocking$rightStack = ItemStack.EMPTY;
|
private ItemStack swordblocking$mainHandStack = ItemStack.EMPTY;
|
||||||
|
|
||||||
@Inject(method = "extractArmedEntityRenderState", at = @At("TAIL"))
|
@Inject(method = "extractArmedEntityRenderState", at = @At("TAIL"))
|
||||||
private static void swordBlocking$storeRequiredData(LivingEntity livingEntity, ArmedEntityRenderState armedEntityRenderState, ItemModelResolver itemModelResolver, CallbackInfo ci) {
|
private static void swordBlocking$storeRequiredData(LivingEntity livingEntity, ArmedEntityRenderState armedEntityRenderState, ItemModelResolver itemModelResolver, CallbackInfo ci) {
|
||||||
ArmedItemStackData armedItemStackData = (ArmedItemStackData) armedEntityRenderState;
|
ArmedItemStackData armedItemStackData = (ArmedItemStackData) armedEntityRenderState;
|
||||||
armedItemStackData.swordblocking$setItemHeldByArm(HumanoidArm.LEFT, livingEntity.getItemHeldByArm(HumanoidArm.LEFT));
|
armedItemStackData.swordblocking$setOffHandItem(livingEntity.getOffhandItem());
|
||||||
armedItemStackData.swordblocking$setItemHeldByArm(HumanoidArm.RIGHT, livingEntity.getItemHeldByArm(HumanoidArm.RIGHT));
|
armedItemStackData.swordblocking$setMainHandItem(livingEntity.getMainHandItem());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack swordblocking$getItemHeldByArm(HumanoidArm arm) {
|
public ItemStack swordblocking$getItemHeldByArm(HumanoidArm arm) {
|
||||||
if (arm == HumanoidArm.LEFT) {
|
if (arm == HumanoidArm.LEFT) {
|
||||||
return swordblocking$leftStack;
|
return swordblocking$offHandStack;
|
||||||
} else if (arm == HumanoidArm.RIGHT) {
|
} else if (arm == HumanoidArm.RIGHT) {
|
||||||
return swordblocking$rightStack;
|
return swordblocking$mainHandStack;
|
||||||
} else {
|
} else {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void swordblocking$setItemHeldByArm(HumanoidArm arm, ItemStack itemStack) {
|
public ItemStack swordblocking$getOffHandItem() {
|
||||||
if (arm == HumanoidArm.LEFT) {
|
return this.swordblocking$offHandStack;
|
||||||
swordblocking$leftStack = itemStack;
|
|
||||||
} else if (arm == HumanoidArm.RIGHT) {
|
|
||||||
swordblocking$rightStack = itemStack;
|
|
||||||
} else {
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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))
|
@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) {
|
private void swordBlocking$setBlockingAngles(HumanoidRenderState renderState, CallbackInfo ci) {
|
||||||
final ArmedItemStackData armedItemStackData = (ArmedItemStackData) renderState;
|
final ArmedItemStackData armedItemStackData = (ArmedItemStackData) renderState;
|
||||||
final ItemStack offHandStack = armedItemStackData.swordblocking$getItemHeldByArm(HumanoidArm.LEFT);
|
final ItemStack offHandStack = armedItemStackData.swordblocking$getOffHandItem();
|
||||||
final ItemStack mainHandStack = armedItemStackData.swordblocking$getItemHeldByArm(HumanoidArm.RIGHT);
|
final ItemStack mainHandStack = armedItemStackData.swordblocking$getMainHandItem();
|
||||||
if (renderState.isUsingItem && SwordBlockingClient.canEntityBlock(mainHandStack, offHandStack)) {
|
if (renderState.isUsingItem && SwordBlockingClient.canEntityBlock(mainHandStack, offHandStack)) {
|
||||||
if (offHandStack.getItem() instanceof ShieldItem) {
|
if (offHandStack.getItem() instanceof ShieldItem) {
|
||||||
this.poseRightArm(renderState, HumanoidModel.ArmPose.BLOCK);
|
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) {
|
private boolean swordBlocking$hideShield(ItemStackRenderState instance, @Local(argsOnly = true) S renderState, @Local(argsOnly = true) HumanoidArm arm) {
|
||||||
if (SwordBlockingConfig.enabled) {
|
if (SwordBlockingConfig.enabled) {
|
||||||
final ArmedItemStackData armedItemStackData = (ArmedItemStackData) renderState;
|
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();
|
return instance.isEmpty();
|
||||||
|
|||||||
Reference in New Issue
Block a user