Crystalite Elytra

This commit is contained in:
Aleksey 2021-06-08 10:54:06 +03:00
parent 1ad72cbe88
commit a6895004c7
22 changed files with 160 additions and 100 deletions

View file

@ -18,6 +18,7 @@ import net.minecraft.network.protocol.game.ServerboundPlayerCommandPacket;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.item.ElytraItem;
import net.minecraft.world.item.ItemStack;
import ru.betterend.interfaces.FallFlyingItem;
import ru.betterend.item.ArmoredElytra;
@Mixin(LocalPlayer.class)
@ -36,7 +37,7 @@ public abstract class LocalPlayerMixin extends AbstractClientPlayer {
shift = Shift.AFTER))
public void be_aiStep(CallbackInfo info) {
ItemStack itemStack = getItemBySlot(EquipmentSlot.CHEST);
if (itemStack.getItem() instanceof ArmoredElytra && ElytraItem.isFlyEnabled(itemStack) && tryToStartFallFlying()) {
if (itemStack.getItem() instanceof FallFlyingItem && ElytraItem.isFlyEnabled(itemStack) && tryToStartFallFlying()) {
connection.send(new ServerboundPlayerCommandPacket(LocalPlayer.class.cast(this), ServerboundPlayerCommandPacket.Action.START_FALL_FLYING));
}
}

View file

@ -33,7 +33,7 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec3;
import ru.betterend.interfaces.MobEffectApplier;
import ru.betterend.item.ArmoredElytra;
import ru.betterend.interfaces.FallFlyingItem;
import ru.betterend.item.CrystaliteArmor;
import ru.betterend.registry.EndAttributes;
@ -111,7 +111,7 @@ public abstract class LivingEntityMixin extends Entity {
@Inject(method = "updateFallFlying", at = @At("HEAD"), cancellable = true)
private void be_updateFallFlying(CallbackInfo info) {
ItemStack itemStack = getItemBySlot(EquipmentSlot.CHEST);
if (!level.isClientSide && itemStack.getItem() instanceof ArmoredElytra) {
if (!level.isClientSide && itemStack.getItem() instanceof FallFlyingItem) {
boolean isFlying = getSharedFlag(7);
if (isFlying && !onGround && !isPassenger() && !hasEffect(MobEffects.LEVITATION)) {
if (ElytraItem.isFlyEnabled(itemStack)) {
@ -136,7 +136,7 @@ public abstract class LivingEntityMixin extends Entity {
shift = Shift.AFTER), cancellable = true)
public void be_travel(Vec3 vec3, CallbackInfo info) {
ItemStack itemStack = getItemBySlot(EquipmentSlot.CHEST);
if (isFallFlying() && itemStack.getItem() instanceof ArmoredElytra) {
if (isFallFlying() && itemStack.getItem() instanceof FallFlyingItem) {
Vec3 moveDelta = getDeltaMovement();
if (moveDelta.y > -0.5D) {
fallDistance = 1.0F;
@ -166,7 +166,7 @@ public abstract class LivingEntityMixin extends Entity {
moveDelta = moveDelta.add((lookAngle.x / k * l - moveDelta.x) * 0.1D, 0.0D, (lookAngle.z / k * l - moveDelta.z) * 0.1D);
}
moveDelta = moveDelta.multiply(0.9900000095367432D, 0.9800000190734863D, 0.9900000095367432D);
double movementFactor = ((ArmoredElytra) itemStack.getItem()).getMovementFactor();
double movementFactor = ((FallFlyingItem) itemStack.getItem()).getMovementFactor();
moveDelta = moveDelta.multiply(movementFactor, 1.0D, movementFactor);
setDeltaMovement(moveDelta);
move(MoverType.SELF, moveDelta);

View file

@ -24,6 +24,7 @@ import ru.bclib.util.BlocksHelper;
import ru.bclib.util.MHelper;
import ru.betterend.blocks.BlockProperties;
import ru.betterend.blocks.BlockProperties.TripleShape;
import ru.betterend.interfaces.FallFlyingItem;
import ru.betterend.item.ArmoredElytra;
import ru.betterend.registry.EndBlocks;
@ -49,7 +50,7 @@ public abstract class PlayerMixin extends LivingEntity {
public void be_tryToStartFlying(CallbackInfoReturnable<Boolean> info) {
if (!onGround && !isFallFlying() && !isInWater() && !hasEffect(MobEffects.LEVITATION)) {
ItemStack itemStack = getItemBySlot(EquipmentSlot.CHEST);
if (itemStack.getItem() instanceof ArmoredElytra && ElytraItem.isFlyEnabled(itemStack)) {
if (itemStack.getItem() instanceof FallFlyingItem && ElytraItem.isFlyEnabled(itemStack)) {
setSharedFlag(7, true);
info.setReturnValue(true);
}