Skip to content
This repository has been archived by the owner on Jan 21, 2023. It is now read-only.

Commit

Permalink
Restore ZoomSettingsPage, Add Right-align FPS Display
Browse files Browse the repository at this point in the history
  • Loading branch information
TexBlock committed Aug 4, 2022
1 parent ba76de1 commit e737cab
Show file tree
Hide file tree
Showing 8 changed files with 157 additions and 20 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ org.gradle.daemon = false

# mod version info
mod_id = rubidium_extras
mod_version = 1.3.3-i18n
mod_version = 1.3.4-i18n
minecraft_version = 1.18.2
forge_version = 40.1.0
mappings_version=1.18.2
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public class MagnesiumExtrasConfig
public static ConfigValue<String> fadeInQuality;

public static ConfigValue<String> fpsCounterMode;
public static ConfigValue<Boolean> fpsCounterAlignRight;
public static ConfigValue<Integer> fpsCounterPosition;
public static ForgeConfigSpec.ConfigValue<Integer> cloudHeight;

Expand Down Expand Up @@ -74,12 +75,13 @@ public class MagnesiumExtrasConfig
cloudHeight = b.define("Cloud Height [Raw, Default 256]", 256);
fadeInQuality = b.define("Chunk Fade In Quality (OFF, FAST, FANCY)", "FANCY");
fog = b.define("Render Fog", true);
// hideJEI = b.define("Hide JEI Until Searching", true);
//hideJEI = b.define("Hide JEI Until Searching", true);
fullScreenMode = b.defineEnum("Use Borderless Fullscreen", FullscreenMode.FULLSCREEN);
});

