yee~
This commit is contained in:
parent
5d3f71cef5
commit
b928cb9956
@ -5,8 +5,10 @@ Download the mod at [Modrinth](https://modrinth.com/mod/disc-jockey) or [CurseFo
|
||||
此 Mod 是基于 [Disc-Jockey](https://github.com/SemmieDev/Disc-Jockey)(由 [SemmieDev](https://github.com/SemmieDev/) 开发)的修改版本,适配了 Minecraft 1.21.4。
|
||||
原始代码版权归原作者所有,修改部分版权归 BRanulf 所有。
|
||||
|
||||
同时,该二改版本我本人并没有上传至任何其他网站(包括 Modrinth 、CurseForge 、Github 等),请勿用于商业用途。
|
||||
同时,该二改版本我本人并没有上传至任何其他网站(包括 Modrinth 、CurseForge 、Github 等),请勿用于商业用途及其他非法用途。
|
||||
|
||||
[唯一下载地址](https://git.branulf.top/Branulf/DIsc_Jockey_revive/releases)
|
||||
目前[Modrinth](https://modrinth.com/mod/disc_jockey_revive)上的这个版本非本人上传,就当允许上传了罢,毕竟我比较懒XD
|
||||
|
||||
[最新版本下载:Release](https://git.branulf.top/Branulf/DIsc_Jockey_revive/releases)
|
||||
|
||||
~~这边建议去给原作者点个Star~~
|
@ -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.037
|
||||
mod_version=1.14.514.038
|
||||
maven_group=semmiedev
|
||||
archives_base_name=disc_jockey_revive
|
||||
# Dependencies
|
||||
|
@ -48,6 +48,7 @@ public class KeyMappingManager {
|
||||
}
|
||||
|
||||
public void loadMappings() {
|
||||
DebugLogger.log("KeyMappingManager: 加载键位预设");
|
||||
if (!MAPPINGS_FILE.exists()) {
|
||||
Main.LOGGER.info("未找到键映射文件,正在创建默认的类似于 FL Studio 的映射。");
|
||||
mappings.clear();
|
||||
@ -91,6 +92,8 @@ public class KeyMappingManager {
|
||||
mappings.put(InputUtil.fromKeyCode(InputUtil.GLFW_KEY_LEFT_BRACKET, 0), new Note(dirt, (byte) 23));
|
||||
mappings.put(InputUtil.fromKeyCode(InputUtil.GLFW_KEY_EQUAL, 0), new Note(dirt, (byte) 24));
|
||||
|
||||
DebugLogger.log("KeyMappingManager: 默认预设创建完成");
|
||||
|
||||
|
||||
saveMappings();
|
||||
return;
|
||||
@ -118,6 +121,7 @@ public class KeyMappingManager {
|
||||
|
||||
public void saveMappings() {
|
||||
MAPPINGS_FILE.getParentFile().mkdirs();
|
||||
DebugLogger.log("KeyMappingManager: 开始保存按键映射");
|
||||
try (FileWriter writer = new FileWriter(MAPPINGS_FILE)) {
|
||||
HashMap<String, NoteData> dataToSave = new HashMap<>();
|
||||
for (Map.Entry<InputUtil.Key, Note> entry : mappings.entrySet()) {
|
||||
@ -136,10 +140,12 @@ public class KeyMappingManager {
|
||||
|
||||
public void setMapping(InputUtil.Key key, Note note) {
|
||||
mappings.put(key, note);
|
||||
DebugLogger.log("KeyMappingManager: 已设置按键映射:"+key.getTranslationKey()+" 为 "+getNoteDisplayName(note));
|
||||
}
|
||||
|
||||
public void removeMapping(InputUtil.Key key) {
|
||||
mappings.remove(key);
|
||||
DebugLogger.log("KeyMappingManager: 已移除键位预设:"+key.getTranslationKey());
|
||||
}
|
||||
|
||||
public Map<InputUtil.Key, Note> getMappings() {
|
||||
@ -149,7 +155,7 @@ public class KeyMappingManager {
|
||||
public static String getNoteDisplayName(Note note) {
|
||||
if (note == null) return "未设置";
|
||||
|
||||
String instrumentTranslationKey = "block.minecraft.note_block.instrument." + note.instrument().asString();
|
||||
String instrumentTranslationKey = " " + note.instrument().asString();
|
||||
String instrumentName = Text.translatable(instrumentTranslationKey).getString();
|
||||
|
||||
int pitch = note.note();
|
||||
|
@ -51,6 +51,7 @@ public class LiveDjPlayer implements ClientTickEvents.StartWorldTick {
|
||||
|
||||
// 调音
|
||||
public synchronized void startTuning() {
|
||||
DebugLogger.log("LiveDjPlayer: 开始调音。");
|
||||
if (tuned && noteBlocks != null) {
|
||||
MinecraftClient.getInstance().inGameHud.getChatHud().addMessage(Text.translatable(Main.MOD_ID+".player.retuning").formatted(Formatting.YELLOW));
|
||||
} else {
|
||||
@ -75,6 +76,7 @@ public class LiveDjPlayer implements ClientTickEvents.StartWorldTick {
|
||||
// 停止调音
|
||||
public synchronized void stopTuning() {
|
||||
tuningRequested = false;
|
||||
DebugLogger.log("LiveDjPlayer: 停止调音");
|
||||
}
|
||||
|
||||
// 是否正在调音
|
||||
@ -93,6 +95,7 @@ public class LiveDjPlayer implements ClientTickEvents.StartWorldTick {
|
||||
|
||||
// 播放
|
||||
public boolean playNoteBlock(Note note) {
|
||||
DebugLogger.log("LiveDjPlayer: 触发播放");
|
||||
MinecraftClient client = MinecraftClient.getInstance();
|
||||
ClientWorld world = client.world;
|
||||
ClientPlayerEntity player = client.player;
|
||||
@ -120,6 +123,7 @@ public class LiveDjPlayer implements ClientTickEvents.StartWorldTick {
|
||||
|
||||
// 获取可交互的
|
||||
private boolean sendNotePacket(BlockPos blockPos) {
|
||||
DebugLogger.log("LiveDjPlayer: 发送播放数据包。");
|
||||
MinecraftClient client = MinecraftClient.getInstance();
|
||||
ClientPlayerEntity player = client.player;
|
||||
long now = System.currentTimeMillis();
|
||||
@ -189,7 +193,7 @@ public class LiveDjPlayer implements ClientTickEvents.StartWorldTick {
|
||||
return packetsSent;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onStartTick(ClientWorld world) {
|
||||
MinecraftClient client = MinecraftClient.getInstance();
|
||||
@ -451,6 +455,7 @@ public class LiveDjPlayer implements ClientTickEvents.StartWorldTick {
|
||||
}
|
||||
|
||||
private HashMap<Byte, BlockPos> getNotesMapForInstrument(NoteBlockInstrument instrument) {
|
||||
DebugLogger.log("LiveDjPlayer: 尝试获取音符。");
|
||||
if (noteBlocks == null) {
|
||||
noteBlocks = new HashMap<>();
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ import java.util.ArrayList;
|
||||
public class Main implements ClientModInitializer {
|
||||
public static final String MOD_ID = "disc_jockey_revive";
|
||||
public static final MutableText NAME = Text.literal("Disc Jockey");
|
||||
public static final Logger LOGGER = LogManager.getLogger("Disc Jockey");
|
||||
public static final Logger LOGGER = LogManager.getLogger("Disc Jockey Revive");
|
||||
public static final ArrayList<ClientTickEvents.StartWorldTick> TICK_LISTENERS = new ArrayList<>();
|
||||
public static final Previewer PREVIEWER = new Previewer();
|
||||
public static final SongPlayer SONG_PLAYER = new SongPlayer();
|
||||
@ -45,6 +45,7 @@ public class Main implements ClientModInitializer {
|
||||
|
||||
@Override
|
||||
public void onInitializeClient() {
|
||||
DebugLogger.log("Main: 正在进行初始化。");
|
||||
configHolder = AutoConfig.register(ModConfig.class, JanksonConfigSerializer::new);
|
||||
config = configHolder.getConfig();
|
||||
|
||||
@ -68,10 +69,12 @@ public class Main implements ClientModInitializer {
|
||||
PREVIEWER.stop();
|
||||
SONG_PLAYER.stop();
|
||||
LIVE_DJ_PLAYER.stopTuning();
|
||||
DebugLogger.log("Main: 退出世界,停止。");
|
||||
}
|
||||
prevWorld = client.world;
|
||||
|
||||
if (openScreenKeyBind.wasPressed()) {
|
||||
DebugLogger.log("Main: 打开主界面:"+openScreenKeyBind);
|
||||
if (SongLoader.loadingSongs) {
|
||||
client.inGameHud.getChatHud().addMessage(Text.translatable(Main.MOD_ID+".still_loading").formatted(Formatting.RED));
|
||||
SongLoader.showToast = true;
|
||||
@ -80,6 +83,7 @@ public class Main implements ClientModInitializer {
|
||||
}
|
||||
}
|
||||
if (openLiveDjScreenKeyBind.wasPressed()) {
|
||||
DebugLogger.log("Main: 打开DJ界面:"+openLiveDjScreenKeyBind);
|
||||
if (SongLoader.loadingSongs) {
|
||||
client.inGameHud.getChatHud().addMessage(Text.translatable(Main.MOD_ID+".still_loading").formatted(Formatting.RED));
|
||||
SongLoader.showToast = true;
|
||||
@ -102,8 +106,11 @@ public class Main implements ClientModInitializer {
|
||||
PREVIEWER.stop();
|
||||
SONG_PLAYER.stop();
|
||||
LIVE_DJ_PLAYER.stopTuning();
|
||||
DebugLogger.log("Main: 断开连接,停止。");
|
||||
});
|
||||
|
||||
HudRenderCallback.EVENT.register(new PlaybackProgressOverlay());
|
||||
|
||||
DebugLogger.log("Main: 出屎化完成。");
|
||||
}
|
||||
}
|
||||
|
@ -11,12 +11,13 @@ public class Previewer implements ClientTickEvents.StartWorldTick {
|
||||
|
||||
private int i;
|
||||
private float tick;
|
||||
private Song song;
|
||||
public Song song;
|
||||
|
||||
public void start(Song song) {
|
||||
this.song = song;
|
||||
Main.TICK_LISTENERS.add(this);
|
||||
running = true;
|
||||
DebugLogger.log("Previewer: 开始播放。");
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
@ -24,6 +25,30 @@ public class Previewer implements ClientTickEvents.StartWorldTick {
|
||||
running = false;
|
||||
i = 0;
|
||||
tick = 0;
|
||||
DebugLogger.log("Previewer: 停止播放。");
|
||||
}
|
||||
|
||||
// 获取当前播放进度 (0.0 - 1.0)
|
||||
public synchronized float getProgress() {
|
||||
if (song == null || !running) return 0;
|
||||
return Math.min(1.0f, (float) (tick / song.length));
|
||||
}
|
||||
|
||||
// 获取格式化时间字符串
|
||||
public synchronized String getFormattedTime() {
|
||||
if (song == null) return "00:00 / 00:00";
|
||||
|
||||
double totalSeconds = song.getLengthInSeconds();
|
||||
double currentSeconds = song.ticksToMilliseconds(tick) / 1000.0;
|
||||
|
||||
return formatTime((int) currentSeconds) + " / " + formatTime((int) totalSeconds);
|
||||
}
|
||||
|
||||
// 格式化时间为 mm:ss
|
||||
private String formatTime(int seconds) {
|
||||
int min = seconds / 60;
|
||||
int sec = seconds % 60;
|
||||
return String.format("%02d:%02d", min, sec);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -34,6 +34,7 @@ public class SongLoader {
|
||||
}
|
||||
|
||||
public static void loadSongs() {
|
||||
DebugLogger.log("SongLoader: 加载歌曲");
|
||||
if (loadingSongs) return;
|
||||
new Thread(() -> {
|
||||
loadingSongs = true;
|
||||
@ -55,6 +56,7 @@ public class SongLoader {
|
||||
}
|
||||
|
||||
private static void loadFolder(File folder, SongFolder parentFolder) {
|
||||
DebugLogger.log("SongLoader: 加载文件夹");
|
||||
if (!folder.isDirectory()) return;
|
||||
|
||||
SongFolder songFolder = new SongFolder(folder.getName(), folder.getPath());
|
||||
@ -86,6 +88,7 @@ public class SongLoader {
|
||||
}
|
||||
|
||||
public static Song loadSong(File file) throws IOException {
|
||||
DebugLogger.log("SongLoader: 加载歌曲:"+file.getName());
|
||||
if (file.isFile()) {
|
||||
BinaryReader reader = new BinaryReader(Files.newInputStream(file.toPath()));
|
||||
Song song = new Song();
|
||||
|
@ -78,6 +78,7 @@ public class SongPlayer implements ClientTickEvents.StartWorldTick {
|
||||
|
||||
this.playbackThread = new Thread(() -> {
|
||||
Thread ownThread = this.playbackThread;
|
||||
DebugLogger.log("SongPlayer: 开始播放线程。");
|
||||
while(ownThread == this.playbackThread) {
|
||||
try {
|
||||
// Accuracy doesn't really matter at this precision imo
|
||||
@ -104,9 +105,11 @@ public class SongPlayer implements ClientTickEvents.StartWorldTick {
|
||||
|
||||
public synchronized void stopPlaybackThread() {
|
||||
this.playbackThread = null; // Should stop on its own then
|
||||
DebugLogger.log("SongPlayer: 停止播放线程。");
|
||||
}
|
||||
|
||||
public synchronized void start(Song song) {
|
||||
DebugLogger.log("SongPlayer: 开始播放。");
|
||||
if (!Main.config.hideWarning && !warned) {
|
||||
MinecraftClient.getInstance().inGameHud.getChatHud().addMessage(Text.translatable("disc_jockey_revive.warning").formatted(Formatting.BOLD, Formatting.RED));
|
||||
warned = true;
|
||||
@ -141,6 +144,7 @@ public class SongPlayer implements ClientTickEvents.StartWorldTick {
|
||||
}
|
||||
|
||||
public synchronized void stop() {
|
||||
DebugLogger.log("SongPlayer: 停止播放。");
|
||||
//MinecraftClient.getInstance().send(() -> Main.TICK_LISTENERS.remove(this));
|
||||
stopPlaybackThread();
|
||||
running = false;
|
||||
@ -260,6 +264,7 @@ public class SongPlayer implements ClientTickEvents.StartWorldTick {
|
||||
public synchronized void setPlayMode(PlayMode mode) {
|
||||
this.playMode = mode;
|
||||
this.loopSong = mode == PlayMode.SINGLE_LOOP;
|
||||
DebugLogger.log("SongPlayer: 设置播放模式:"+ mode);
|
||||
}
|
||||
|
||||
// 获取当前播放进度 (0.0 - 1.0)
|
||||
@ -294,6 +299,7 @@ public class SongPlayer implements ClientTickEvents.StartWorldTick {
|
||||
|
||||
int prevIndex = (currentIndex - 1 + SongLoader.currentFolder.songs.size()) % SongLoader.currentFolder.songs.size();
|
||||
start(SongLoader.currentFolder.songs.get(prevIndex));
|
||||
DebugLogger.log("SongPlayer: 切上一首。");
|
||||
}
|
||||
|
||||
// 播放下一首
|
||||
@ -309,6 +315,7 @@ public class SongPlayer implements ClientTickEvents.StartWorldTick {
|
||||
|
||||
int nextIndex = (currentIndex + 1) % SongLoader.currentFolder.songs.size();
|
||||
start(SongLoader.currentFolder.songs.get(nextIndex));
|
||||
DebugLogger.log("SongPlayer: 切下一首。");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5,10 +5,10 @@ import net.minecraft.client.gui.DrawContext;
|
||||
|
||||
public class ProgressBarRenderer {
|
||||
private static final int BACKGROUND_COLOR = 0x80808080;
|
||||
private static final int PROGRESS_COLOR = 0x8000FF00; // 绿色
|
||||
// private static final int PROGRESS_COLOR = 0x8000FF00;
|
||||
private static final int TEXT_COLOR = 0xFFFFFF;
|
||||
|
||||
public void renderProgressBar(DrawContext context, int x, int y, int width, int height, float progress, String timeText) {
|
||||
public void renderProgressBar(DrawContext context, int x, int y, int width, int height, float progress, String timeText, int PROGRESS_COLOR) {
|
||||
context.fill(x, y, x + width, y + height, BACKGROUND_COLOR);
|
||||
|
||||
int progressWidth = (int) (width * progress);
|
||||
@ -17,7 +17,7 @@ public class ProgressBarRenderer {
|
||||
|
||||
MinecraftClient client = MinecraftClient.getInstance();
|
||||
int textX = x + (width - client.textRenderer.getWidth(timeText)) / 2;
|
||||
int textY = y - client.textRenderer.fontHeight - 2;
|
||||
int textY = y - client.textRenderer.fontHeight - 0;
|
||||
context.drawTextWithShadow(client.textRenderer, timeText, textX, textY, TEXT_COLOR);
|
||||
}
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ public class PlaybackProgressOverlay implements HudRenderCallback {
|
||||
int screenHeight = context.getScaledWindowHeight();
|
||||
|
||||
int barX = screenWidth / 2 - PROGRESS_BAR_WIDTH / 2;
|
||||
int barY = screenHeight - 55;
|
||||
int barY = screenHeight - 55; // 差不多比护甲值高一点
|
||||
|
||||
progressBarRenderer.renderProgressBar(
|
||||
context,
|
||||
@ -38,7 +38,27 @@ public class PlaybackProgressOverlay implements HudRenderCallback {
|
||||
PROGRESS_BAR_WIDTH,
|
||||
5,
|
||||
Main.SONG_PLAYER.getProgress(),
|
||||
Main.SONG_PLAYER.getFormattedTime()
|
||||
Main.SONG_PLAYER.getFormattedTime(),
|
||||
0x8000FF00
|
||||
);
|
||||
}
|
||||
|
||||
if (Main.PREVIEWER.running && Main.PREVIEWER.song != null && isInGame) {
|
||||
int screenWidth = context.getScaledWindowWidth();
|
||||
int screenHeight = context.getScaledWindowHeight();
|
||||
|
||||
int barX = screenWidth / 2 - PROGRESS_BAR_WIDTH / 2;
|
||||
int barY = screenHeight - 42; // 差不多比生命值高一点
|
||||
|
||||
progressBarRenderer.renderProgressBar(
|
||||
context,
|
||||
barX,
|
||||
barY,
|
||||
PROGRESS_BAR_WIDTH,
|
||||
5,
|
||||
Main.PREVIEWER.getProgress(),
|
||||
Main.PREVIEWER.getFormattedTime(),
|
||||
0x80FF0000
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -9,10 +9,7 @@ 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.Main;
|
||||
import semmiedev.disc_jockey_revive.Note;
|
||||
import semmiedev.disc_jockey_revive.Song;
|
||||
import semmiedev.disc_jockey_revive.SongLoader;
|
||||
import semmiedev.disc_jockey_revive.*;
|
||||
import semmiedev.disc_jockey_revive.gui.ProgressBarRenderer;
|
||||
import semmiedev.disc_jockey_revive.gui.SongListWidget;
|
||||
import semmiedev.disc_jockey_revive.gui.hud.BlocksOverlay;
|
||||
@ -72,6 +69,7 @@ public class DiscJockeyScreen extends Screen {
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
DebugLogger.log("DiscJockeyScreen: 开始初始化界面");
|
||||
shouldFilter = true;
|
||||
songListWidget = new SongListWidget(client, width, height - 100, 32, 20, this);
|
||||
boolean isLargeScreen = width > 900;
|
||||
@ -129,7 +127,7 @@ public class DiscJockeyScreen extends Screen {
|
||||
int centerX = width / 2;
|
||||
|
||||
// 上一首
|
||||
addDrawableChild(ButtonWidget.builder(Text.literal("◀◀◀"), button -> {
|
||||
addDrawableChild(ButtonWidget.builder(Text.literal("|◀◀"), button -> {
|
||||
Main.SONG_PLAYER.playPreviousSong();
|
||||
}).dimensions(centerX - 100, buttonY, 40, 20).build());
|
||||
|
||||
@ -148,7 +146,7 @@ public class DiscJockeyScreen extends Screen {
|
||||
addDrawableChild(playButton);
|
||||
|
||||
// 下一首
|
||||
addDrawableChild(ButtonWidget.builder(Text.literal("▶▶▶"), button -> {
|
||||
addDrawableChild(ButtonWidget.builder(Text.literal("▶▶|"), button -> {
|
||||
Main.SONG_PLAYER.playNextSong();
|
||||
}).dimensions(centerX + 60, buttonY, 40, 20).build());
|
||||
|
||||
@ -287,7 +285,7 @@ public class DiscJockeyScreen extends Screen {
|
||||
// 进度条
|
||||
if (Main.SONG_PLAYER.running && Main.SONG_PLAYER.song != null) {
|
||||
int progressBarX = 10;
|
||||
int progressBarY = height - 50; // 按钮上方
|
||||
int progressBarY = height - 52; // 按钮上方
|
||||
int barWidth = screenWidth - 20;
|
||||
|
||||
progressBarRenderer.renderProgressBar(
|
||||
@ -297,9 +295,30 @@ public class DiscJockeyScreen extends Screen {
|
||||
barWidth,
|
||||
5,
|
||||
Main.SONG_PLAYER.getProgress(),
|
||||
Main.SONG_PLAYER.getFormattedTime()
|
||||
Main.SONG_PLAYER.getFormattedTime(),
|
||||
0x8000FF00
|
||||
);
|
||||
}
|
||||
|
||||
// 进度条
|
||||
if (Main.PREVIEWER.running && Main.PREVIEWER.song != null) {
|
||||
int progressBarX = 10;
|
||||
int progressBarY = height - 37; // 比上一个低一点
|
||||
int barWidth = screenWidth - 20;
|
||||
|
||||
progressBarRenderer.renderProgressBar(
|
||||
context,
|
||||
progressBarX,
|
||||
progressBarY,
|
||||
barWidth,
|
||||
5,
|
||||
Main.PREVIEWER.getProgress(),
|
||||
Main.PREVIEWER.getFormattedTime(),
|
||||
0x80FF0000
|
||||
);
|
||||
}
|
||||
|
||||
DebugLogger.log("DiscJockeyScreen: 初始化界面完成");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -6,6 +6,7 @@ import net.minecraft.client.gui.widget.ButtonWidget;
|
||||
import net.minecraft.client.util.InputUtil;
|
||||
import net.minecraft.text.Text;
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
import semmiedev.disc_jockey_revive.DebugLogger;
|
||||
import semmiedev.disc_jockey_revive.Main;
|
||||
import semmiedev.disc_jockey_revive.Note;
|
||||
import semmiedev.disc_jockey_revive.gui.KeyMappingListWidget;
|
||||
@ -34,6 +35,8 @@ public class EditKeyMappingsScreen extends Screen {
|
||||
protected void init() {
|
||||
super.init();
|
||||
|
||||
DebugLogger.log("EditKeyMappingsScreen: 开始初始化界面");
|
||||
|
||||
int listTop = 40;
|
||||
int listBottom = this.height - 50;
|
||||
int listHeight = listBottom - listTop;
|
||||
@ -56,6 +59,8 @@ public class EditKeyMappingsScreen extends Screen {
|
||||
this.client.setScreen(this.parent);
|
||||
}).dimensions(buttonX, buttonY, buttonWidth, buttonHeight).build();
|
||||
addDrawableChild(doneButton);
|
||||
|
||||
DebugLogger.log("EditKeyMappingsScreen: 界面初始化完成");
|
||||
}
|
||||
|
||||
private void refreshMappingList() {
|
||||
@ -90,6 +95,7 @@ public class EditKeyMappingsScreen extends Screen {
|
||||
|
||||
@Override
|
||||
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
|
||||
DebugLogger.log("EditKeyMappingsScreen: 按下按键:"+keyCode);
|
||||
if (waitingForKeyPress) {
|
||||
if (keyCode == GLFW.GLFW_KEY_ESCAPE) {
|
||||
|
||||
|
@ -38,6 +38,8 @@ public class LiveDjScreen extends Screen {
|
||||
protected void init() {
|
||||
super.init();
|
||||
|
||||
DebugLogger.log("LiveDjScreen: 开始初始化界面");
|
||||
|
||||
int centerX = this.width / 2;
|
||||
int buttonWidth = 150;
|
||||
int buttonHeight = 20;
|
||||
@ -50,6 +52,7 @@ public class LiveDjScreen extends Screen {
|
||||
Main.LIVE_DJ_PLAYER.startTuning();
|
||||
}).dimensions(centerX + margin, buttonY, buttonWidth, buttonHeight).build();
|
||||
addDrawableChild(startTuningButton);
|
||||
DebugLogger.log("LiveDjScreen: 界面初始化完成");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -125,6 +128,7 @@ public class LiveDjScreen extends Screen {
|
||||
|
||||
@Override
|
||||
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
|
||||
DebugLogger.log("LiveDjScreen: 按下按键"+keyCode);
|
||||
InputUtil.Key key = InputUtil.fromKeyCode(keyCode, scanCode);
|
||||
if (keyCode == GLFW.GLFW_KEY_ESCAPE) {
|
||||
this.close();
|
||||
|
@ -15,6 +15,7 @@ import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
import semmiedev.disc_jockey_revive.DebugLogger;
|
||||
import semmiedev.disc_jockey_revive.Main;
|
||||
import semmiedev.disc_jockey_revive.Note;
|
||||
import semmiedev.disc_jockey_revive.KeyMappingManager;
|
||||
@ -46,12 +47,14 @@ public class SelectNoteScreen extends Screen {
|
||||
protected void init() {
|
||||
super.init();
|
||||
|
||||
DebugLogger.log("SelectNoteScreen: 开始初始化界面");
|
||||
|
||||
int centerX = this.width / 2;
|
||||
int startY = this.height / 2 - 50;
|
||||
int widgetWidth = 200;
|
||||
int widgetHeight = 20;
|
||||
int margin = 5;
|
||||
CyclingButtonWidget<NoteBlockInstrument> instrumentButton = CyclingButtonWidget.builder((NoteBlockInstrument instrument) -> Text.translatable("block.minecraft.note_block.instrument." + instrument.asString()))
|
||||
CyclingButtonWidget<NoteBlockInstrument> instrumentButton = CyclingButtonWidget.builder((NoteBlockInstrument instrument) -> Text.translatable("" + instrument.asString()))
|
||||
.values(NoteBlockInstrument.values())
|
||||
.initially(selectedInstrument)
|
||||
|
||||
@ -82,6 +85,8 @@ public class SelectNoteScreen extends Screen {
|
||||
this.client.setScreen(this.parent);
|
||||
parent.stopWaitingForKeyPress();
|
||||
}).dimensions(cancelButtonX, buttonY, buttonWidth, widgetHeight).build());
|
||||
|
||||
DebugLogger.log("SelectNoteScreen: 界面初始化完成");
|
||||
}
|
||||
private class CustomPitchSlider extends SliderWidget {
|
||||
public CustomPitchSlider(int x, int y, int width, int height, Text text, double value) {
|
||||
@ -154,6 +159,7 @@ public class SelectNoteScreen extends Screen {
|
||||
|
||||
@Override
|
||||
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
|
||||
DebugLogger.log("SelectNoteScreen: 按下按键"+keyCode);
|
||||
|
||||
if (keyCode == GLFW.GLFW_KEY_ESCAPE) {
|
||||
this.client.setScreen(this.parent);
|
||||
|
@ -93,5 +93,5 @@
|
||||
"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": "Enables verbose logging for debugging purposes. \nKeep off unless troubleshooting. \nOf course, many debug-related parts have already been removed."
|
||||
"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."
|
||||
}
|
||||
|
@ -93,5 +93,5 @@
|
||||
"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当然,很多调试用的部分已经移除。"
|
||||
"text.autoconfig.disc_jockey_revive.option.debugModeEnabled.@Tooltip": "启用详细日志输出以进行调试。\n除非排查问题,否则请保持关闭。\n当然,很多调试用的部分已经移除。\n开启这个可能会导致日志文件占用过大\n老实说,其实这对你并没有什么帮助"
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user