Code cleanup for FlyFallingLib Workaround (#231)
This commit is contained in:
parent
0aa814c4f2
commit
337b608ee8
1 changed files with 17 additions and 35 deletions
|
@ -124,6 +124,20 @@ public abstract class LivingEntityMixin extends Entity {
|
||||||
//run be_updateFallFlying instead
|
//run be_updateFallFlying instead
|
||||||
if (!BetterEnd.RUNS_FALL_FLYING_LIB) return;
|
if (!BetterEnd.RUNS_FALL_FLYING_LIB) return;
|
||||||
|
|
||||||
|
if (be_updateFallFlyingCommon()) {
|
||||||
|
vanillaAfterUpdateFallFlying();
|
||||||
|
info.cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject(method = "updateFallFlying", at = @At("HEAD"), cancellable = true)
|
||||||
|
private void be_updateFallFlying(CallbackInfo info) {
|
||||||
|
//run be_updateFallFlying_originFix instead?
|
||||||
|
if (BetterEnd.RUNS_FALL_FLYING_LIB) return;
|
||||||
|
be_updateFallFlyingCommon();
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean be_updateFallFlyingCommon() {
|
||||||
ItemStack itemStack = getItemBySlot(EquipmentSlot.CHEST);
|
ItemStack itemStack = getItemBySlot(EquipmentSlot.CHEST);
|
||||||
if (!level.isClientSide && itemStack.getItem() instanceof FallFlyingItem) {
|
if (!level.isClientSide && itemStack.getItem() instanceof FallFlyingItem) {
|
||||||
boolean isFlying = getSharedFlag(7);
|
boolean isFlying = getSharedFlag(7);
|
||||||
|
@ -146,12 +160,9 @@ public abstract class LivingEntityMixin extends Entity {
|
||||||
isFlying = false;
|
isFlying = false;
|
||||||
}
|
}
|
||||||
setSharedFlag(7, isFlying);
|
setSharedFlag(7, isFlying);
|
||||||
if (isFlying) {
|
return isFlying;
|
||||||
vanillaAfterUpdateFallFlying();
|
|
||||||
info.cancel();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Shadow protected abstract void removeFrost();
|
@Shadow protected abstract void removeFrost();
|
||||||
|
@ -198,36 +209,7 @@ public abstract class LivingEntityMixin extends Entity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject(method = "updateFallFlying", at = @At("HEAD"), cancellable = true)
|
|
||||||
private void be_updateFallFlying(CallbackInfo info) {
|
|
||||||
//run be_updateFallFlying_originFix instead?
|
|
||||||
if (BetterEnd.RUNS_FALL_FLYING_LIB) return;
|
|
||||||
|
|
||||||
ItemStack itemStack = getItemBySlot(EquipmentSlot.CHEST);
|
|
||||||
if (!level.isClientSide && itemStack.getItem() instanceof FallFlyingItem) {
|
|
||||||
boolean isFlying = getSharedFlag(7);
|
|
||||||
if (isFlying && !onGround && !isPassenger() && !hasEffect(MobEffects.LEVITATION)) {
|
|
||||||
if (ElytraItem.isFlyEnabled(itemStack)) {
|
|
||||||
if ((fallFlyTicks + 1) % 20 == 0) {
|
|
||||||
itemStack.hurtAndBreak(
|
|
||||||
1,
|
|
||||||
LivingEntity.class.cast(this),
|
|
||||||
livingEntity -> livingEntity.broadcastBreakEvent(EquipmentSlot.CHEST)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
isFlying = true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
isFlying = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
isFlying = false;
|
|
||||||
}
|
|
||||||
setSharedFlag(7, isFlying);
|
|
||||||
info.cancel();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Inject(method = "travel", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;isFallFlying()Z", shift = Shift.AFTER), cancellable = true)
|
@Inject(method = "travel", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;isFallFlying()Z", shift = Shift.AFTER), cancellable = true)
|
||||||
public void be_travel(Vec3 vec3, CallbackInfo info) {
|
public void be_travel(Vec3 vec3, CallbackInfo info) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue