wow
This commit is contained in:
parent
ad44ffec5b
commit
75ffb8b54b
@ -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.039
|
||||
mod_version=1.14.514.043
|
||||
maven_group=semmiedev
|
||||
archives_base_name=disc_jockey_revive
|
||||
# Dependencies
|
||||
|
@ -1,25 +1,39 @@
|
||||
package semmiedev.disc_jockey_revive;
|
||||
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Formatting;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
// 这玩意一般不用,我自己用的,但是不想删
|
||||
public class DebugLogger {
|
||||
|
||||
public static void log(String message) {
|
||||
if (Main.config != null && Main.config.debugModeEnabled) {
|
||||
Main.LOGGER.info("[DiscJockeyRevive-调试] " + message);
|
||||
sendMessage(message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void log(String format, Object... arguments) {
|
||||
if (Main.config != null && Main.config.debugModeEnabled) {
|
||||
Main.LOGGER.info("[DiscJockeyRevive-调试] " + format, arguments);
|
||||
sendMessage(format + ": " + Arrays.toString(arguments));
|
||||
}
|
||||
}
|
||||
|
||||
public static void log(String message, Throwable t) {
|
||||
if (Main.config != null && Main.config.debugModeEnabled) {
|
||||
Main.LOGGER.error("[DiscJockeyRevive-调试] " + message, t);
|
||||
sendMessage(message + ": " + t.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public static void sendMessage(String message) {
|
||||
if (Main.config != null && Main.config.debugModeEnabled) {
|
||||
MinecraftClient.getInstance().inGameHud.getChatHud().addMessage(Text.of("[DiscJockeyRevive-调试]"+message.formatted(Formatting.GRAY)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -84,14 +84,16 @@ 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;
|
||||
} else {
|
||||
// if (SongLoader.loadingSongs) {
|
||||
// client.inGameHud.getChatHud().addMessage(Text.translatable(Main.MOD_ID+".still_loading").formatted(Formatting.RED));
|
||||
// SongLoader.showToast = true;
|
||||
// } else {
|
||||
// client.setScreen(new LiveDjScreen());
|
||||
// }
|
||||
// 好像这个界面并不需要什么歌曲加载
|
||||
client.setScreen(new LiveDjScreen());
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
ClientTickEvents.START_WORLD_TICK.register(world -> {
|
||||
|
@ -37,6 +37,11 @@ public class ModConfig implements ConfigData {
|
||||
}
|
||||
}
|
||||
|
||||
public enum PlaybackFailureAction {
|
||||
STOP,
|
||||
NEXT_SONG
|
||||
}
|
||||
|
||||
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
|
||||
@ConfigEntry.Gui.Tooltip(count = 4)
|
||||
public ExpectedServerVersion expectedServerVersion = ExpectedServerVersion.All;
|
||||
@ -50,6 +55,11 @@ public class ModConfig implements ConfigData {
|
||||
@ConfigEntry.Gui.Tooltip(count = 1)
|
||||
public boolean showHudProgressBar = true;
|
||||
|
||||
@ConfigEntry.Gui.Tooltip(count = 2)
|
||||
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
|
||||
public PlaybackFailureAction playbackFailureAction = PlaybackFailureAction.STOP;
|
||||
|
||||
|
||||
@ConfigEntry.Gui.Tooltip(count = 1)
|
||||
public boolean debugModeEnabled = false;
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package semmiedev.disc_jockey_revive;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.toast.SystemToast;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Formatting;
|
||||
import semmiedev.disc_jockey_revive.gui.SongListWidget;
|
||||
|
||||
import java.io.File;
|
||||
@ -49,7 +50,10 @@ public class SongLoader {
|
||||
for (Song song : SONGS) SONG_SUGGESTIONS.add(song.displayName);
|
||||
Main.config.favorites.removeIf(favorite -> SongLoader.SONGS.stream().map(song -> song.fileName).noneMatch(favorite::equals));
|
||||
|
||||
if (showToast && MinecraftClient.getInstance().textRenderer != null) SystemToast.add(MinecraftClient.getInstance().getToastManager(), SystemToast.Type.PACK_LOAD_FAILURE, Main.NAME, Text.translatable(Main.MOD_ID+".loading_done"));
|
||||
if (showToast && MinecraftClient.getInstance().textRenderer != null) {
|
||||
SystemToast.add(MinecraftClient.getInstance().getToastManager(), SystemToast.Type.PACK_LOAD_FAILURE, Main.NAME, Text.translatable(Main.MOD_ID+".loading_done"));
|
||||
MinecraftClient.getInstance().inGameHud.getChatHud().addMessage(Text.translatable(Main.MOD_ID+".loading_done").formatted(Formatting.AQUA));
|
||||
}
|
||||
showToast = true;
|
||||
loadingSongs = false;
|
||||
}).start();
|
||||
|
@ -147,6 +147,23 @@ public class SongPlayer implements ClientTickEvents.StartWorldTick {
|
||||
}
|
||||
}
|
||||
|
||||
private synchronized void handlePlaybackFailure() {
|
||||
DebugLogger.log("处理播放失败,配置选项: {}", Main.config.playbackFailureAction.name());
|
||||
|
||||
switch (Main.config.playbackFailureAction) {
|
||||
case NEXT_SONG: // 播放下一首
|
||||
stop();
|
||||
MinecraftClient.getInstance().inGameHud.getChatHud().addMessage(Text.translatable(Main.MOD_ID+".playback_failure.next_message").formatted(Formatting.GRAY));
|
||||
playNextSong();
|
||||
break;
|
||||
|
||||
case STOP: // 停止播放(原本)
|
||||
default:
|
||||
stop();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void stop() {
|
||||
DebugLogger.log("SongPlayer: 停止播放。");
|
||||
//MinecraftClient.getInstance().send(() -> Main.TICK_LISTENERS.remove(this));
|
||||
@ -437,6 +454,7 @@ public class SongPlayer implements ClientTickEvents.StartWorldTick {
|
||||
if (!missingNotes.isEmpty()) {
|
||||
ChatHud chatHud = MinecraftClient.getInstance().inGameHud.getChatHud();
|
||||
chatHud.addMessage(Text.translatable(Main.MOD_ID+".player.invalid_note_blocks").formatted(Formatting.RED));
|
||||
DebugLogger.log("播放失败:缺少音符盒");
|
||||
|
||||
HashMap<Block, Integer> missing = new HashMap<>();
|
||||
for (Note note : missingNotes) {
|
||||
@ -451,6 +469,8 @@ public class SongPlayer implements ClientTickEvents.StartWorldTick {
|
||||
missingInstrumentBlocks = missing;
|
||||
missing.forEach((block, integer) -> chatHud.addMessage(Text.literal(block.getName().getString()+" × "+integer).formatted(Formatting.RED)));
|
||||
stop();
|
||||
handlePlaybackFailure();
|
||||
return;
|
||||
}
|
||||
} else if (!tuned) {
|
||||
//tuned = true;
|
||||
|
@ -33,9 +33,9 @@ public class DiscJockeyScreen extends Screen {
|
||||
private static final MutableText
|
||||
SELECT_SONG = Text.translatable(Main.MOD_ID+".screen.select_song"),
|
||||
PLAY = Text.translatable(Main.MOD_ID+".screen.play"),
|
||||
PLAY_STOP = Text.translatable(Main.MOD_ID+".screen.play.stop"),
|
||||
PLAY_STOP = Text.translatable(Main.MOD_ID+".screen.play.stop").formatted(Formatting.YELLOW),
|
||||
PREVIEW = Text.translatable(Main.MOD_ID+".screen.preview"),
|
||||
PREVIEW_STOP = Text.translatable(Main.MOD_ID+".screen.preview.stop"),
|
||||
PREVIEW_STOP = Text.translatable(Main.MOD_ID+".screen.preview.stop").formatted(Formatting.YELLOW),
|
||||
DROP_HINT = Text.translatable(Main.MOD_ID+".screen.drop_hint").formatted(Formatting.GRAY)
|
||||
;
|
||||
|
||||
|
@ -96,5 +96,14 @@
|
||||
"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"
|
||||
"disc_jockey_revive.screen.speed.@Tooltip": "Drag to adjust playback speed\n0.25~4",
|
||||
|
||||
"text.autoconfig.disc_jockey_revive.option.playbackFailureAction": "On Playback Failure",
|
||||
"text.autoconfig.disc_jockey_revive.option.playbackFailureAction.@Tooltip[0]": "Action when playback fails due to missing note blocks\nOptions: Stop (default) or Play Next Song",
|
||||
|
||||
"disc_jockey_revive.playback_failure.stop": "Stop playback",
|
||||
"disc_jockey_revive.playback_failure.next": "Play next song",
|
||||
"disc_jockey_revive.playback_failure.next_message": "Playback failure handling: Play next song.",
|
||||
|
||||
"command.failure_action.set": "Playback failure action set to: %s"
|
||||
}
|
||||
|
@ -54,10 +54,10 @@
|
||||
"text.autoconfig.disc_jockey_revive.option.delayPlaybackStartBySecs.@Tooltip": "调音完成后延迟指定秒数再开始播放(如 0.5 表示延迟半秒)。",
|
||||
"disc_jockey_revive.screen.current_folder": "当前文件夹",
|
||||
"disc_jockey_revive.screen.play_mode": "播放模式",
|
||||
"disc_jockey_revive.screen.mode_single": "单曲循环",
|
||||
"disc_jockey_revive.screen.mode_list": "列表循环",
|
||||
"disc_jockey_revive.screen.mode_random": "随机播放",
|
||||
"disc_jockey_revive.screen.mode_stop": "播完停止",
|
||||
"disc_jockey_revive.screen.mode_single": "🔂单曲循环",
|
||||
"disc_jockey_revive.screen.mode_list": "🔁列表循环",
|
||||
"disc_jockey_revive.screen.mode_random": "🔀随机播放",
|
||||
"disc_jockey_revive.screen.mode_stop": "⏹播完停止",
|
||||
"disc_jockey_revive.screen.open_folder": "打开文件夹",
|
||||
"disc_jockey_revive.screen.open_folder_failed": "无法打开文件夹",
|
||||
"disc_jockey_revive.screen.reload": "重新加载",
|
||||
@ -96,5 +96,14 @@
|
||||
"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"
|
||||
"disc_jockey_revive.screen.speed.@Tooltip": "拖动调整播放速度\n0.25~4",
|
||||
|
||||
"text.autoconfig.disc_jockey_revive.option.playbackFailureAction": "播放失败处理",
|
||||
"text.autoconfig.disc_jockey_revive.option.playbackFailureAction.@Tooltip[0]": "当因缺少音符盒导致播放失败时的处理方式\n选项: 停止播放(默认) 或 播放下一首",
|
||||
|
||||
"disc_jockey_revive.playback_failure.stop": "停止播放",
|
||||
"disc_jockey_revive.playback_failure.next": "播放下一首",
|
||||
"disc_jockey_revive.playback_failure.next_message": "播放失败处理:播放下一首",
|
||||
|
||||
"command.failure_action.set": "播放失败处理方式已设置为: %s"
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user