yeah~
This commit is contained in:
parent
b928cb9956
commit
ad44ffec5b
@ -6,7 +6,7 @@ minecraft_version=1.21.4
|
||||
yarn_mappings=1.21.4+build.8
|
||||
loader_version=0.16.10
|
||||
# Mod Properties
|
||||
mod_version=1.14.514.038
|
||||
mod_version=1.14.514.039
|
||||
maven_group=semmiedev
|
||||
archives_base_name=disc_jockey_revive
|
||||
# Dependencies
|
||||
|
@ -103,6 +103,10 @@ public class SongPlayer implements ClientTickEvents.StartWorldTick {
|
||||
private boolean isRandomPlaying = false;
|
||||
private int randomIndex = -1;
|
||||
|
||||
public synchronized void setSpeed(float speed) {
|
||||
this.speed = MathHelper.clamp(speed, 0.25f, 4.0f);
|
||||
}
|
||||
|
||||
public synchronized void stopPlaybackThread() {
|
||||
this.playbackThread = null; // Should stop on its own then
|
||||
DebugLogger.log("SongPlayer: 停止播放线程。");
|
||||
|
@ -0,0 +1,16 @@
|
||||
package semmiedev.disc_jockey_revive.gui;
|
||||
|
||||
import net.minecraft.client.gui.widget.SliderWidget;
|
||||
import net.minecraft.text.Text;
|
||||
|
||||
// 唉
|
||||
public abstract class CustomSliderWidget extends SliderWidget {
|
||||
public CustomSliderWidget(int x, int y, int width, int height, Text text, double value) {
|
||||
super(x, y, width, height, text, value);
|
||||
updateMessage();
|
||||
}
|
||||
|
||||
public void updateMessagePublic() {
|
||||
updateMessage();
|
||||
}
|
||||
}
|
@ -4,12 +4,14 @@ import net.minecraft.client.gui.DrawContext;
|
||||
import net.minecraft.client.gui.screen.ConfirmScreen;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.client.gui.widget.ButtonWidget;
|
||||
import net.minecraft.client.gui.widget.SliderWidget;
|
||||
import net.minecraft.client.gui.widget.TextFieldWidget;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.text.MutableText;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Formatting;
|
||||
import semmiedev.disc_jockey_revive.*;
|
||||
import semmiedev.disc_jockey_revive.gui.CustomSliderWidget;
|
||||
import semmiedev.disc_jockey_revive.gui.ProgressBarRenderer;
|
||||
import semmiedev.disc_jockey_revive.gui.SongListWidget;
|
||||
import semmiedev.disc_jockey_revive.gui.hud.BlocksOverlay;
|
||||
@ -62,6 +64,8 @@ public class DiscJockeyScreen extends Screen {
|
||||
|
||||
private ProgressBarRenderer progressBarRenderer;
|
||||
|
||||
public CustomSliderWidget speedSlider;
|
||||
|
||||
public DiscJockeyScreen() {
|
||||
super(Main.NAME);
|
||||
this.progressBarRenderer = new ProgressBarRenderer();
|
||||
@ -97,6 +101,7 @@ public class DiscJockeyScreen extends Screen {
|
||||
}
|
||||
}
|
||||
|
||||
// 返回
|
||||
folderUpButton = ButtonWidget.builder(FOLDER_UP, button -> {
|
||||
if (currentFolder != null) {
|
||||
currentFolder = null;
|
||||
@ -106,6 +111,7 @@ public class DiscJockeyScreen extends Screen {
|
||||
}).dimensions(10, 10, 20, 20).build();
|
||||
addDrawableChild(folderUpButton);
|
||||
|
||||
// 播放模式
|
||||
playModeButton = ButtonWidget.builder(getPlayModeText(), button -> {
|
||||
switch (currentPlayMode) {
|
||||
case SINGLE_LOOP -> currentPlayMode = PlayMode.LIST_LOOP;
|
||||
@ -118,6 +124,30 @@ public class DiscJockeyScreen extends Screen {
|
||||
}).dimensions(width - 120, 10, 100, 20).build();
|
||||
addDrawableChild(playModeButton);
|
||||
|
||||
// 我展示速度
|
||||
int sliderWidth = 120;
|
||||
int sliderX = width - 120 - sliderWidth - 10;
|
||||
int sliderY = 10;
|
||||
speedSlider = new CustomSliderWidget(sliderX, sliderY, sliderWidth, 20,
|
||||
Text.translatable(Main.MOD_ID + ".screen.speed"),
|
||||
(Main.SONG_PLAYER.speed - 0.25f) / (4.0f - 0.25f)
|
||||
) {
|
||||
@Override
|
||||
protected void updateMessage() {
|
||||
float currentSpeed = (float) (0.25f + this.value * (4.0f - 0.25f));
|
||||
this.setMessage(Text.translatable(Main.MOD_ID + ".screen.speed_value",
|
||||
String.format("%.2f", currentSpeed)));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void applyValue() {
|
||||
float newSpeed = (float) (0.25f + this.value * (4.0f - 0.25f));
|
||||
Main.SONG_PLAYER.speed = newSpeed;
|
||||
DebugLogger.log("播放速度设置为: {:.2f}x", newSpeed);
|
||||
}
|
||||
};
|
||||
addDrawableChild(speedSlider);
|
||||
|
||||
int buttonY;
|
||||
if (isLargeScreen){
|
||||
buttonY = height - 30;
|
||||
@ -278,7 +308,7 @@ public class DiscJockeyScreen extends Screen {
|
||||
// 显示当前文件夹和播放模式
|
||||
String folderName = currentFolder == null ? "/" : currentFolder.name;
|
||||
context.drawTextWithShadow(textRenderer, CURRENT_FOLDER.getString() + ": " + folderName, 35, 15, 0xFFFFFF);
|
||||
context.drawTextWithShadow(textRenderer, PLAY_MODE.getString() + ":", width - 220, 15, 0xFFFFFF);
|
||||
// context.drawTextWithShadow(textRenderer, PLAY_MODE.getString() + ":", width - 220, 15, 0xFFFFFF);
|
||||
|
||||
int screenWidth = context.getScaledWindowWidth();
|
||||
|
||||
@ -318,7 +348,8 @@ public class DiscJockeyScreen extends Screen {
|
||||
);
|
||||
}
|
||||
|
||||
DebugLogger.log("DiscJockeyScreen: 初始化界面完成");
|
||||
|
||||
// DebugLogger.log("DiscJockeyScreen: 初始化界面完成");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -93,5 +93,8 @@
|
||||
"disc_jockey_revive.player.invalid_state_tuning": "Cannot tune: Invalid game state or mode.",
|
||||
"disc_jockey_revive.player.tuned": "Tuning completed。",
|
||||
"text.autoconfig.disc_jockey_revive.option.debugModeEnabled": "Enable Debug Mode",
|
||||
"text.autoconfig.disc_jockey_revive.option.debugModeEnabled.@Tooltip": "Enable detailed logging for debugging.\nKeep it off unless troubleshooting.\nOf course, many debug parts have been removed.\nEnabling this may cause the log file to be too large.\nHonestly, it's not really helpful for you."
|
||||
"text.autoconfig.disc_jockey_revive.option.debugModeEnabled.@Tooltip": "Enable detailed logging for debugging.\nKeep it off unless troubleshooting.\nOf course, many debug parts have been removed.\nEnabling this may cause the log file to be too large.\nHonestly, it's not really helpful for you.",
|
||||
"disc_jockey_revive.screen.speed": "Speed",
|
||||
"disc_jockey_revive.screen.speed_value": "Speed: %.2fx",
|
||||
"disc_jockey_revive.screen.speed.@Tooltip": "Drag to adjust playback speed\n0.25~4"
|
||||
}
|
||||
|
@ -93,5 +93,8 @@
|
||||
"disc_jockey_revive.player.invalid_state_tuning": "无法调音:游戏状态或模式无效。",
|
||||
"disc_jockey_revive.player.tuned": "调音完成。",
|
||||
"text.autoconfig.disc_jockey_revive.option.debugModeEnabled": "启用调试模式",
|
||||
"text.autoconfig.disc_jockey_revive.option.debugModeEnabled.@Tooltip": "启用详细日志输出以进行调试。\n除非排查问题,否则请保持关闭。\n当然,很多调试用的部分已经移除。\n开启这个可能会导致日志文件占用过大\n老实说,其实这对你并没有什么帮助"
|
||||
"text.autoconfig.disc_jockey_revive.option.debugModeEnabled.@Tooltip": "启用详细日志输出以进行调试。\n除非排查问题,否则请保持关闭。\n当然,很多调试用的部分已经移除。\n开启这个可能会导致日志文件占用过大\n老实说,其实这对你并没有什么帮助",
|
||||
"disc_jockey_revive.screen.speed": "速度",
|
||||
"disc_jockey_revive.screen.speed_value": "速度: %.2fx",
|
||||
"disc_jockey_revive.screen.speed.@Tooltip": "拖动调整播放速度\n0.25~4"
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user