builder.Block("FPS Counter", b -> {
fpsCounterMode = b.define("Display FPS Counter (OFF, SIMPLE, ADVANCED)", "ADVANCED");
fpsCounterAlignRight = b.define("Right-align FPS Counter", false);
fpsCounterPosition = b.define("FPS Counter Distance", 12);
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ public void render(PoseStack matrixStack, float tickDelta, CallbackInfo info)
else
displayString = String.valueOf(fps);

boolean textAlignRight = MagnesiumExtrasConfig.fpsCounterAlignRight.get();

float textPos = (int)MagnesiumExtrasConfig.fpsCounterPosition.get();

int textAlpha = 200;
Expand All @@ -56,7 +58,13 @@ public void render(PoseStack matrixStack, float tickDelta, CallbackInfo info)
// Prevent FPS-Display to render outside screenspace
float maxTextPosX = client.getWindow().getGuiScaledWidth() - client.font.width(displayString);
float maxTextPosY = client.getWindow().getGuiScaledHeight() - client.font.lineHeight;
textPos = Math.min(textPos, maxTextPosX);
float textPosX, textPosY;
if (textAlignRight)
textPosX = client.getWindow().getGuiScaledWidth() - client.font.width(displayString) - textPos;
else
textPosX = Math.min(textPos, maxTextPosX);
textPosX = Math.min(Math.max(textPosX, 0), maxTextPosX);
textPosY = Math.min(textPos, maxTextPosY);

int drawColor = ((textAlpha & 0xFF) << 24) | textColor;

Expand All @@ -69,7 +77,7 @@ public void render(PoseStack matrixStack, float tickDelta, CallbackInfo info)
// }
// else
// {
client.font.drawShadow(matrixStack, displayString, textPos, textPos, drawColor);
client.font.drawShadow(matrixStack, displayString, textPosX, textPosY, drawColor);
//}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,15 @@
@Mixin(SodiumGameOptionPages.class)
public class SodiumGameOptionsMixin
{
@Shadow @Final private static SodiumOptionsStorage sodiumOpts;
@Shadow
@Final
private static SodiumOptionsStorage sodiumOpts;

//@Inject(at = @At("HEAD"), method = "experimental", remap = false, cancellable = true)

@Shadow @Final private static MinecraftOptionsStorage vanillaOpts;
@Shadow
@Final
private static MinecraftOptionsStorage vanillaOpts;

//private static void experimental(CallbackInfoReturnable<OptionPage> cir)
@Inject(
Expand Down Expand Up @@ -82,8 +86,19 @@ private static void Inject(CallbackInfoReturnable<OptionPage> cir, List<OptionGr
(opts) -> MagnesiumExtrasConfig.fpsCounterPosition.get())
.build();

OptionImpl<SodiumGameOptions, Boolean> displayFpsAlignRight = OptionImpl.createBuilder(Boolean.class, sodiumOpts)
.setName(Component.nullToEmpty(I18n.get("rb_extra.right_align_fps.name")))
.setTooltip(Component.nullToEmpty(I18n.get("rb_extra.right_align_fps.tooltip")))
.setControl(TickBoxControl::new)
.setBinding(
(options, value) -> MagnesiumExtrasConfig.fpsCounterAlignRight.set(value),
(options) -> MagnesiumExtrasConfig.fpsCounterAlignRight.get())
.setImpact(OptionImpact.LOW)
.build();

groups.add(OptionGroup.createBuilder()
.add(displayFps)
.add(displayFpsAlignRight)
.add(displayFpsPos)
.build());

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
package vice.rubidium_extras.mixins.SodiumConfig;


import com.google.common.collect.ImmutableList;
import me.jellysquid.mods.sodium.client.gui.SodiumGameOptions;
import me.jellysquid.mods.sodium.client.gui.SodiumOptionsGUI;
import me.jellysquid.mods.sodium.client.gui.options.*;
import me.jellysquid.mods.sodium.client.gui.options.control.CyclingControl;
import me.jellysquid.mods.sodium.client.gui.options.control.TickBoxControl;
import me.jellysquid.mods.sodium.client.gui.options.storage.SodiumOptionsStorage;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.network.chat.Component;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import vice.rubidium_extras.config.MagnesiumExtrasConfig;

import java.util.ArrayList;
import java.util.List;


@Pseudo
@Mixin(SodiumOptionsGUI.class)
public abstract class ZoomSettingsPage
{
@Shadow
@Final
private List<OptionPage> pages;
private static final SodiumOptionsStorage sodiumOpts = new SodiumOptionsStorage();
@Inject(method = "<init>", at = @At("RETURN"))
private void DynamicLights(Screen prevScreen, CallbackInfo ci)
{
List<OptionGroup> groups = new ArrayList();
//OptionImpl<SodiumGameOptions, Boolean> lowerSensitivity = OptionImpl.createBuilder(Boolean.class, sodiumOpts)
// .setName("Lower Zoom Sensitivity")
// .setTooltip("Lowers your sensitivity when zooming to make it feel more consistent.")
// .setControl(TickBoxControl::new)
// .setBinding(
// (options, value) -> MagnesiumExtrasConfig.lowerZoomSensitivity.set(value),
// (options) -> MagnesiumExtrasConfig.lowerZoomSensitivity.get())
// .setImpact(OptionImpact.LOW)
// .build();
OptionImpl<SodiumGameOptions, Boolean> zoomScrolling = OptionImpl.createBuilder(Boolean.class, sodiumOpts)
.setName(Component.nullToEmpty(I18n.get("rb_extra.zoom_scrolling.name")))
.setTooltip(Component.nullToEmpty(I18n.get("rb_extra.zoom_scrolling.tooltip")))
.setControl(TickBoxControl::new)
.setBinding(
(options, value) -> MagnesiumExtrasConfig.zoomScrolling.set(value),
(options) -> MagnesiumExtrasConfig.zoomScrolling.get())
.setImpact(OptionImpact.LOW)
.build();
OptionImpl<SodiumGameOptions, Boolean> zoomOverlay = OptionImpl.createBuilder(Boolean.class, sodiumOpts)
.setName(Component.nullToEmpty(I18n.get("rb_extra.zoom_overlay.name")))
.setTooltip(Component.nullToEmpty(I18n.get("rb_extra.zoom_overlay.tooltip")))
.setControl(TickBoxControl::new)
.setBinding(
(options, value) -> MagnesiumExtrasConfig.zoomOverlay.set(value),
(options) -> MagnesiumExtrasConfig.zoomOverlay.get())
.setImpact(OptionImpact.LOW)
.build();
groups.add(OptionGroup
.createBuilder()
//.add(lowerSensitivity)
.add(zoomScrolling)
.add(zoomOverlay)
.build()
);
Option<MagnesiumExtrasConfig.ZoomTransitionOptions> zoomTransition = OptionImpl.createBuilder(MagnesiumExtrasConfig.ZoomTransitionOptions.class, sodiumOpts)
.setName(Component.nullToEmpty(I18n.get("rb_extra.zoom_transition_mode.name")))
.setTooltip(Component.nullToEmpty("rb_extra.zoom_transition_mode.tooltip"))
.setControl((option) -> new CyclingControl<>(option, MagnesiumExtrasConfig.ZoomTransitionOptions.class, new Component[] {
Component.nullToEmpty(I18n.get("rb_extra.options.off")),
Component.nullToEmpty(I18n.get("rb_extra.options.smooth"))
}))
.setBinding(
(opts, value) -> MagnesiumExtrasConfig.zoomTransition.set(value.toString()),
(opts) -> MagnesiumExtrasConfig.ZoomTransitionOptions.valueOf(MagnesiumExtrasConfig.zoomTransition.get()))
.setImpact(OptionImpact.LOW)
.build();
Option<MagnesiumExtrasConfig.ZoomModes> zoomMode = OptionImpl.createBuilder(MagnesiumExtrasConfig.ZoomModes.class, sodiumOpts)
.setName(Component.nullToEmpty(I18n.get("rb_extra.zoom_keybind_mode.name")))
.setTooltip(Component.nullToEmpty(I18n.get("rb_extra.zoom_keybind_mode.tooltip")))
.setControl((option) -> new CyclingControl<>(option, MagnesiumExtrasConfig.ZoomModes.class, new Component[] {
Component.nullToEmpty(I18n.get("rb_extra.options.hold")),
Component.nullToEmpty(I18n.get("rb_extra.options.toggle")),
Component.nullToEmpty(I18n.get("rb_extra.options.persistent"))
}))
.setBinding(
(opts, value) -> MagnesiumExtrasConfig.zoomMode.set(value.toString()),
(opts) -> MagnesiumExtrasConfig.ZoomModes.valueOf(MagnesiumExtrasConfig.zoomMode.get()))
.setImpact(OptionImpact.LOW)
.build();
//Option<MagnesiumExtrasConfig.CinematicCameraOptions> cinematicCameraMode = OptionImpl.createBuilder(MagnesiumExtrasConfig.CinematicCameraOptions.class, sodiumOpts)
// .setName("Cinematic Camera Options")
// .setTooltip("Cinematic Camera Mode")
// .setControl((option) -> new CyclingControl<>(option, MagnesiumExtrasConfig.CinematicCameraOptions.class, new String[] { "Off", "Vanilla", "Multiplied"}))
// .setBinding(
// (opts, value) -> MagnesiumExtrasConfig.cinematicCameraMode.set(value.toString()),
// (opts) -> MagnesiumExtrasConfig.CinematicCameraOptions.valueOf(MagnesiumExtrasConfig.cinematicCameraMode.get()))
// .setImpact(OptionImpact.LOW)
// .build();
groups.add(OptionGroup
.createBuilder()
.add(zoomTransition)
.add(zoomMode)
//.add(cinematicCameraMode)
.build()
);
pages.add(new OptionPage(Component.nullToEmpty(I18n.get("rb_extra.page.zoom")), ImmutableList.copyOf(groups)));
}
}
11 changes: 4 additions & 7 deletions src/main/resources/assets/rubidium_extras/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,8 @@
"rb_extra.options.unit.pixels": "%s Pixels",
"rb_extra.options.unit.blocks": "%s Blocks",

"rb_extra.misc.page.name": "Misc",
"rb_extra.page.zoom": "Zoom",
"rb_extra.page.zoom": "Zoom (Testing)",
"rb_extra.page.extras": "Extras",
"rb_extra.page.experimental": "Experimental",
"rb_extra.page.advanced": "Advanced",

"rb_extra.cloud_height.name": "Cloud Height",
"rb_extra.cloud_height.tooltip": "Raises cloud height.",
Expand All @@ -39,7 +36,9 @@
"rb_extra.display_fps.name": "Display FPS",
"rb_extra.display_fps.tooltip": "Displays the current FPS. Advanced mode also displays minimum FPS, as well as 15 second average FPS, which are more useful for judging performance.",
"rb_extra.position_fps.name": "FPS Display Position",
"rb_extra.position_fps.tooltip": "Offsets the FPS display a few pixels",
"rb_extra.position_fps.tooltip": "Offsets the FPS display from the top-left or top-right corner of the screen.",
"rb_extra.right_align_fps.name": "Right-align FPS Display",
"rb_extra.right_align_fps.tooltip":"Aligns the FPS display to the right side of the screen. Useful if you have other overlays that show on the left side of the screen. Does nothing if the Display FPS option is set to Off.",

"rb_extra.enable_max_entity_distance.name": "Enable Max Entity Distance",
"rb_extra.enable_max_entity_distance.tooltip": "Toggles off entity culling.",
Expand All @@ -52,8 +51,6 @@
"rb_extra.vertical_tile_distance.name": "Vertical Tile Distance",
"rb_extra.vertical_tile_distance.tooltip": "Hides block entities underneath this many blocks, improving performance above caves (if you have your machines in caves, for some reason). This should ideally be set lower than the horizontal distance.",

"rb_extra.lower_zoom_sensitivity.name": "Lower Zoom Sensitivity",
"rb_extra.lower_zoom_sensitivity.tooltip": "Lowers your sensitivity when zooming to make it feel more consistent.",
"rb_extra.zoom_scrolling.name": "Zoom Scrolling",
"rb_extra.zoom_scrolling.tooltip": "Allows using scroll wheel to adjust zoom amount.",
"rb_extra.zoom_transition_mode.name": "Zoom Transition Mode",
Expand Down
12 changes: 5 additions & 7 deletions src/main/resources/assets/rubidium_extras/lang/zh_cn.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,8 @@
"rb_extra.options.unit.pixels": "%s 像素",
"rb_extra.options.unit.blocks": "%s 方块",

"rb_extra.misc.page.name": "杂项",
"rb_extra.page.zoom": "缩放",
"rb_extra.page.zoom": "缩放(测试)",
"rb_extra.page.extras": "扩展",
"rb_extra.page.experimental": "实验性",
"rb_extra.page.advanced": "高级",

"rb_extra.cloud_height.name": "云层高度",
"rb_extra.cloud_height.tooltip": "提高云层高度。",
Expand All @@ -39,7 +36,10 @@
"rb_extra.display_fps.name": "显示 FPS",
"rb_extra.display_fps.tooltip": "显示当前的 FPS 。高级模式还显示最低 FPS ,以及15秒的平均 FPS ,这对判断性能更有用。",
"rb_extra.position_fps.name": "FPS 显示位置",
"rb_extra.position_fps.tooltip": "显示帧数的位置",
"rb_extra.position_fps.tooltip": "从屏幕的左上角或右上角显示 FPS。",
"rb_extra.right_align_fps.name": "在右侧显示 FPS",
"rb_extra.right_align_fps.tooltip":"将FPS显示在屏幕的右侧。如果你有其他显示在屏幕左边的东西,这很有用。如果 “显示 FPS” 选项被设置为 “关闭”,则没有任何作用。",


"rb_extra.enable_max_entity_distance.name": "启用最大实体距离",
"rb_extra.enable_max_entity_distance.tooltip": "关闭实体剔除。",
Expand All @@ -52,8 +52,6 @@
"rb_extra.vertical_tile_distance.name": "垂直实体方块渲染距离",
"rb_extra.vertical_tile_distance.tooltip": "将实体方块隐藏在这么多的方块下面,提高在山洞上面的性能(如果你的机器出于某种原因在山洞里)。这个值最好设置得比水平距离要低。",

"rb_extra.lower_zoom_sensitivity.name": "较低的缩放灵敏度",
"rb_extra.lower_zoom_sensitivity.tooltip": "降低缩放时的灵敏度,使其感觉更稳定。",
"rb_extra.zoom_scrolling.name": "滚轮缩放",
"rb_extra.zoom_scrolling.tooltip": "允许使用滚轮来调整缩放量。",
"rb_extra.zoom_transition_mode.name": "缩放过渡模式",
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/rubidium_extras.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"FrameCounter.FpsAccessorMixin",
"FrameCounter.FrameCounterMixin",
"SodiumConfig.SodiumGUIMixin",
"SodiumConfig.ZoomSettingsPage",
"TotalDarkness.MixinGameRenderer",
"TotalDarkness.MixinLightmapTextureManager",
"TotalDarkness.MixinNativeImageBackedTexture",
Expand Down

0 comments on commit e737cab

Please sign in to comment.