From ee5a44fd70e1cd00f9cfd98adbab5b8f381598fd Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Sun, 18 Jun 2023 00:36:12 +0200 Subject: [PATCH] Implemented https://github.com/ViaVersion/ViaFabricPlus/issues/124 --- gradle.properties | 4 +- .../base/settings/groups/GeneralSettings.java | 1 - .../type_impl/ProtocolSyncBooleanSetting.java | 27 ++++++--- .../bedrock/BedrockAccountHandler.java | 2 +- .../minecraft/MixinBipedEntityModel.java | 2 +- .../mixin/fixes/minecraft/MixinCamera.java | 6 +- .../MixinClientPlayNetworkHandler.java | 2 +- .../mixin/fixes/minecraft/MixinInGameHud.java | 16 ++--- .../fixes/minecraft/MixinItemRenderer.java | 2 +- .../fixes/minecraft/MixinMinecraftClient.java | 4 +- .../minecraft/MixinPendingUpdateManager.java | 2 +- .../minecraft/block/MixinAbstractBlock.java | 2 +- .../entity/MixinClientPlayerEntity.java | 4 +- .../minecraft/entity/MixinPlayerEntity.java | 2 +- .../fixes/minecraft/input/MixinKeyboard.java | 2 +- .../fixes/minecraft/input/MixinMouse.java | 2 +- .../item/MixinItemCooldownManager.java | 2 +- .../fixes/minecraft/item/MixinItemStack.java | 2 +- .../fixes/minecraft/screen/MixinChatHud.java | 2 +- .../minecraft/screen/MixinChatScreen.java | 2 +- .../screen/MixinCommandBlockScreen.java | 2 +- .../screen/MixinConnectScreen_1.java | 11 +++- .../screen/MixinCreativeInventoryScreen.java | 2 +- .../screen/MixinJigsawBlockScreen.java | 4 +- .../screen/merchant/MixinMerchantScreen.java | 2 +- .../mixin/fixes/sodium/MixinChunkTracker.java | 2 +- .../mappings/ItemReleaseVersionMappings.java | 59 ++++++++++--------- .../mappings/PackFormatsMappings.java | 2 +- .../protocolhack/ProtocolHack.java | 4 +- .../ProtocolSyncBooleanSettingRenderer.java | 10 ++-- .../assets/viafabricplus/lang/en_us.json | 2 +- 31 files changed, 103 insertions(+), 85 deletions(-) diff --git a/gradle.properties b/gradle.properties index 6a708c63..9e45af97 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,11 +23,11 @@ viabackwards_version=4.7.1-SNAPSHOT snake_yml_version=2.0 # raphimc libs -vialegacy_version=2.2.17 +vialegacy_version=2.2.18-SNAPSHOT viaaprilfools_version=2.0.8-SNAPSHOT viabedrock_version=0.0.2-SNAPSHOT minecraftauth_version=2.1.4-SNAPSHOT -vialoader_version=2.2.5 +vialoader_version=2.2.7-SNAPSHOT # lenni0451 libs mcstructs_text_version=2.2.5 diff --git a/src/main/java/de/florianmichael/viafabricplus/base/settings/groups/GeneralSettings.java b/src/main/java/de/florianmichael/viafabricplus/base/settings/groups/GeneralSettings.java index c87f511e..30091db2 100644 --- a/src/main/java/de/florianmichael/viafabricplus/base/settings/groups/GeneralSettings.java +++ b/src/main/java/de/florianmichael/viafabricplus/base/settings/groups/GeneralSettings.java @@ -32,7 +32,6 @@ public class GeneralSettings extends SettingGroup { Text.translatable("words.viafabricplus.rb") ); public final BooleanSetting removeNotAvailableItemsFromCreativeTab = new BooleanSetting(this, Text.translatable("general.viafabricplus.creative"), true); - public final BooleanSetting automaticallyChangeValuesBasedOnTheCurrentVersion = new BooleanSetting(this, Text.translatable("general.viafabricplus.protocolsync"), true); public final BooleanSetting showSuperSecretSettings = new BooleanSetting(this, Text.translatable("general.viafabricplus.secret"), true); public final BooleanSetting showExtraInformationInDebugHud = new BooleanSetting(this, Text.translatable("general.viafabricplus.extrainformation"), true); public final BooleanSetting showClassicLoadingProgressInConnectScreen = new BooleanSetting(this, Text.translatable("general.viafabricplus.classicloading"), true); diff --git a/src/main/java/de/florianmichael/viafabricplus/base/settings/type_impl/ProtocolSyncBooleanSetting.java b/src/main/java/de/florianmichael/viafabricplus/base/settings/type_impl/ProtocolSyncBooleanSetting.java index c5898c99..55a5302b 100644 --- a/src/main/java/de/florianmichael/viafabricplus/base/settings/type_impl/ProtocolSyncBooleanSetting.java +++ b/src/main/java/de/florianmichael/viafabricplus/base/settings/type_impl/ProtocolSyncBooleanSetting.java @@ -18,19 +18,22 @@ package de.florianmichael.viafabricplus.base.settings.type_impl; import com.google.gson.JsonObject; +import de.florianmichael.viafabricplus.base.settings.base.AbstractSetting; import de.florianmichael.viafabricplus.screen.MappedSlotEntry; import de.florianmichael.viafabricplus.screen.impl.settings.settingrenderer.ProtocolSyncBooleanSettingRenderer; import de.florianmichael.viafabricplus.base.settings.base.SettingGroup; -import de.florianmichael.viafabricplus.base.settings.groups.GeneralSettings; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import net.minecraft.text.MutableText; import net.raphimc.vialoader.util.VersionRange; -public class ProtocolSyncBooleanSetting extends BooleanSetting { +public class ProtocolSyncBooleanSetting extends AbstractSetting { + public final static int AUTO = 2; + public final static int ENABLED = 0; + private final VersionRange protocolRange; public ProtocolSyncBooleanSetting(SettingGroup parent, MutableText name, VersionRange protocolRange) { - super(parent, name, true); + super(parent, name, 2); this.protocolRange = protocolRange; } @@ -49,14 +52,22 @@ public class ProtocolSyncBooleanSetting extends BooleanSetting { public void read(JsonObject object) { if (!object.has(getTranslationKey())) return; - setValue(object.get(getTranslationKey()).getAsBoolean()); + if (object.get(getTranslationKey()).isJsonPrimitive() && object.get(getTranslationKey()).getAsJsonPrimitive().isBoolean()) { // Migrate configs, will be removed in the future + setValue(AUTO); + return; + } + + setValue(object.get(getTranslationKey()).getAsInt()); } - @Override - public Boolean getValue() { - if (GeneralSettings.INSTANCE.automaticallyChangeValuesBasedOnTheCurrentVersion.getValue()) return this.getProtocolRange().contains(ProtocolHack.getTargetVersion()); + public boolean isAuto() { + return getValue() == AUTO; + } - return super.getValue(); + public boolean isEnabled() { + if (isAuto()) return this.getProtocolRange().contains(ProtocolHack.getTargetVersion()); + + return getValue() == ENABLED; } public VersionRange getProtocolRange() { diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/bedrock/BedrockAccountHandler.java b/src/main/java/de/florianmichael/viafabricplus/definition/bedrock/BedrockAccountHandler.java index 57bb6956..30924305 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/bedrock/BedrockAccountHandler.java +++ b/src/main/java/de/florianmichael/viafabricplus/definition/bedrock/BedrockAccountHandler.java @@ -22,7 +22,7 @@ import de.florianmichael.viafabricplus.ViaFabricPlus; import de.florianmichael.viafabricplus.base.FileSaver; import net.raphimc.mcauth.MinecraftAuth; import net.raphimc.mcauth.step.bedrock.StepMCChain; -import net.raphimc.mcauth.step.bedrock.playfab.StepPlayFabToken; +import net.raphimc.mcauth.step.bedrock.StepPlayFabToken; import net.raphimc.mcauth.util.MicrosoftConstants; import org.apache.http.impl.client.CloseableHttpClient; diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinBipedEntityModel.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinBipedEntityModel.java index 3a8b89e9..63527b38 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinBipedEntityModel.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinBipedEntityModel.java @@ -38,7 +38,7 @@ public class MixinBipedEntityModel { @Inject(method = "setAngles(Lnet/minecraft/entity/LivingEntity;FFFFF)V", at = @At(value = "FIELD", target = "Lnet/minecraft/client/model/ModelPart;roll:F", ordinal = 1, shift = At.Shift.AFTER)) public void addOldWalkAnimation(T livingEntity, float f, float g, float h, float i, float j, CallbackInfo ci) { - if (VisualSettings.INSTANCE.oldWalkingAnimation.getValue()) { + if (VisualSettings.INSTANCE.oldWalkingAnimation.isEnabled()) { this.rightArm.pitch = MathHelper.cos(f * 0.6662F + 3.1415927F) * 2.0F * g; this.rightArm.roll = (MathHelper.cos(f * 0.2312F) + 1.0F) * 1.0F * g; diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinCamera.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinCamera.java index 551237ec..09ff94be 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinCamera.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinCamera.java @@ -42,7 +42,7 @@ public class MixinCamera { @Inject(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/Camera;setPos(DDD)V", shift = At.Shift.BEFORE)) public void onUpdateHeight(BlockView area, Entity focusedEntity, boolean thirdPerson, boolean inverseView, float tickDelta, CallbackInfo ci) { - if (!DebugSettings.INSTANCE.replaceSneaking.getValue() && DebugSettings.INSTANCE.sneakInstant.getValue()) { + if (!DebugSettings.INSTANCE.replaceSneaking.isEnabled() && DebugSettings.INSTANCE.sneakInstant.isEnabled()) { cameraY = lastCameraY = focusedEntity.getStandingEyeHeight(); } } @@ -51,14 +51,14 @@ public class MixinCamera { public void onUpdateEyeHeight(CallbackInfo ci) { if (this.focusedEntity == null) return; - if (DebugSettings.INSTANCE.replaceSneaking.getValue()) { + if (DebugSettings.INSTANCE.replaceSneaking.isEnabled()) { ci.cancel(); this.lastCameraY = this.cameraY; if (this.focusedEntity instanceof PlayerEntity player && !player.isSleeping()) { if (player.isSneaking()) { cameraY = 1.54F; - } else if (!DebugSettings.INSTANCE.longSneaking.getValue()) { + } else if (!DebugSettings.INSTANCE.longSneaking.isEnabled()) { cameraY = 1.62F; } else if (cameraY < 1.62F) { float delta = 1.62F - cameraY; diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayNetworkHandler.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayNetworkHandler.java index 3c224032..eaf6a9ab 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayNetworkHandler.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayNetworkHandler.java @@ -161,7 +161,7 @@ public abstract class MixinClientPlayNetworkHandler { @Redirect(method = "onServerMetadata", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/s2c/play/ServerMetadataS2CPacket;isSecureChatEnforced()Z")) public boolean removeSecureChatWarning(ServerMetadataS2CPacket instance) { - return instance.isSecureChatEnforced() || VisualSettings.INSTANCE.disableSecureChatWarning.getValue(); + return instance.isSecureChatEnforced() || VisualSettings.INSTANCE.disableSecureChatWarning.isEnabled(); } @Inject(method = "onSetTradeOffers", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/NetworkThreadUtils;forceMainThread(Lnet/minecraft/network/packet/Packet;Lnet/minecraft/network/listener/PacketListener;Lnet/minecraft/util/thread/ThreadExecutor;)V", shift = At.Shift.AFTER), cancellable = true) diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinInGameHud.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinInGameHud.java index e7aa2848..f0326152 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinInGameHud.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinInGameHud.java @@ -42,22 +42,22 @@ public abstract class MixinInGameHud { @Inject(method = "renderExperienceBar", at = @At("HEAD"), cancellable = true) public void removeExperienceBar(DrawContext context, int x, CallbackInfo ci) { - if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) ci.cancel(); + if (VisualSettings.INSTANCE.removeNewerHudElements.isEnabled()) ci.cancel(); } @Inject(method = "renderMountJumpBar", at = @At("HEAD"), cancellable = true) public void removeMountJumpBar(JumpingMount mount, DrawContext context, int x, CallbackInfo ci) { - if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) ci.cancel(); + if (VisualSettings.INSTANCE.removeNewerHudElements.isEnabled()) ci.cancel(); } @Inject(method = "renderMountHealth", at = @At("HEAD"), cancellable = true) public void removeMountHealth(DrawContext context, CallbackInfo ci) { - if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) ci.cancel(); + if (VisualSettings.INSTANCE.removeNewerHudElements.isEnabled()) ci.cancel(); } @Inject(method = "getHeartCount", at = @At("HEAD"), cancellable = true) public void removeHungerBar(LivingEntity entity, CallbackInfoReturnable cir) { - if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) { + if (VisualSettings.INSTANCE.removeNewerHudElements.isEnabled()) { cir.setReturnValue(1); } } @@ -66,7 +66,7 @@ public abstract class MixinInGameHud { @ModifyExpressionValue(method = "renderStatusBars", at = @At(value = "FIELD", target = "Lnet/minecraft/client/gui/hud/InGameHud;scaledHeight:I", opcode = Opcodes.GETFIELD)) private int moveHealthDown(int originalValue) { - if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) return originalValue + 6; + if (VisualSettings.INSTANCE.removeNewerHudElements.isEnabled()) return originalValue + 6; return originalValue; } @@ -74,7 +74,7 @@ public abstract class MixinInGameHud { from = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;push(Ljava/lang/String;)V"), to = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V", ordinal = 0)), index = 1) private int moveArmor(int old) { - if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) return scaledWidth - old - 9; + if (VisualSettings.INSTANCE.removeNewerHudElements.isEnabled()) return scaledWidth - old - 9; return old; } @@ -82,7 +82,7 @@ public abstract class MixinInGameHud { from = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;push(Ljava/lang/String;)V"), to = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V", ordinal = 0)), index = 2) private int moveArmorDown(int old) { - if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) return scaledWidth - 39 + 6; + if (VisualSettings.INSTANCE.removeNewerHudElements.isEnabled()) return scaledWidth - 39 + 6; return old; } @@ -90,7 +90,7 @@ public abstract class MixinInGameHud { from = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V", ordinal = 2), to = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;pop()V")), index = 1) private int moveAir(int old) { - if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) return scaledWidth - old - 9; + if (VisualSettings.INSTANCE.removeNewerHudElements.isEnabled()) return scaledWidth - old - 9; return old; } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinItemRenderer.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinItemRenderer.java index 6df2d8e7..13c1a335 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinItemRenderer.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinItemRenderer.java @@ -39,7 +39,7 @@ public class MixinItemRenderer { @Inject(method = "getModel", at = @At("HEAD"), cancellable = true) public void removeModel(ItemStack stack, World world, LivingEntity entity, int seed, CallbackInfoReturnable cir) { - if (VisualSettings.INSTANCE.replacePetrifiedOakSlab.getValue() && world != null /* world is null in gui rendering */ && stack.isOf(Items.PETRIFIED_OAK_SLAB)) { + if (VisualSettings.INSTANCE.replacePetrifiedOakSlab.isEnabled() && world != null /* world is null in gui rendering */ && stack.isOf(Items.PETRIFIED_OAK_SLAB)) { cir.setReturnValue(this.models.getModelManager().getMissingModel()); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinMinecraftClient.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinMinecraftClient.java index 43eeeadf..2c3b0e38 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinMinecraftClient.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinMinecraftClient.java @@ -111,7 +111,7 @@ public abstract class MixinMinecraftClient implements IMinecraftClient { @Inject(method = "tick", at = @At(value = "FIELD", target = "Lnet/minecraft/client/MinecraftClient;currentScreen:Lnet/minecraft/client/gui/screen/Screen;", ordinal = 4, shift = At.Shift.BEFORE)) public void injectTick(CallbackInfo ci) { - if (!DebugSettings.INSTANCE.executeInputsInSync.getValue()) return; + if (!DebugSettings.INSTANCE.executeInputsInSync.isEnabled()) return; while (!viafabricplus_mouseInteractions.isEmpty()) { viafabricplus_mouseInteractions.poll().run(); @@ -123,7 +123,7 @@ public abstract class MixinMinecraftClient implements IMinecraftClient { @Inject(method = "handleInputEvents", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerInteractionManager;hasRidingInventory()Z")) private void onInventoryKeyPressed(CallbackInfo ci) { - if (getNetworkHandler() != null && DebugSettings.INSTANCE.sendOpenInventoryPacket.getValue()) { + if (getNetworkHandler() != null && DebugSettings.INSTANCE.sendOpenInventoryPacket.isEnabled()) { final UserConnection userConnection = ProtocolHack.getMainUserConnection(); if (userConnection != null && userConnection.getProtocolInfo().getPipeline().contains(Protocol1_12To1_11_1.class)) { diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinPendingUpdateManager.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinPendingUpdateManager.java index 67876d15..fa4d48f6 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinPendingUpdateManager.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinPendingUpdateManager.java @@ -29,7 +29,7 @@ public class MixinPendingUpdateManager { @Inject(method = "incrementSequence", at = @At(value = "FIELD", target = "Lnet/minecraft/client/network/PendingUpdateManager;pendingSequence:Z", shift = At.Shift.BEFORE), cancellable = true) public void injectIncrementSequence(CallbackInfoReturnable cir) { - if (DebugSettings.INSTANCE.disableSequencing.getValue()) { + if (DebugSettings.INSTANCE.disableSequencing.isEnabled()) { cir.setReturnValue((PendingUpdateManager) (Object) this); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAbstractBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAbstractBlock.java index aa71a032..d6873eeb 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAbstractBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAbstractBlock.java @@ -33,7 +33,7 @@ public class MixinAbstractBlock { @Inject(method = "calcBlockBreakingDelta", at = @At("HEAD"), cancellable = true) public void fixLegacyMiningSpeed(BlockState state, PlayerEntity player, BlockView world, BlockPos pos, CallbackInfoReturnable cir) { - if (DebugSettings.INSTANCE.legacyMiningSpeeds.getValue()) { + if (DebugSettings.INSTANCE.legacyMiningSpeeds.isEnabled()) { final float hardness = state.getHardness(world, pos); if (hardness == -1.0F) { cir.setReturnValue(0.0F); diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinClientPlayerEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinClientPlayerEntity.java index 8973efe9..5debf714 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinClientPlayerEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinClientPlayerEntity.java @@ -94,7 +94,7 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity @Redirect(method = "sendMovementPackets", at = @At(value = "FIELD", target = "Lnet/minecraft/client/network/ClientPlayerEntity;lastOnGround:Z", ordinal = 0)) public boolean sendIdlePacket(ClientPlayerEntity instance) { - if (DebugSettings.INSTANCE.sendIdlePacket.getValue()) { + if (DebugSettings.INSTANCE.sendIdlePacket.isEnabled()) { return !isOnGround(); } return lastOnGround; @@ -198,7 +198,7 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity @Override public int getArmor() { - if (VisualSettings.INSTANCE.emulateArmorHud.getValue()) { + if (VisualSettings.INSTANCE.emulateArmorHud.isEnabled()) { return ArmorPointCalculation.sum(); } return super.getArmor(); diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinPlayerEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinPlayerEntity.java index 37afaa0e..5e4a0ed3 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinPlayerEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinPlayerEntity.java @@ -100,7 +100,7 @@ public abstract class MixinPlayerEntity extends LivingEntity { @Inject(method = "getHurtSound", at = @At("HEAD"), cancellable = true) public void replaceSound(DamageSource source, CallbackInfoReturnable cir) { - if (VisualSettings.INSTANCE.replaceHurtSoundWithOOFSound.getValue()) { + if (VisualSettings.INSTANCE.replaceHurtSoundWithOOFSound.isEnabled()) { cir.setReturnValue(viafabricplus_random_hurt); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/input/MixinKeyboard.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/input/MixinKeyboard.java index 3745bca4..351d9c37 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/input/MixinKeyboard.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/input/MixinKeyboard.java @@ -34,7 +34,7 @@ public class MixinKeyboard { @Redirect(method = "*", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;execute(Ljava/lang/Runnable;)V")) public void redirectSync(MinecraftClient instance, Runnable runnable) { - if (DebugSettings.INSTANCE.executeInputsInSync.getValue()) { + if (DebugSettings.INSTANCE.executeInputsInSync.isEnabled()) { ((IMinecraftClient) MinecraftClient.getInstance()).viafabricplus_getKeyboardInteractions().add(runnable); return; } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/input/MixinMouse.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/input/MixinMouse.java index 5cfe1919..ba2a3d21 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/input/MixinMouse.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/input/MixinMouse.java @@ -30,7 +30,7 @@ public class MixinMouse { @Redirect(method = { "method_29615", "method_22685", "method_22684" }, at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;execute(Ljava/lang/Runnable;)V")) public void redirectSync(MinecraftClient instance, Runnable runnable) { - if (DebugSettings.INSTANCE.executeInputsInSync.getValue()) { + if (DebugSettings.INSTANCE.executeInputsInSync.isEnabled()) { ((IMinecraftClient) MinecraftClient.getInstance()).viafabricplus_getMouseInteractions().add(runnable); return; } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemCooldownManager.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemCooldownManager.java index 9486f686..80a1fb3c 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemCooldownManager.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemCooldownManager.java @@ -30,7 +30,7 @@ public class MixinItemCooldownManager { @Inject(method = "set", at = @At("HEAD"), cancellable = true) public void injectSet(Item item, int duration, CallbackInfo ci) { - if (DebugSettings.INSTANCE.removeCooldowns.getValue()) { + if (DebugSettings.INSTANCE.removeCooldowns.isEnabled()) { ci.cancel(); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemStack.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemStack.java index ea461128..92b1bcd7 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemStack.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemStack.java @@ -82,7 +82,7 @@ public abstract class MixinItemStack { @SuppressWarnings({"InvalidInjectorMethodSignature", "MixinAnnotationTarget"}) @ModifyVariable(method = "getAttributeModifiers", ordinal = 0, at = @At(value = "STORE", ordinal = 1)) private Multimap modifyVariableGetAttributeModifiers(Multimap modifiers) { - if (!DebugSettings.INSTANCE.replaceAttributeModifiers.getValue() || modifiers.isEmpty()) return modifiers; + if (!DebugSettings.INSTANCE.replaceAttributeModifiers.isEnabled() || modifiers.isEmpty()) return modifiers; modifiers = HashMultimap.create(modifiers); modifiers.removeAll(EntityAttributes.GENERIC_ATTACK_DAMAGE); diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinChatHud.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinChatHud.java index e6be6fe1..9609924f 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinChatHud.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinChatHud.java @@ -30,7 +30,7 @@ public class MixinChatHud { @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHudLine$Visible;indicator()Lnet/minecraft/client/gui/hud/MessageIndicator;"), require = 0) public MessageIndicator removeIndicators(ChatHudLine.Visible instance) { - if (VisualSettings.INSTANCE.hideSignatureIndicator.getValue()) { + if (VisualSettings.INSTANCE.hideSignatureIndicator.isEnabled()) { return null; } return instance.indicator(); diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinChatScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinChatScreen.java index 8384202e..f86fc54a 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinChatScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinChatScreen.java @@ -45,7 +45,7 @@ public class MixinChatScreen { @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHud;getIndicatorAt(DD)Lnet/minecraft/client/gui/hud/MessageIndicator;")) public MessageIndicator removeIndicator(ChatHud instance, double mouseX, double mouseY) { - if (VisualSettings.INSTANCE.hideSignatureIndicator.getValue()) { + if (VisualSettings.INSTANCE.hideSignatureIndicator.isEnabled()) { return null; } return instance.getIndicatorAt(mouseX, mouseY); diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCommandBlockScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCommandBlockScreen.java index c057b1d1..aea8e06e 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCommandBlockScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCommandBlockScreen.java @@ -43,7 +43,7 @@ public abstract class MixinCommandBlockScreen { @Inject(method = "init", at = @At("TAIL")) private void injectInit(CallbackInfo ci) { - if (VisualSettings.INSTANCE.removeNewerFeaturesFromCommandBlockScreen.getValue()) { + if (VisualSettings.INSTANCE.removeNewerFeaturesFromCommandBlockScreen.isEnabled()) { modeButton.visible = false; conditionalModeButton.visible = false; redstoneTriggerButton.visible = false; diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinConnectScreen_1.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinConnectScreen_1.java index 301cdbd9..ca6d5f42 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinConnectScreen_1.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinConnectScreen_1.java @@ -19,6 +19,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.screen; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.ProfileKey; +import net.raphimc.mcauth.util.MicrosoftConstants; import net.raphimc.vialoader.util.VersionEnum; import de.florianmichael.viafabricplus.ViaFabricPlus; import de.florianmichael.viafabricplus.definition.bedrock.BedrockAccountHandler; @@ -38,6 +39,7 @@ import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.c2s.login.LoginHelloC2SPacket; import net.raphimc.mcauth.step.bedrock.StepMCChain; import net.raphimc.viabedrock.protocol.storage.AuthChainData; +import org.apache.http.impl.client.CloseableHttpClient; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -97,11 +99,18 @@ public class MixinConnectScreen_1 { final VersionEnum targetVersion = ProtocolHack.getTargetVersion(connection.channel); if (targetVersion == VersionEnum.bedrockLatest) { - final StepMCChain.MCChain account = BedrockAccountHandler.INSTANCE.getMcChain(); + StepMCChain.MCChain account = BedrockAccountHandler.INSTANCE.getMcChain(); if (account == null) return; final UUID deviceId = account.prevResult().initialXblSession().prevResult2().id(); final String playFabId = BedrockAccountHandler.INSTANCE.getPlayFabToken().playFabId(); + try (final CloseableHttpClient httpClient = MicrosoftConstants.createHttpClient()) { + account = new StepMCChain(null).applyStep(httpClient, account.prevResult()); + } catch (Exception e) { + ViaFabricPlus.LOGGER.error("Failed to refresh Bedrock chain data. Please re-login to Bedrock!", e); + return; + } + userConnection.put(new AuthChainData(userConnection, account.mojangJwt(), account.identityJwt(), account.publicKey(), account.privateKey(), deviceId, playFabId)); ViaFabricPlus.LOGGER.info("Created AuthChainData for Bedrock authentication!"); return; diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCreativeInventoryScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCreativeInventoryScreen.java index c956454e..b71fbdc6 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCreativeInventoryScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCreativeInventoryScreen.java @@ -31,7 +31,7 @@ public class MixinCreativeInventoryScreen { @Inject(method = "init", at = @At("RETURN")) public void replaceCreativeMenu(CallbackInfo ci) { - if (VisualSettings.INSTANCE.replaceCreativeInventory.getValue()) { + if (VisualSettings.INSTANCE.replaceCreativeInventory.isEnabled()) { if (ClassicItemSelectionScreen.INSTANCE == null) return; MinecraftClient.getInstance().setScreen(ClassicItemSelectionScreen.INSTANCE); diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinJigsawBlockScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinJigsawBlockScreen.java index 45fcf4c2..038114f0 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinJigsawBlockScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinJigsawBlockScreen.java @@ -51,7 +51,7 @@ public class MixinJigsawBlockScreen extends Screen { @Inject(method = "init", at = @At("RETURN")) public void injectInit(CallbackInfo ci) { - if (VisualSettings.INSTANCE.removeNewerFeaturesFromJigsawScreen.getValue()) { + if (VisualSettings.INSTANCE.removeNewerFeaturesFromJigsawScreen.isEnabled()) { nameField.active = false; jointRotationButton.active = false; int index = children().indexOf(jointRotationButton); @@ -63,7 +63,7 @@ public class MixinJigsawBlockScreen extends Screen { @Inject(method = "render", at = @At("HEAD")) public void injectRender(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) { - if (VisualSettings.INSTANCE.removeNewerFeaturesFromJigsawScreen.getValue()) { + if (VisualSettings.INSTANCE.removeNewerFeaturesFromJigsawScreen.isEnabled()) { nameField.setText(targetField.getText()); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/merchant/MixinMerchantScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/merchant/MixinMerchantScreen.java index cc9067e0..4384b1ab 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/merchant/MixinMerchantScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/merchant/MixinMerchantScreen.java @@ -51,7 +51,7 @@ public abstract class MixinMerchantScreen extends HandledScreen protocolMap = new HashMap<>(); public static void load() { - registerVersion(VersionEnum.r1_20, 15, "1.20.1"); // 1.20 and 1.20.1 are the same, why care... + registerVersion(VersionEnum.r1_20tor1_20_1, 15, "1.20.1"); // 1.20 and 1.20.1 are the same, why care... registerVersion(VersionEnum.r1_19_4, 13, "1.19.4"); registerVersion(VersionEnum.r1_19_3, 12, "1.19.3"); registerVersion(VersionEnum.r1_19_1tor1_19_2, 9, "1.19.2"); diff --git a/src/main/java/de/florianmichael/viafabricplus/protocolhack/ProtocolHack.java b/src/main/java/de/florianmichael/viafabricplus/protocolhack/ProtocolHack.java index a767bf8c..af647f32 100644 --- a/src/main/java/de/florianmichael/viafabricplus/protocolhack/ProtocolHack.java +++ b/src/main/java/de/florianmichael/viafabricplus/protocolhack/ProtocolHack.java @@ -73,7 +73,7 @@ public class ProtocolHack { /** * This field stores the target version that you set in the GUI */ - public static VersionEnum targetVersion = VersionEnum.r1_20; + public static VersionEnum targetVersion = VersionEnum.r1_20tor1_20_1; /** * This method is used when you need the target version after connecting to the server. @@ -112,7 +112,7 @@ public class ProtocolHack { return channel.attr(FORCED_VERSION).get(); } - if (MinecraftClient.getInstance() == null || MinecraftClient.getInstance().isInSingleplayer()) return VersionEnum.r1_20; + if (MinecraftClient.getInstance() == null || MinecraftClient.getInstance().isInSingleplayer()) return VersionEnum.r1_20tor1_20_1; return targetVersion; } diff --git a/src/main/java/de/florianmichael/viafabricplus/screen/impl/settings/settingrenderer/ProtocolSyncBooleanSettingRenderer.java b/src/main/java/de/florianmichael/viafabricplus/screen/impl/settings/settingrenderer/ProtocolSyncBooleanSettingRenderer.java index 08d6843f..b5937672 100644 --- a/src/main/java/de/florianmichael/viafabricplus/screen/impl/settings/settingrenderer/ProtocolSyncBooleanSettingRenderer.java +++ b/src/main/java/de/florianmichael/viafabricplus/screen/impl/settings/settingrenderer/ProtocolSyncBooleanSettingRenderer.java @@ -18,12 +18,10 @@ package de.florianmichael.viafabricplus.screen.impl.settings.settingrenderer; import de.florianmichael.viafabricplus.screen.MappedSlotEntry; -import de.florianmichael.viafabricplus.base.settings.groups.GeneralSettings; import de.florianmichael.viafabricplus.base.settings.type_impl.ProtocolSyncBooleanSetting; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -43,20 +41,20 @@ public class ProtocolSyncBooleanSettingRenderer extends MappedSlotEntry { @Override public void mappedMouseClicked(double mouseX, double mouseY, int button) { - this.value.setValue(!this.value.getValue()); + this.value.setValue(this.value.getValue() + 1); + if (this.value.getValue() % 3 == 0) this.value.setValue(0); } @Override public void mappedRender(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; - final Text text = this.value.getValue() ? Text.translatable("words.viafabricplus.on") : Text.translatable("words.viafabricplus.off"); - Color color = this.value.getValue() ? Color.GREEN : Color.RED; + final Text text = Text.translatable("words.viafabricplus." + (this.value.isAuto() ? "auto" : this.value.isEnabled() ? "on" : "off")); + Color color = this.value.isAuto() ? Color.ORANGE : this.value.isEnabled() ? Color.GREEN : Color.RED; final int length = context.drawTextWithShadow(textRenderer, this.value.getName().formatted(Formatting.GRAY), 3, entryHeight / 2 - textRenderer.fontHeight / 2, -1); context.drawTextWithShadow(textRenderer, "(" + this.value.getProtocolRange().toString() + ")", length + 2, entryHeight / 2 - textRenderer.fontHeight / 2, -1); - if (GeneralSettings.INSTANCE.automaticallyChangeValuesBasedOnTheCurrentVersion.getValue()) color = color.darker().darker(); context.drawTextWithShadow(textRenderer, text, entryWidth - textRenderer.getWidth(text) - 3 - 3, entryHeight / 2 - textRenderer.fontHeight / 2, color.getRGB()); } } diff --git a/src/main/resources/assets/viafabricplus/lang/en_us.json b/src/main/resources/assets/viafabricplus/lang/en_us.json index 805ef386..1cb5db8d 100644 --- a/src/main/resources/assets/viafabricplus/lang/en_us.json +++ b/src/main/resources/assets/viafabricplus/lang/en_us.json @@ -15,6 +15,7 @@ "words.viafabricplus.error": "Something went wrong! Please try again later", "words.viafabricplus.translate": "Via translates to: %s", "words.viafabricplus.serverversion": "Server version: %s", + "words.viafabricplus.auto": "Auto", "settings.viafabricplus.authentication": "Authentication", "settings.viafabricplus.experimental": "Experimental", @@ -27,7 +28,6 @@ "general.viafabricplus.classicloading": "Show classic loading progress in connect screen", "general.viafabricplus.main": "Main button orientation", "general.viafabricplus.creative": "Remove not available items from creative tab", - "general.viafabricplus.protocolsync": "Automatically change Settings based on the current version", "general.viafabricplus.autodetect": "Auto detect version", "general.viafabricplus.advertised": "Show advertised/server version in Multiplayer",