diff --git a/README.md b/README.md index 7833501..bcc181e 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,75 @@ # 源README Download the mod at [Modrinth](https://modrinth.com/mod/disc-jockey) or [CurseForge](https://www.curseforge.com/minecraft/mc-mods/disc-jockey) # 该版本附加 -## 关于此项目 -此 Mod 是基于 [Disc-Jockey](https://github.com/SemmieDev/Disc-Jockey)(由 [SemmieDev](https://github.com/SemmieDev/) 开发)的修改版本,适配了 Minecraft 1.21.4。 -原始代码版权归原作者所有,修改部分版权归 BRanulf 所有。 +___ +# Disc Jockey Revive -同时,该二改版本我本人并没有上传至任何其他网站(包括 Modrinth 、CurseForge 、Github 等),请勿用于商业用途及其他非法用途。 +一个 Minecraft Fabric 模组,旨在为音符盒音乐爱好者提供强大的播放和即兴演奏功能。 -目前[Modrinth](https://modrinth.com/mod/disc_jockey_revive)上的这个版本非本人上传,就当允许上传了罢,毕竟我比较懒XD +## 模组特性 -[最新版本下载:Release](https://git.branulf.top/Branulf/DIsc_Jockey_revive/releases) +### 🎵 歌曲播放 +- **播放 `.nbs` 歌曲文件**:支持标准的 Note Block Studio (`.nbs`) 歌曲文件(暂不支持带变速的)。 +- **文件夹管理**:支持歌曲文件夹,方便组织和浏览您的音乐库。 +- **多种播放模式**: + - **单曲循环**:重复播放当前歌曲。 + - **列表循环**:按顺序循环播放当前文件夹或列表中的歌曲。 + - **随机播放**:随机播放当前文件夹或列表中的歌曲。 + - **播完停止**:歌曲播放完毕后自动停止。 +- **播放进度条**:在 HUD 上显示歌曲播放进度和时间。 +- **实时调速**:在播放界面通过滑块实时调整歌曲播放速度(0.25x - 4.0x)。 +- **播放失败处理**:当附近音符盒配置不正确时,可选择停止播放或自动播放下一首。 +- **音符盒材料清单**:显示播放当前歌曲所需的所有音符盒材料及数量。 +- **自动调音**:模组会自动识别并调音附近的音符盒以匹配歌曲音高。 +- **全向音符盒音效 (客户端)**: + - **常规模式**:在播放歌曲或预览时,使音符盒音效全向传播,提供更沉浸的听觉体验。 + - **强制模式**:强制所有音符盒音效(包括手动触发的)始终全向传播。 -~~这边建议去给原作者点个Star~~ \ No newline at end of file +### 🎹 即兴演奏 (Live DJ) +- **独立界面**:通过专用快捷键打开一个独立界面,用于即兴演奏。 +- **键盘弹奏**:利用键盘按键直接弹奏音符盒,就像在 FL Studio 中一样。 +- **自定义键位映射**: + - 独立的键位映射配置界面,允许您为每个键盘按键设置特定的音符(乐器和音高)。 + - 默认提供类似于 FL Studio 的键盘布局预设。 +- **即兴演奏调音**:在即兴演奏界面中,可以一键对周围的音符盒进行调音,以确保弹奏的音符准确无误。 +- **独立于歌曲播放**:即兴演奏功能与歌曲播放功能完全独立,互不干扰。 + +### ⚙️ 配置与调试 +- **Mod Menu 集成**:通过 Mod Menu 轻松访问模组配置。 +- **快捷键**: + - 打开歌曲选择界面 (默认 `J`)。 + - 打开即兴演奏界面 (默认 `UNKNOW(未指定)`)。 +- **调试模式**:可配置的调试模式,开启后会在日志中输出详细的调试信息,方便排查问题。 + +## 如何使用 + +1. **安装**:将 `Disc Jockey Revive` 模组文件和 Fabric API 放入您的 Minecraft `mods` 文件夹。 +2. **添加歌曲**: + * 在游戏中打开歌曲选择界面 (默认 `J` 键)。 + * 点击“打开文件夹”按钮,将 `.nbs` 歌曲文件放入弹出的 `disc_jockey/songs` 文件夹中。 + * 您也可以直接将 `.nbs` 文件拖放到歌曲选择界面中。 + * 点击“重新加载”按钮以加载新添加的歌曲。 +3. **播放歌曲**: + * 在歌曲选择界面中选择一首歌曲。 + * 点击“播放”按钮。模组将自动寻找并调音附近的音符盒。 + * 确保您处于生存模式或创造模式,并且附近有足够的音符盒。 + * 您可以通过滑块调整播放速度,并通过播放模式按钮切换循环方式。 +4. **即兴演奏**: + * 在游戏中打开即兴演奏界面 (默认 `UNKNOW` 键)。 + * 点击“开始调音”按钮,模组将自动调音附近的音符盒。 + * 调音完成后,您可以使用键盘按键直接弹奏音符盒。 + * 点击“编辑键位映射”按钮可以自定义每个按键对应的音符。 + +## 注意事项 + +* **服务器兼容性**:此模组通过发送玩家交互数据包来控制音符盒。在某些服务器上,这可能被反作弊插件误判为作弊行为。**强烈建议在使用前联系服务器管理员。** +* **音符盒数量**:为了获得最佳播放效果,请确保您周围有足够数量且种类齐全的音符盒。 +* **非官方版本**:此版本为非官方修订版,仅供学习和参考。请支持原版模组作者。 + +## 贡献与支持 + +如果您有任何问题、建议或发现 Bug,请联系[BRanulf](https://space.bilibili.com/479966868)(仅限于改二改版本,原版本请前往[原作者GitHub](https://github.com/SemmieDev/Disc-Jockey))。 + +不回复是正常现象,因为我也只是随便做做,并没有打算正经地维护,真要搞的化我估计会去GitHub创建分支,而不是只在自己仓库中修改。 + +--- diff --git a/common.gradle b/common.gradle index 401808c..387b801 100644 --- a/common.gradle +++ b/common.gradle @@ -10,7 +10,7 @@ repositories { url 'https://maven.fabricmc.net/' // loom } maven { - url 'https://masa.dy.fi/maven' // mama(随便加的) + url 'https://masa.dy.fi/maven' // masa(随便加的) } maven { url 'https://maven.fallenbreath.me/releases' // preprocessor diff --git a/gradle.properties b/gradle.properties index acb0478..8170a49 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ loader_version=0.16.10 mod_name=Disc Jockey Revive mod_id=disc_jockey_revive # Mod Properties -mod_version=1.14.514.047 +mod_version=1.14.514.048 maven_group=semmiedev archives_base_name=disc_jockey_revive # Dependencies diff --git a/libs/LibGui-12.0.1+1.21.2.pom b/libs/LibGui-12.0.1+1.21.2.pom deleted file mode 100644 index 0bd6e7c..0000000 --- a/libs/LibGui-12.0.1+1.21.2.pom +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - 4.0.0 - io.github.cottonmc - LibGui - 12.0.1+1.21.2 - LibGui - Minecraft GUI Library - https://github.com/CottonMC/LibGui - - - MIT - https://github.com/CottonMC/LibGui/blob/HEAD/LICENSE - - - - - CottonMC - https://github.com/CottonMC - - - - - io.github.juuxel - libninepatch - 1.2.0 - compile - - - net.fabricmc.fabric-api - fabric-api-base - 0.4.48+c47b9d4373 - compile - - - net.fabricmc.fabric-api - fabric-networking-api-v1 - 4.3.3+56ec7ac673 - compile - - - net.fabricmc - fabric-loader - 0.16.7 - runtime - - - net.fabricmc.fabric-api - fabric-lifecycle-events-v1 - 2.3.22+c47b9d4373 - runtime - - - net.fabricmc.fabric-api - fabric-rendering-v1 - 8.0.5+c47b9d4373 - runtime - - - net.fabricmc.fabric-api - fabric-resource-loader-v0 - 3.0.5+c47b9d4373 - runtime - - - io.github.cottonmc - Jankson-Fabric - 9.0.0+j1.2.3 - runtime - - - diff --git a/libs/modmenu-13.0.3.pom b/libs/modmenu-13.0.3.pom deleted file mode 100644 index 4e0cc7a..0000000 --- a/libs/modmenu-13.0.3.pom +++ /dev/null @@ -1,8 +0,0 @@ - - - 4.0.0 - com.terraformersmc - modmenu - 13.0.3 - diff --git a/src/main/java/semmiedev/disc_jockey_revive/DebugLogger.java b/src/main/java/semmiedev/disc_jockey_revive/DebugLogger.java index d626f5e..6dccb2f 100644 --- a/src/main/java/semmiedev/disc_jockey_revive/DebugLogger.java +++ b/src/main/java/semmiedev/disc_jockey_revive/DebugLogger.java @@ -36,7 +36,7 @@ public class DebugLogger { if (client != null && client.inGameHud != null && client.inGameHud.getChatHud() != null) { MinecraftClient.getInstance().inGameHud.getChatHud().addMessage(Text.of("[DiscJockeyRevive-调试]"+message.formatted(Formatting.GRAY))); } else { - Main.LOGGER.error("[DiscJockeyRevive-调试] 聊天窗口未初始化,{}",message); +// Main.LOGGER.error("[DiscJockeyRevive-调试] 聊天窗口未初始化,{}",message); } } } diff --git a/src/main/java/semmiedev/disc_jockey_revive/Main.java b/src/main/java/semmiedev/disc_jockey_revive/Main.java index 04fb957..2465345 100644 --- a/src/main/java/semmiedev/disc_jockey_revive/Main.java +++ b/src/main/java/semmiedev/disc_jockey_revive/Main.java @@ -14,9 +14,13 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.option.KeyBinding; import net.minecraft.client.util.InputUtil; import net.minecraft.client.world.ClientWorld; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.sound.SoundEvent; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import net.minecraft.util.Identifier; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.lwjgl.glfw.GLFW; diff --git a/src/main/java/semmiedev/disc_jockey_revive/gui/screen/DiscJockeyScreen.java b/src/main/java/semmiedev/disc_jockey_revive/gui/screen/DiscJockeyScreen.java index 3431bb9..2e324e6 100644 --- a/src/main/java/semmiedev/disc_jockey_revive/gui/screen/DiscJockeyScreen.java +++ b/src/main/java/semmiedev/disc_jockey_revive/gui/screen/DiscJockeyScreen.java @@ -325,7 +325,8 @@ public class DiscJockeyScreen extends Screen { int screenWidth = context.getScaledWindowWidth(); - // 进度条 + // 播放进度条 + // TODO 关于可拖动什么的以后再加,这里放个TODO防止以后忘了 if (Main.SONG_PLAYER.running && Main.SONG_PLAYER.song != null) { int progressBarX = 10; int progressBarY = height - 52; // 按钮上方 @@ -343,7 +344,7 @@ public class DiscJockeyScreen extends Screen { ); } - // 进度条 + // 预览进度条 if (Main.PREVIEWER.running && Main.PREVIEWER.song != null) { int progressBarX = 10; int progressBarY = height - 37; // 比上一个低一点 diff --git a/src/main/resources/assets/disc_jockey/sounds/hello_test.ogg b/src/main/resources/assets/disc_jockey/sounds/hello_test.ogg new file mode 100644 index 0000000..ff46aec Binary files /dev/null and b/src/main/resources/assets/disc_jockey/sounds/hello_test.ogg differ