diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..a98a8d7 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3 @@ +## Changes +- Rewritten for 1.14.4 +- Fixed config saving bug \ No newline at end of file diff --git a/build.gradle b/build.gradle index a3ca5b1..73546b4 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,9 @@ plugins { - id 'dev.architectury.loom' version '1.6-SNAPSHOT' apply false + id 'dev.architectury.loom' version '1.7-SNAPSHOT' apply false id 'architectury-plugin' version '3.4-SNAPSHOT' id 'com.github.johnrengelman.shadow' version '8.1.1' apply false id "me.shedaniel.unified-publishing" version "0.1.+" + id "com.github.breadmoirai.github-release" version "2.5.2" } architectury { @@ -40,12 +41,12 @@ subprojects { // If you remove this line, sources will not be generated. withSourcesJar() - sourceCompatibility = JavaVersion.VERSION_21 - targetCompatibility = JavaVersion.VERSION_21 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } tasks.withType(JavaCompile).configureEach { - it.options.release = 21 + it.options.release = 17 } // Configure Maven publishing. @@ -66,3 +67,27 @@ subprojects { } } } + +githubRelease { + owner = "Boxadactle" + repo = "BoxLib" + tagName = "$project.version" + targetCommitish = "latest" + releaseName = "BoxLib $project.version" + generateReleaseNotes = true + body = """BoxLib $project.version for Minecraft $project.minecraft_version + +${new File(rootProject.rootDir, project.changelog_file).text} +""" + authorization = "Token ${System.getenv("GITHUB_TOKEN")}" + + var files = [] + for (String platform : project.enabled_platforms.split(',')) { + files += fileTree("$platform/build/libs") { + include "*$project.version*" + } + } + releaseAssets = files + +// dryRun = true +} \ No newline at end of file diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/DebugKeybindMain.java b/common/src/main/java/dev/boxadactle/debugkeybind/DebugKeybindMain.java index 7e16b09..a53df7d 100644 --- a/common/src/main/java/dev/boxadactle/debugkeybind/DebugKeybindMain.java +++ b/common/src/main/java/dev/boxadactle/debugkeybind/DebugKeybindMain.java @@ -1,19 +1,17 @@ package dev.boxadactle.debugkeybind; -import dev.boxadactle.boxlib.command.BCommandManager; import dev.boxadactle.boxlib.config.BConfigClass; import dev.boxadactle.boxlib.config.BConfigHandler; import dev.boxadactle.boxlib.util.ModLogger; -import dev.boxadactle.debugkeybind.command.F3Command; import dev.boxadactle.debugkeybind.keybind.KeybindConfig; -import net.minecraft.client.KeyMapping; +import net.minecraft.client.resources.language.I18n; public class DebugKeybindMain { public static final String MOD_NAME = "DebugKeybind"; public static final String MOD_ID = "debugkeybind"; - public static final String VERSION = "9.0.0"; + public static final String VERSION = "1.2.0"; public static final String VERSION_STRING = MOD_NAME + " v" + VERSION; @@ -26,7 +24,7 @@ public static void init() { CONFIG = BConfigHandler.registerConfig(KeybindConfig.class); - BCommandManager.register(F3Command.create()); +// BCommandManager.register(F3Command.create()); } } diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/command/CopySubcommand.java b/common/src/main/java/dev/boxadactle/debugkeybind/command/CopySubcommand.java deleted file mode 100644 index 0668169..0000000 --- a/common/src/main/java/dev/boxadactle/debugkeybind/command/CopySubcommand.java +++ /dev/null @@ -1,20 +0,0 @@ -package dev.boxadactle.debugkeybind.command; - -import com.mojang.brigadier.builder.ArgumentBuilder; -import dev.boxadactle.boxlib.command.BCommandManager; -import dev.boxadactle.boxlib.command.BCommandSourceStack; -import dev.boxadactle.boxlib.command.api.BClientSubcommand; -import dev.boxadactle.debugkeybind.keybind.DebugKeybinds; - -public class CopySubcommand implements BClientSubcommand { - @Override - public ArgumentBuilder getSubcommand() { - return BCommandManager.literal("copy"); - } - - @Override - public void build(ArgumentBuilder builder) { - builder.then(new DebugSubcommand("location", DebugKeybinds.COPY_LOCATION).buildSubcommand()); - builder.then(new DebugSubcommand("inspect_data", DebugKeybinds.INSPECT).buildSubcommand()); - } -} diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/command/DebugSubcommand.java b/common/src/main/java/dev/boxadactle/debugkeybind/command/DebugSubcommand.java deleted file mode 100644 index cbe3ac7..0000000 --- a/common/src/main/java/dev/boxadactle/debugkeybind/command/DebugSubcommand.java +++ /dev/null @@ -1,35 +0,0 @@ -package dev.boxadactle.debugkeybind.command; - -import com.mojang.brigadier.builder.ArgumentBuilder; -import dev.boxadactle.boxlib.command.BCommandManager; -import dev.boxadactle.boxlib.command.BCommandSourceStack; -import dev.boxadactle.boxlib.command.api.BClientSubcommand; -import dev.boxadactle.boxlib.scheduling.Scheduling; -import dev.boxadactle.boxlib.util.ClientUtils; -import dev.boxadactle.debugkeybind.keybind.DebugKeybind; -import dev.boxadactle.debugkeybind.mixin.DebugInvoker; - -public class DebugSubcommand implements BClientSubcommand { - - String name; - DebugKeybind keybind; - - public DebugSubcommand(String name, DebugKeybind keybind) { - this.name = name; - this.keybind = keybind; - } - - @Override - public ArgumentBuilder getSubcommand() { - return BCommandManager.literal(name); - } - - @Override - public void build(ArgumentBuilder builder) { - builder.executes(context -> { - Scheduling.nextTick(() -> ((DebugInvoker) ClientUtils.getClient().keyboardHandler).invokeHandleDebugKeys(keybind.getDefaultKeyCode())); - - return 0; - }); - } -} diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/command/F3Command.java b/common/src/main/java/dev/boxadactle/debugkeybind/command/F3Command.java deleted file mode 100644 index 63792e2..0000000 --- a/common/src/main/java/dev/boxadactle/debugkeybind/command/F3Command.java +++ /dev/null @@ -1,27 +0,0 @@ -package dev.boxadactle.debugkeybind.command; - -import dev.boxadactle.boxlib.command.api.BClientCommand; -import dev.boxadactle.boxlib.util.ClientUtils; -import dev.boxadactle.debugkeybind.keybind.DebugKeybinds; - -public class F3Command { - - public static BClientCommand create() { - return BClientCommand.create("f3", (context) -> { - ClientUtils.getClient().getDebugOverlay().toggleOverlay(); - return 0; - }) - .registerSubcommand(new ReloadSubcommand()) - .registerSubcommand(new ToggleSubcommand()) - .registerSubcommand(new CopySubcommand()) - .registerSubcommand(new DebugSubcommand("clear_chat", DebugKeybinds.CLEAR_CHAT)) - .registerSubcommand(new DebugSubcommand("creative_spectator", DebugKeybinds.CREATIVE_SPECTATOR)) - .registerSubcommand(new DebugSubcommand("clear_chat", DebugKeybinds.CLEAR_CHAT)) - .registerSubcommand(new DebugSubcommand("help", DebugKeybinds.HELP)) - .registerSubcommand(new DebugSubcommand("dump_textures", DebugKeybinds.DUMP_DYNAMIC_TEXTURES)) - .registerSubcommand(new DebugSubcommand("gamemode", DebugKeybinds.OPEN_GAMEMODE_SWITCHER)) - .registerSubcommand(new DebugSubcommand("clear_chat", DebugKeybinds.CLEAR_CHAT)) - .registerSubcommand(new DebugSubcommand("pause_menuless", DebugKeybinds.PAUSE_WITHOUT_MENU)); - } - -} diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/command/ReloadSubcommand.java b/common/src/main/java/dev/boxadactle/debugkeybind/command/ReloadSubcommand.java deleted file mode 100644 index dd9b8e5..0000000 --- a/common/src/main/java/dev/boxadactle/debugkeybind/command/ReloadSubcommand.java +++ /dev/null @@ -1,20 +0,0 @@ -package dev.boxadactle.debugkeybind.command; - -import com.mojang.brigadier.builder.ArgumentBuilder; -import dev.boxadactle.boxlib.command.BCommandManager; -import dev.boxadactle.boxlib.command.BCommandSourceStack; -import dev.boxadactle.boxlib.command.api.BClientSubcommand; -import dev.boxadactle.debugkeybind.keybind.DebugKeybinds; - -public class ReloadSubcommand implements BClientSubcommand { - @Override - public ArgumentBuilder getSubcommand() { - return BCommandManager.literal("reload"); - } - - @Override - public void build(ArgumentBuilder builder) { - builder.then(new DebugSubcommand("chunks", DebugKeybinds.RELOAD_CHUNKS).buildSubcommand()); - builder.then(new DebugSubcommand("resources", DebugKeybinds.RELOAD_RESOURCEPACKS).buildSubcommand()); - } -} diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/command/ToggleSubcommand.java b/common/src/main/java/dev/boxadactle/debugkeybind/command/ToggleSubcommand.java deleted file mode 100644 index 0732ce9..0000000 --- a/common/src/main/java/dev/boxadactle/debugkeybind/command/ToggleSubcommand.java +++ /dev/null @@ -1,23 +0,0 @@ -package dev.boxadactle.debugkeybind.command; - -import com.mojang.brigadier.builder.ArgumentBuilder; -import dev.boxadactle.boxlib.command.BCommandManager; -import dev.boxadactle.boxlib.command.BCommandSourceStack; -import dev.boxadactle.boxlib.command.api.BClientSubcommand; -import dev.boxadactle.debugkeybind.keybind.DebugKeybinds; - -public class ToggleSubcommand implements BClientSubcommand { - @Override - public ArgumentBuilder getSubcommand() { - return BCommandManager.literal("toggle"); - } - - @Override - public void build(ArgumentBuilder builder) { - builder.then(new DebugSubcommand("hitboxes", DebugKeybinds.SHOW_HITBOXES).buildSubcommand()); - builder.then(new DebugSubcommand("chunk_borders", DebugKeybinds.CHUNK_BORDERS).buildSubcommand()); - builder.then(new DebugSubcommand("advanced_tooltips", DebugKeybinds.ADVANCED_TOOLTIPS).buildSubcommand()); - builder.then(new DebugSubcommand("pause_on_lost_focus", DebugKeybinds.PAUSE_FOCUS).buildSubcommand()); - builder.then(new DebugSubcommand("profiling", DebugKeybinds.PROFILING).buildSubcommand()); - } -} diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/gui/DebugKeybindsScreen.java b/common/src/main/java/dev/boxadactle/debugkeybind/gui/DebugKeybindsScreen.java index a71d946..21ceaa9 100644 --- a/common/src/main/java/dev/boxadactle/debugkeybind/gui/DebugKeybindsScreen.java +++ b/common/src/main/java/dev/boxadactle/debugkeybind/gui/DebugKeybindsScreen.java @@ -1,15 +1,24 @@ package dev.boxadactle.debugkeybind.gui; import dev.boxadactle.boxlib.gui.config.BOptionScreen; +import dev.boxadactle.boxlib.gui.config.widget.button.BCustomButton; import dev.boxadactle.boxlib.gui.config.widget.label.BCenteredLabel; +import dev.boxadactle.boxlib.gui.config.widget.label.BLabel; import dev.boxadactle.boxlib.util.ClientUtils; import dev.boxadactle.debugkeybind.DebugKeybindMain; import dev.boxadactle.debugkeybind.keybind.DebugKeybind; import dev.boxadactle.debugkeybind.keybind.DebugKeybinds; +import dev.boxadactle.debugkeybind.keybind.GlobalKeybind; +import net.minecraft.client.KeyMapping; +import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; +import java.util.List; +import java.util.function.Function; + public class DebugKeybindsScreen extends BOptionScreen { KeybindEntry selectedEntry; @@ -19,8 +28,8 @@ public DebugKeybindsScreen(Screen parent) { } @Override - protected Component getName() { - return Component.translatable("controls.keybinds.debug.title"); + protected String getName() { + return I18n.get("controls.keybinds.debug.title"); } @Override @@ -48,28 +57,28 @@ protected void initFooter(int startX, int startY) { refreshEntries(); }); - resetButton.setMessage(Component.translatable("controls.resetAll")); + resetButton.setMessage(I18n.get("controls.resetAll")); Button doneButton = createHalfDoneButton(startX, startY, (b) -> { ClientUtils.setScreen(parent); DebugKeybindMain.CONFIG.save(); }); - doneButton.setX(startX + getButtonWidth(ButtonType.SMALL) + getPadding()); + doneButton.x = (startX + getButtonWidth(ButtonType.SMALL) + getPadding()); - addRenderableWidget(resetButton); - addRenderableWidget(doneButton); + addButton(resetButton); + addButton(doneButton); } @Override protected void initConfigButtons() { - addConfigLine(new BCenteredLabel(Component.translatable("key.categories.debug"))); + addConfigLine(new BCenteredLabel(I18n.get("key.categories.debug"))); for (DebugKeybind keybind : DebugKeybinds.getGlobalKeybinds()) { addConfigLine(new KeybindEntry(keybind, this::setSelectedEntry, this::refreshEntries)); } - addConfigLine(new BCenteredLabel(Component.translatable("key.categories.debug_actions"))); + addConfigLine(new BCenteredLabel(I18n.get("key.categories.debug_actions"))); for (DebugKeybind keybind : DebugKeybinds.getActionKeybinds()) { addConfigLine(new KeybindEntry(keybind, this::setSelectedEntry, this::refreshEntries)); @@ -104,4 +113,97 @@ public boolean mouseClicked(double d, double e, int i) { return super.mouseClicked(d, e, i); } + + @Override + public void onClose() { + super.onClose(); + + DebugKeybindMain.CONFIG.save(); + } + + public class KeybindEntry extends ConfigEntry { + public DebugKeybind keybind; + + public BLabel label; + public KeybindButton keybindButton; + public ResetButton resetButton; + + Runnable globalRefresh; + + public KeybindEntry(DebugKeybind keybind, Function onSelect, Runnable refresh) { + label = new BLabel(keybind.getTranslation()); + keybindButton = new KeybindButton(keybind, () -> onSelect.apply(this), DebugKeybindsScreen.this::renderTooltip); + resetButton = new ResetButton(keybind, refresh); + + this.keybind = keybind; + + refresh(); + + this.globalRefresh = refresh; + } + + @Override + public List getWidgets() { + return List.of(label, keybindButton, resetButton); + } + + @Override + public boolean isInvalid() { + return false; + } + + public void updateKey(int code) { + keybindButton.update(code); + + refresh(); + globalRefresh.run(); + } + + public void resetKey() { + keybindButton.resetKey(); + + globalRefresh.run(); + } + + public void refresh() { + resetButton.refresh(); + + if (keybind.isUnbound()) { + keybindButton.updateConflicts(List.of()); + return; + } + + List collisions = keybind.checkConflicts(DebugKeybinds.toList()); + + if (keybind instanceof GlobalKeybind) { + KeyMapping[] mappings = ClientUtils.getOptions().keyMappings.clone(); + + collisions.addAll(((GlobalKeybind) keybind).checkMinecraftConflicts(List.of(mappings))); + } + + keybindButton.updateConflicts(collisions); + } + + @Override + public void render(int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { + int keybindWidth = 75; + int resetWidth = 50; + int padding = 2; + + label.x = (x - 25); + label.y = (y); + label.setWidth(entryWidth - keybindWidth - resetWidth - padding); + label.render(mouseX, mouseY, tickDelta); + + keybindButton.x = (x + entryWidth - keybindWidth - resetWidth - padding); + keybindButton.y =(y); + keybindButton.setWidth(keybindWidth); + keybindButton.render(mouseX, mouseY, tickDelta); + + resetButton.x = (x + entryWidth - resetWidth); + resetButton.y = (y); + resetButton.setWidth(resetWidth); + resetButton.render(mouseX, mouseY, tickDelta); + } + } } diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/gui/KeybindButton.java b/common/src/main/java/dev/boxadactle/debugkeybind/gui/KeybindButton.java index bcee852..6e85441 100644 --- a/common/src/main/java/dev/boxadactle/debugkeybind/gui/KeybindButton.java +++ b/common/src/main/java/dev/boxadactle/debugkeybind/gui/KeybindButton.java @@ -1,15 +1,15 @@ package dev.boxadactle.debugkeybind.gui; +import dev.boxadactle.boxlib.function.Consumer3; import dev.boxadactle.boxlib.gui.config.BOptionButton; import dev.boxadactle.boxlib.gui.config.widget.button.BCustomButton; import dev.boxadactle.boxlib.util.GuiUtils; import dev.boxadactle.boxlib.util.RenderUtils; import dev.boxadactle.debugkeybind.keybind.DebugKeybind; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.components.Tooltip; +import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.TextComponent; import java.util.List; import java.util.function.Supplier; @@ -19,13 +19,18 @@ public class KeybindButton extends BCustomButton { DebugKeybind keybind; Supplier onSelect; + Consumer3, Integer, Integer> tooltipRenderer; + String tooltip = null; + public boolean hasCollisions = false; - public KeybindButton(DebugKeybind keybind, Supplier onSelect) { - super(keybind.getTranslatedKey()); + public KeybindButton(DebugKeybind keybind, Supplier onSelect, Consumer3, Integer, Integer> tooltipRenderer) { + super(keybind.getKeyTranslation()); this.keybind = keybind; this.onSelect = onSelect; + + this.tooltipRenderer = tooltipRenderer; } public void update(int keyPressed) { @@ -33,71 +38,92 @@ public void update(int keyPressed) { keybind.setKey(keyPressed); } - setMessage(keybind.getTranslatedKey()); + setMessage(keybind.getKeyTranslation()); } public void resetKey() { keybind.setToDefault(); - setMessage(keybind.getTranslatedKey()); + setMessage(keybind.getKeyTranslation()); } - public void updateConflicts(List conflicts) { + public void updateConflicts(List conflicts) { if (conflicts.isEmpty()) { - setMessage(keybind.getTranslatedKey()); - setTooltip(null); + setMessage(keybind.getKeyTranslation()); + tooltip = null; hasCollisions = false; return; } - setMessage(GuiUtils.colorize( - GuiUtils.surround( - "[ ", " ]", - GuiUtils.colorize( - keybind.getTranslatedKey().copy().withStyle(ChatFormatting.UNDERLINE), - GuiUtils.WHITE - ) - ), - GuiUtils.RED - )); - - MutableComponent tooltip = Component.empty(); +// setMessage(GuiUtils.colorize( +// GuiUtils.surround( +// "[ ", " ]", +// GuiUtils.colorize( +// new TextComponent(keybind.getKeyTranslation()).withStyle(ChatFormatting.UNDERLINE), +// ChatFormatting.WHITE +// ) +// ), +// ChatFormatting.RED +// ).getColoredString()); + setMessage( + ChatFormatting.RED + "[ " + + GuiUtils.colorize( + new TextComponent(keybind.getKeyTranslation()).withStyle(ChatFormatting.UNDERLINE), + ChatFormatting.WHITE + ).getColoredString() + + ChatFormatting.RED + " ]" + ); + + Component tooltip = new TextComponent(""); for (int i = 0; i < conflicts.size() ; i++) { tooltip.append(conflicts.get(i)); if (i != conflicts.size() - 1) { - tooltip.append(Component.literal(", ")); + tooltip.append(new TextComponent(",\n")); } } - setTooltip(Tooltip.create(Component.translatable("controls.keybinds.duplicateKeybinds", tooltip))); + this.tooltip = I18n.get("controls.keybinds.duplicateKeybinds", tooltip); hasCollisions = true; } + @Override + public void renderToolTip(int i, int j) { + tooltipRenderer.accept(List.of(tooltip.split("\n")), i, j); + } + @Override protected void buttonClicked(BOptionButton button) { if (onSelect.get()) { - setMessage(GuiUtils.colorize( - GuiUtils.surround( - "> ", " <", - GuiUtils.colorize( - keybind.getTranslatedKey().copy().withStyle(ChatFormatting.UNDERLINE), - GuiUtils.WHITE - ) - ), - GuiUtils.YELLOW - )); + setMessage( + ChatFormatting.YELLOW + "> " + + GuiUtils.colorize( + new TextComponent(keybind.getKeyTranslation()).withStyle(ChatFormatting.UNDERLINE), + ChatFormatting.WHITE + ).getColoredString() + + ChatFormatting.YELLOW + " <" + ); +// setMessage(GuiUtils.colorize( +// GuiUtils.surround( +// "> ", " <", +// GuiUtils.colorize( +// new TextComponent(keybind.getKeyTranslation()).withStyle(ChatFormatting.UNDERLINE), +// ChatFormatting.WHITE +// ) +// ), +// ChatFormatting.YELLOW +// ).getColoredString()); } } @Override - public void renderWidget(GuiGraphics p_93657_, int mouseX, int mouseY, float delta) { - super.renderWidget(p_93657_, mouseX, mouseY, delta); + public void renderButton(int mouseX, int mouseY, float delta) { + super.renderButton(mouseX, mouseY, delta); if (hasCollisions) { - RenderUtils.drawSquare(p_93657_, getX() - 12, getY(), 10, getHeight(), GuiUtils.RED); + RenderUtils.drawSquare(x - 12, y, 10, height, GuiUtils.RED); } } } diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/gui/KeybindEntry.java b/common/src/main/java/dev/boxadactle/debugkeybind/gui/KeybindEntry.java deleted file mode 100644 index e7c246c..0000000 --- a/common/src/main/java/dev/boxadactle/debugkeybind/gui/KeybindEntry.java +++ /dev/null @@ -1,101 +0,0 @@ -package dev.boxadactle.debugkeybind.gui; - -import dev.boxadactle.boxlib.gui.config.BOptionScreen; -import dev.boxadactle.boxlib.gui.config.widget.label.BLabel; -import dev.boxadactle.boxlib.util.ClientUtils; -import dev.boxadactle.debugkeybind.keybind.DebugKeybind; -import dev.boxadactle.debugkeybind.keybind.DebugKeybinds; -import dev.boxadactle.debugkeybind.keybind.GlobalKeybind; -import net.minecraft.client.KeyMapping; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.components.AbstractWidget; -import net.minecraft.network.chat.Component; - -import java.util.List; -import java.util.function.Function; - -public class KeybindEntry extends BOptionScreen.ConfigList.ConfigEntry { - public DebugKeybind keybind; - - public BLabel label; - public KeybindButton keybindButton; - public ResetButton resetButton; - - Runnable globalRefresh; - - public KeybindEntry(DebugKeybind keybind, Function onSelect, Runnable refresh) { - label = new BLabel(keybind.getComponent()); - keybindButton = new KeybindButton(keybind, () -> onSelect.apply(this)); - resetButton = new ResetButton(keybind, refresh); - - this.keybind = keybind; - - refresh(); - - this.globalRefresh = refresh; - } - - @Override - public List getWidgets() { - return List.of(label, keybindButton, resetButton); - } - - @Override - public boolean isInvalid() { - return false; - } - - public void updateKey(int code) { - keybindButton.update(code); - - refresh(); - globalRefresh.run(); - } - - public void resetKey() { - keybindButton.resetKey(); - - globalRefresh.run(); - } - - public void refresh() { - resetButton.refresh(); - - if (keybind.isUnbound()) { - keybindButton.updateConflicts(List.of()); - return; - } - - List collisions = keybind.checkConflicts(DebugKeybinds.toList()); - - if (keybind instanceof GlobalKeybind) { - KeyMapping[] mappings = ClientUtils.getOptions().keyMappings.clone(); - - collisions.addAll(((GlobalKeybind) keybind).checkMinecraftConflicts(List.of(mappings))); - } - - keybindButton.updateConflicts(collisions); - } - - @Override - public void render(GuiGraphics guiGraphics, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { - int keybindWidth = 75; - int resetWidth = 50; - int padding = 2; - - label.setX(x - 25); - label.setY(y); - label.setWidth(entryWidth - keybindWidth - resetWidth - padding); - label.render(guiGraphics, mouseX, mouseY, tickDelta); - - keybindButton.setX(x + entryWidth - keybindWidth - resetWidth - padding); - keybindButton.setY(y); - keybindButton.setWidth(keybindWidth); - keybindButton.render(guiGraphics, mouseX, mouseY, tickDelta); - - resetButton.setX(x + entryWidth - resetWidth); - resetButton.setY(y); - resetButton.setWidth(resetWidth); - resetButton.render(guiGraphics, mouseX, mouseY, tickDelta); - } -} diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/gui/ResetButton.java b/common/src/main/java/dev/boxadactle/debugkeybind/gui/ResetButton.java index 85c0232..26ebe82 100644 --- a/common/src/main/java/dev/boxadactle/debugkeybind/gui/ResetButton.java +++ b/common/src/main/java/dev/boxadactle/debugkeybind/gui/ResetButton.java @@ -3,6 +3,7 @@ import dev.boxadactle.boxlib.gui.config.BOptionButton; import dev.boxadactle.boxlib.gui.config.widget.button.BCustomButton; import dev.boxadactle.debugkeybind.keybind.DebugKeybind; +import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; public class ResetButton extends BCustomButton { @@ -11,7 +12,7 @@ public class ResetButton extends BCustomButton { Runnable refresh; public ResetButton(DebugKeybind keybind, Runnable refresh) { - super(Component.translatable("controls.reset")); + super(I18n.get("controls.reset")); this.keybind = keybind; this.refresh = refresh; diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/keybind/ActionKeybind.java b/common/src/main/java/dev/boxadactle/debugkeybind/keybind/ActionKeybind.java index 3e5be6f..0d41418 100644 --- a/common/src/main/java/dev/boxadactle/debugkeybind/keybind/ActionKeybind.java +++ b/common/src/main/java/dev/boxadactle/debugkeybind/keybind/ActionKeybind.java @@ -1,6 +1,7 @@ package dev.boxadactle.debugkeybind.keybind; import com.mojang.blaze3d.platform.InputConstants; +import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; import java.util.ArrayList; @@ -71,8 +72,8 @@ public boolean isUnbound() { } @Override - public Component getTranslatedKey() { - return key.getDisplayName(); + public String getTranslation() { + return I18n.get(name); } @Override @@ -86,11 +87,11 @@ public String saveString() { } @Override - public List checkConflicts(List keybinds) { - List list = new ArrayList<>(); + public List checkConflicts(List keybinds) { + List list = new ArrayList<>(); for (DebugKeybind k : keybinds) { - if (!k.getName().equals(name) && k.getKeyCode() == getKeyCode()) list.add(Component.translatable(k.getName())); + if (!k.getName().equals(name) && k.getKeyCode() == getKeyCode()) list.add(I18n.get(k.getName())); } return list; diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/keybind/DebugKeybind.java b/common/src/main/java/dev/boxadactle/debugkeybind/keybind/DebugKeybind.java index ffd1846..92d0061 100644 --- a/common/src/main/java/dev/boxadactle/debugkeybind/keybind/DebugKeybind.java +++ b/common/src/main/java/dev/boxadactle/debugkeybind/keybind/DebugKeybind.java @@ -1,9 +1,12 @@ package dev.boxadactle.debugkeybind.keybind; import com.mojang.blaze3d.platform.InputConstants; +import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; import java.util.List; +import java.util.Objects; public interface DebugKeybind { @@ -27,15 +30,32 @@ public interface DebugKeybind { boolean isUnbound(); - Component getTranslatedKey(); + String getTranslation(); + + default String getKeyTranslation() { + if (isUnbound()) return I18n.get("key.keyboard.unknown"); + + String string = getKey().getName(); + int i = getKey().getValue(); + String string2 = switch (getKey().getType()) { + case KEYSYM -> InputConstants.translateKeyCode(i); + case SCANCODE -> InputConstants.translateScanCode(i); + case MOUSE -> { + String string3 = I18n.get(string); + yield Objects.equals(string3, string) ? I18n.get(InputConstants.Type.MOUSE.getDefaultPrefix(), i + 1) : string3; + } + }; + + return string2 == null ? I18n.get(string) : string2; + } boolean isDefault(); String saveString(); - List checkConflicts(List keybinds); + List checkConflicts(List keybinds); default Component getComponent() { - return Component.translatable(getName()); + return new TranslatableComponent(getName()); } } diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/keybind/DebugKeybinds.java b/common/src/main/java/dev/boxadactle/debugkeybind/keybind/DebugKeybinds.java index e645180..f40cd85 100644 --- a/common/src/main/java/dev/boxadactle/debugkeybind/keybind/DebugKeybinds.java +++ b/common/src/main/java/dev/boxadactle/debugkeybind/keybind/DebugKeybinds.java @@ -3,6 +3,7 @@ import com.google.common.collect.Lists; import dev.boxadactle.boxlib.keybind.KeybindHelper; import net.minecraft.client.KeyMapping; +import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; import java.util.ArrayList; @@ -22,16 +23,17 @@ public class DebugKeybinds { public static ActionKeybind SHOW_HITBOXES = createActionKeybind("key.debug_actions.show_hitboxes", 66); public static ActionKeybind COPY_LOCATION = createActionKeybind("key.debug_actions.copy_location", 67); public static ActionKeybind CLEAR_CHAT = createActionKeybind("key.debug_actions.clear_chat", 68); + public static ActionKeybind CYCLE_RENDER_DISTANCE = createActionKeybind("key.debug_actions.cycle_render_distance", 70); public static ActionKeybind CHUNK_BORDERS = createActionKeybind("key.debug_actions.chunk_borders", 71); public static ActionKeybind ADVANCED_TOOLTIPS = createActionKeybind("key.debug_actions.advanced_tooltips", 72); public static ActionKeybind INSPECT = createActionKeybind("key.debug_actions.inspect", 73); - public static ActionKeybind PROFILING = createActionKeybind("key.debug_actions.profiling", 76); +// public static ActionKeybind PROFILING = createActionKeybind("key.debug_actions.profiling", 76); public static ActionKeybind CREATIVE_SPECTATOR = createActionKeybind("key.debug_actions.creative_spectator", 78); public static ActionKeybind PAUSE_FOCUS = createActionKeybind("key.debug_actions.pause_focus", 80); public static ActionKeybind HELP = createActionKeybind("key.debug_actions.help", 81); - public static ActionKeybind DUMP_DYNAMIC_TEXTURES = createActionKeybind("key.debug_actions.dynamic_textures", 83); +// public static ActionKeybind DUMP_DYNAMIC_TEXTURES = createActionKeybind("key.debug_actions.dynamic_textures", 83); public static ActionKeybind RELOAD_RESOURCEPACKS = createActionKeybind("key.debug_actions.reload_resourcepacks", 84); - public static ActionKeybind OPEN_GAMEMODE_SWITCHER = createActionKeybind("key.debug_actions.open_gamemode_switcher", 293); +// public static ActionKeybind OPEN_GAMEMODE_SWITCHER = createActionKeybind("key.debug_actions.open_gamemode_switcher", 293); public static ActionKeybind PAUSE_WITHOUT_MENU = createActionKeybind("key.debug_actions.pause_without_menu", 256); public static void refreshActionBindings() { @@ -78,36 +80,27 @@ public static List getActionKeybinds() { RELOAD_CHUNKS, SHOW_HITBOXES, COPY_LOCATION, + CYCLE_RENDER_DISTANCE, CLEAR_CHAT, CHUNK_BORDERS, ADVANCED_TOOLTIPS, INSPECT, - PROFILING, +// PROFILING, CREATIVE_SPECTATOR, PAUSE_FOCUS, HELP, - DUMP_DYNAMIC_TEXTURES, +// DUMP_DYNAMIC_TEXTURES, RELOAD_RESOURCEPACKS, - OPEN_GAMEMODE_SWITCHER, +// OPEN_GAMEMODE_SWITCHER, PAUSE_WITHOUT_MENU ); } - public static List getCollisions(KeyMapping k) { - List collisions = new ArrayList<>(); + public static List getCollisions(KeyMapping k) { + List collisions = new ArrayList<>(); for (GlobalKeybind key : list) { - if (key.getKeyCode() == KeybindHelper.getBoundKey(k).getValue()) collisions.add(Component.translatable(key.getName())); - } - - return collisions; - } - - public static List getCollisions(DebugKeybind k) { - List collisions = new ArrayList<>(); - - for (GlobalKeybind key : list) { - if (key.getKeyCode() == k.getKeyCode()) collisions.add(Component.translatable(key.getName())); + if (key.getKeyCode() == KeybindHelper.getBoundKey(k).getValue()) collisions.add(I18n.get(key.getName())); } return collisions; diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/keybind/GlobalKeybind.java b/common/src/main/java/dev/boxadactle/debugkeybind/keybind/GlobalKeybind.java index ae485b8..59693de 100644 --- a/common/src/main/java/dev/boxadactle/debugkeybind/keybind/GlobalKeybind.java +++ b/common/src/main/java/dev/boxadactle/debugkeybind/keybind/GlobalKeybind.java @@ -3,6 +3,7 @@ import com.mojang.blaze3d.platform.InputConstants; import dev.boxadactle.boxlib.keybind.KeybindHelper; import net.minecraft.client.KeyMapping; +import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; import java.util.ArrayList; @@ -62,8 +63,8 @@ public boolean isUnbound() { return key.equals(InputConstants.UNKNOWN); } - public Component getTranslatedKey() { - return key.getDisplayName(); + public String getTranslation() { + return I18n.get(name); } public boolean isDefault() { @@ -74,21 +75,21 @@ public String saveString() { return this.key.getName(); } - public List checkConflicts(List keybinds) { - List list = new ArrayList<>(); + public List checkConflicts(List keybinds) { + List list = new ArrayList<>(); for (DebugKeybind k : keybinds) { - if (!k.getName().equals(name) && k.getKeyCode() == getKeyCode()) list.add(Component.translatable(k.getName())); + if (!k.getName().equals(name) && k.getKeyCode() == getKeyCode()) list.add(I18n.get(k.getName())); } return list; } - public List checkMinecraftConflicts(List keyMappings) { - List list = new ArrayList<>(); + public List checkMinecraftConflicts(List keyMappings) { + List list = new ArrayList<>(); for (KeyMapping k : keyMappings) { - if (KeybindHelper.getBoundKey(k).getValue() == getKeyCode()) list.add(Component.translatable(k.getName())); + if (KeybindHelper.getBoundKey(k).getValue() == getKeyCode()) list.add(I18n.get(k.getName())); } return list; diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/keybind/KeybindConfig.java b/common/src/main/java/dev/boxadactle/debugkeybind/keybind/KeybindConfig.java index b5d7ca7..e105788 100644 --- a/common/src/main/java/dev/boxadactle/debugkeybind/keybind/KeybindConfig.java +++ b/common/src/main/java/dev/boxadactle/debugkeybind/keybind/KeybindConfig.java @@ -24,42 +24,46 @@ InputConstants.Key toKey(int k) { // debug public int debug = getDefault(DEBUG); + public int hideGui = getDefault(HIDE_GUI); // debug actions public int reloadChunks = getDefault(RELOAD_CHUNKS); public int showHitboxes = getDefault(SHOW_HITBOXES); public int copyLocation = getDefault(COPY_LOCATION); + public int cycleRenderDistance = getDefault(CYCLE_RENDER_DISTANCE); public int clearChat = getDefault(CLEAR_CHAT); public int chunkBorders = getDefault(CHUNK_BORDERS); public int advancedTooltips = getDefault(ADVANCED_TOOLTIPS); public int inspect = getDefault(INSPECT); - public int profiling = getDefault(PROFILING); +// public int profiling = getDefault(PROFILING); public int creativeSpectator = getDefault(CREATIVE_SPECTATOR); public int pauseFocus = getDefault(PAUSE_FOCUS); public int help = getDefault(HELP); - public int dumpDynamicTextures = getDefault(DUMP_DYNAMIC_TEXTURES); +// public int dumpDynamicTextures = getDefault(DUMP_DYNAMIC_TEXTURES); public int reloadResourcePacks = getDefault(RELOAD_RESOURCEPACKS); - public int openGamemodeSwitcher = getDefault(OPEN_GAMEMODE_SWITCHER); +// public int openGamemodeSwitcher = getDefault(OPEN_GAMEMODE_SWITCHER); public int pauseWithoutMenu = getDefault(PAUSE_WITHOUT_MENU); @Override public void onConfigLoadPost() { DEBUG.setKey(toKey(debug)); + HIDE_GUI.setKey(toKey(hideGui)); RELOAD_CHUNKS.setKey(toKey(reloadChunks)); SHOW_HITBOXES.setKey(toKey(showHitboxes)); COPY_LOCATION.setKey(toKey(copyLocation)); + CYCLE_RENDER_DISTANCE.setKey(toKey(cycleRenderDistance)); CLEAR_CHAT.setKey(toKey(clearChat)); CHUNK_BORDERS.setKey(toKey(chunkBorders)); ADVANCED_TOOLTIPS.setKey(toKey(advancedTooltips)); INSPECT.setKey(toKey(inspect)); - PROFILING.setKey(toKey(profiling)); +// PROFILING.setKey(toKey(profiling)); CREATIVE_SPECTATOR.setKey(toKey(creativeSpectator)); PAUSE_FOCUS.setKey(toKey(pauseFocus)); HELP.setKey(toKey(help)); - DUMP_DYNAMIC_TEXTURES.setKey(toKey(dumpDynamicTextures)); +// DUMP_DYNAMIC_TEXTURES.setKey(toKey(dumpDynamicTextures)); RELOAD_RESOURCEPACKS.setKey(toKey(reloadResourcePacks)); - OPEN_GAMEMODE_SWITCHER.setKey(toKey(openGamemodeSwitcher)); +// OPEN_GAMEMODE_SWITCHER.setKey(toKey(openGamemodeSwitcher)); PAUSE_WITHOUT_MENU.setKey(toKey(pauseWithoutMenu)); DebugKeybinds.refreshActionBindings(); @@ -70,21 +74,23 @@ public void onConfigLoadPost() { @Override public void onConfigSavePre() { debug = getKey(DEBUG); + hideGui = getKey(HIDE_GUI); reloadChunks = getKey(RELOAD_CHUNKS); showHitboxes = getKey(SHOW_HITBOXES); copyLocation = getKey(COPY_LOCATION); + cycleRenderDistance = getKey(CYCLE_RENDER_DISTANCE); clearChat = getKey(CLEAR_CHAT); chunkBorders = getKey(CHUNK_BORDERS); advancedTooltips = getKey(ADVANCED_TOOLTIPS); inspect = getKey(INSPECT); - profiling = getKey(PROFILING); +// profiling = getKey(PROFILING); creativeSpectator = getKey(CREATIVE_SPECTATOR); pauseFocus = getKey(PAUSE_FOCUS); help = getKey(HELP); - dumpDynamicTextures = getKey(DUMP_DYNAMIC_TEXTURES); +// dumpDynamicTextures = getKey(DUMP_DYNAMIC_TEXTURES); reloadResourcePacks = getKey(RELOAD_RESOURCEPACKS); - openGamemodeSwitcher = getKey(OPEN_GAMEMODE_SWITCHER); +// openGamemodeSwitcher = getKey(OPEN_GAMEMODE_SWITCHER); pauseWithoutMenu = getKey(PAUSE_WITHOUT_MENU); DebugKeybinds.refreshActionBindings(); diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/mixin/ControlsScreenMixin.java b/common/src/main/java/dev/boxadactle/debugkeybind/mixin/ControlsScreenMixin.java deleted file mode 100644 index 737e4fc..0000000 --- a/common/src/main/java/dev/boxadactle/debugkeybind/mixin/ControlsScreenMixin.java +++ /dev/null @@ -1,34 +0,0 @@ -package dev.boxadactle.debugkeybind.mixin; - -import dev.boxadactle.boxlib.util.ClientUtils; -import dev.boxadactle.debugkeybind.gui.DebugKeybindsScreen; -import net.minecraft.client.Options; -import net.minecraft.client.gui.components.Button; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.options.OptionsSubScreen; -import net.minecraft.client.gui.screens.options.controls.ControlsScreen; -import net.minecraft.network.chat.Component; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(ControlsScreen.class) -public abstract class ControlsScreenMixin extends OptionsSubScreen { - - public ControlsScreenMixin(Screen screen, Options options, Component component) { - super(screen, options, component); - } - - @Inject( - method = "addOptions", - at = @At("RETURN") - ) - private void addDebugButton(CallbackInfo ci) { - list.addSmall(Button.builder(Component.translatable("controls.keybinds.debug"), (p_280844_) -> { - Screen s = ClientUtils.getCurrentScreen(); - ClientUtils.setScreen(new DebugKeybindsScreen(s)); - }).build(), null); - } - -} diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/mixin/DebugInvoker.java b/common/src/main/java/dev/boxadactle/debugkeybind/mixin/DebugInvoker.java deleted file mode 100644 index fa64b5d..0000000 --- a/common/src/main/java/dev/boxadactle/debugkeybind/mixin/DebugInvoker.java +++ /dev/null @@ -1,13 +0,0 @@ -package dev.boxadactle.debugkeybind.mixin; - -import net.minecraft.client.KeyboardHandler; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(KeyboardHandler.class) -public interface DebugInvoker { - - @Invoker("handleDebugKeys") - boolean invokeHandleDebugKeys(int keyCode); - -} diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/mixin/GamemodeSwitcherScreenMixin.java b/common/src/main/java/dev/boxadactle/debugkeybind/mixin/GamemodeSwitcherScreenMixin.java deleted file mode 100644 index 6d4aa82..0000000 --- a/common/src/main/java/dev/boxadactle/debugkeybind/mixin/GamemodeSwitcherScreenMixin.java +++ /dev/null @@ -1,56 +0,0 @@ -package dev.boxadactle.debugkeybind.mixin; - -import dev.boxadactle.debugkeybind.keybind.DebugKeybinds; -import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.screens.debug.GameModeSwitcherScreen; -import net.minecraft.network.chat.Component; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.*; - -@Mixin(GameModeSwitcherScreen.class) -public abstract class GamemodeSwitcherScreenMixin { - - @Shadow public abstract boolean keyPressed(int i, int j, int k); - - @ModifyArg( - method = "checkToClose", - at = @At( - value = "INVOKE", - target = "Lcom/mojang/blaze3d/platform/InputConstants;isKeyDown(JI)Z" - ), - index = 1 - ) - private int overrideF3Close(int p_84832_) { - return DebugKeybinds.DEBUG.getKeyCode(); - } - - // i have found a better way to do this - @ModifyConstant( - method = "keyPressed", - constant = @Constant(intValue = 293) - ) - private int overrideF4Press(int i) { - return DebugKeybinds.OPEN_GAMEMODE_SWITCHER.getKeyCode(); - } - - @ModifyArg( - method = "render", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/gui/GuiGraphics;drawCenteredString(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;III)V", - ordinal = 1 - ), - index = 1 - ) - private Component overrideSwitchKeyComponent(Component component) { - return Component.translatable( - "debug.gamemodes.select_next", - Component.translatable( - "debug.gamemodes.press_f4", - DebugKeybinds.OPEN_GAMEMODE_SWITCHER.getTranslatedKey() - ).withStyle(ChatFormatting.AQUA) - ); - } - -} diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/mixin/KeyBindsListMixin.java b/common/src/main/java/dev/boxadactle/debugkeybind/mixin/KeyBindsListMixin.java index 1470d90..b00397e 100644 --- a/common/src/main/java/dev/boxadactle/debugkeybind/mixin/KeyBindsListMixin.java +++ b/common/src/main/java/dev/boxadactle/debugkeybind/mixin/KeyBindsListMixin.java @@ -1,50 +1,63 @@ package dev.boxadactle.debugkeybind.mixin; import dev.boxadactle.debugkeybind.keybind.DebugKeybinds; +import net.minecraft.ChatFormatting; import net.minecraft.client.KeyMapping; -import net.minecraft.client.gui.screens.options.controls.KeyBindsList; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.MutableComponent; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.screens.controls.ControlList; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.List; -@Mixin(KeyBindsList.KeyEntry.class) +@Mixin(ControlList.KeyEntry.class) public class KeyBindsListMixin { @Shadow @Final private KeyMapping key; - @Shadow private boolean hasCollision; + @Shadow @Final private Button changeButton; - @Redirect( - method = "refreshEntry", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/network/chat/Component;empty()Lnet/minecraft/network/chat/MutableComponent;" - ) + @Inject( + method = "render", + at = @At("RETURN") ) - private MutableComponent checkDebugCollisions() { - List collisions = DebugKeybinds.getCollisions(key); - - MutableComponent mutableComponent = Component.empty(); + private void checkDebugCollisions(int i, int j, int k, int l, int m, int n, int o, boolean bl, float f, CallbackInfo ci) { + List collisions = DebugKeybinds.getCollisions(key); if (!collisions.isEmpty()) { - boolean bl = false; - this.hasCollision = true; - - for (Component c : collisions) { - if (bl) mutableComponent.append(", "); - - bl = true; - mutableComponent.append(c); - } + changeButton.setMessage(ChatFormatting.RED + changeButton.getMessage()); } - - return mutableComponent; } +// @Redirect( +// method = "render", +// at = @At( +// value = "INVOKE", +// target = "Lnet/minecraft/network/chat/Component;empty()Lnet/minecraft/network/chat/MutableComponent;" +// ) +// ) +// private MutableComponent checkDebugCollisions() { +// List collisions = DebugKeybinds.getCollisions(key); +// +// MutableComponent mutableComponent = Component.empty(); +// +// if (!collisions.isEmpty()) { +// boolean bl = false; +// this.hasCollision = true; +// +// for (Component c : collisions) { +// if (bl) mutableComponent.append(", "); +// +// bl = true; +// mutableComponent.append(c); +// } +// } +// +// return mutableComponent; +// } + } diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/mixin/KeyboardHandlerMixin.java b/common/src/main/java/dev/boxadactle/debugkeybind/mixin/KeyboardHandlerMixin.java index 7432d91..7b69ebc 100644 --- a/common/src/main/java/dev/boxadactle/debugkeybind/mixin/KeyboardHandlerMixin.java +++ b/common/src/main/java/dev/boxadactle/debugkeybind/mixin/KeyboardHandlerMixin.java @@ -8,16 +8,14 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.ChatComponent; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.*; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(KeyboardHandler.class) public abstract class KeyboardHandlerMixin { - @Shadow private boolean handledDebugKey; - @Shadow @Final private Minecraft minecraft; @Shadow private long debugCrashKeyTime; @@ -74,24 +72,25 @@ private void overrideHelpMenu(int i, CallbackInfoReturnable cir) { if (!(this.debugCrashKeyTime > 0L && this.debugCrashKeyTime < Util.getMillis() - 100L) && i == 81) { this.debugFeedbackTranslated("debug.help.message"); - Component debugKey = DebugKeybinds.DEBUG.getTranslatedKey(); + String debugKey = DebugKeybinds.DEBUG.getKeyTranslation(); ChatComponent chatComponent = this.minecraft.gui.getChat(); - chatComponent.addMessage(Component.translatable("debug.reload_chunks.help", debugKey, DebugKeybinds.RELOAD_CHUNKS.getTranslatedKey())); - chatComponent.addMessage(Component.translatable("debug.show_hitboxes.help", debugKey, DebugKeybinds.SHOW_HITBOXES.getTranslatedKey())); - chatComponent.addMessage(Component.translatable("debug.copy_location.help", debugKey, DebugKeybinds.COPY_LOCATION.getTranslatedKey(), debugKey, "C")); - chatComponent.addMessage(Component.translatable("debug.clear_chat.help", debugKey, DebugKeybinds.CLEAR_CHAT.getTranslatedKey())); - chatComponent.addMessage(Component.translatable("debug.chunk_boundaries.help", debugKey, DebugKeybinds.CHUNK_BORDERS.getTranslatedKey())); - chatComponent.addMessage(Component.translatable("debug.advanced_tooltips.help", debugKey, DebugKeybinds.ADVANCED_TOOLTIPS.getTranslatedKey())); - chatComponent.addMessage(Component.translatable("debug.inspect.help", debugKey, DebugKeybinds.INSPECT.getTranslatedKey())); - chatComponent.addMessage(Component.translatable("debug.profiling.help", debugKey, DebugKeybinds.PROFILING.getTranslatedKey())); - chatComponent.addMessage(Component.translatable("debug.creative_spectator.help", debugKey, DebugKeybinds.CREATIVE_SPECTATOR.getTranslatedKey())); - chatComponent.addMessage(Component.translatable("debug.pause_focus.help", debugKey, DebugKeybinds.PAUSE_FOCUS.getTranslatedKey())); - chatComponent.addMessage(Component.translatable("debug.help.help", debugKey, DebugKeybinds.HELP.getTranslatedKey())); - chatComponent.addMessage(Component.translatable("debug.dump_dynamic_textures.help", debugKey, DebugKeybinds.DUMP_DYNAMIC_TEXTURES.getTranslatedKey())); - chatComponent.addMessage(Component.translatable("debug.reload_resourcepacks.help", debugKey, DebugKeybinds.RELOAD_RESOURCEPACKS.getTranslatedKey())); - chatComponent.addMessage(Component.translatable("debug.pause.help", debugKey, DebugKeybinds.PAUSE_WITHOUT_MENU.getTranslatedKey())); - chatComponent.addMessage(Component.translatable("debug.gamemodes.help", debugKey, DebugKeybinds.OPEN_GAMEMODE_SWITCHER.getTranslatedKey())); + chatComponent.addMessage(new TranslatableComponent("debug.reload_chunks.help", debugKey, DebugKeybinds.RELOAD_CHUNKS.getKeyTranslation())); + chatComponent.addMessage(new TranslatableComponent("debug.show_hitboxes.help", debugKey, DebugKeybinds.SHOW_HITBOXES.getKeyTranslation())); + chatComponent.addMessage(new TranslatableComponent("debug.copy_location.help", debugKey, DebugKeybinds.COPY_LOCATION.getKeyTranslation(), debugKey, "C")); + chatComponent.addMessage(new TranslatableComponent("debug.cycle_renderdistance.help", debugKey, DebugKeybinds.CYCLE_RENDER_DISTANCE.getKeyTranslation())); + chatComponent.addMessage(new TranslatableComponent("debug.clear_chat.help", debugKey, DebugKeybinds.CLEAR_CHAT.getKeyTranslation())); + chatComponent.addMessage(new TranslatableComponent("debug.chunk_boundaries.help", debugKey, DebugKeybinds.CHUNK_BORDERS.getKeyTranslation())); + chatComponent.addMessage(new TranslatableComponent("debug.advanced_tooltips.help", debugKey, DebugKeybinds.ADVANCED_TOOLTIPS.getKeyTranslation())); + chatComponent.addMessage(new TranslatableComponent("debug.inspect.help", debugKey, DebugKeybinds.INSPECT.getKeyTranslation())); +// chatComponent.addMessage(new TranslatableComponent("debug.profiling.help", debugKey, DebugKeybinds.PROFILING.getKeyTranslation())); + chatComponent.addMessage(new TranslatableComponent("debug.creative_spectator.help", debugKey, DebugKeybinds.CREATIVE_SPECTATOR.getKeyTranslation())); + chatComponent.addMessage(new TranslatableComponent("debug.pause_focus.help", debugKey, DebugKeybinds.PAUSE_FOCUS.getKeyTranslation())); + chatComponent.addMessage(new TranslatableComponent("debug.help.help", debugKey, DebugKeybinds.HELP.getKeyTranslation())); +// chatComponent.addMessage(new TranslatableComponent("debug.dump_dynamic_textures.help", debugKey, DebugKeybinds.DUMP_DYNAMIC_TEXTURES.getKeyTranslation())); + chatComponent.addMessage(new TranslatableComponent("debug.reload_resourcepacks.help", debugKey, DebugKeybinds.RELOAD_RESOURCEPACKS.getKeyTranslation())); + chatComponent.addMessage(new TranslatableComponent("debug.pause.help", debugKey, DebugKeybinds.PAUSE_WITHOUT_MENU.getKeyTranslation())); +// chatComponent.addMessage(new TranslatableComponent("debug.gamemodes.help", debugKey, DebugKeybinds.OPEN_GAMEMODE_SWITCHER.getKeyTranslation())); cir.setReturnValue(true); } } diff --git a/common/src/main/java/dev/boxadactle/debugkeybind/mixin/OptionsScreenMixin.java b/common/src/main/java/dev/boxadactle/debugkeybind/mixin/OptionsScreenMixin.java new file mode 100644 index 0000000..f683304 --- /dev/null +++ b/common/src/main/java/dev/boxadactle/debugkeybind/mixin/OptionsScreenMixin.java @@ -0,0 +1,81 @@ +package dev.boxadactle.debugkeybind.mixin; + +import dev.boxadactle.boxlib.gui.config.BOptionScreen; +import dev.boxadactle.boxlib.gui.config.widget.button.BConfigScreenButton; +import dev.boxadactle.boxlib.gui.config.widget.button.BCustomButton; +import dev.boxadactle.debugkeybind.gui.DebugKeybindsScreen; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.screens.OptionsScreen; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.controls.ControlsScreen; +import net.minecraft.client.resources.language.I18n; +import net.minecraft.network.chat.Component; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; + +@Mixin(OptionsScreen.class) +public abstract class OptionsScreenMixin extends Screen { + protected OptionsScreenMixin(Component component) { + super(component); + } + + @ModifyArg( + method = "init", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/gui/components/Button;(IIIILjava/lang/String;Lnet/minecraft/client/gui/components/Button$OnPress;)V", + ordinal = 4 + ), + index = 5 + ) + private Button.OnPress changeControlsBehavior(Button.OnPress arg) { + return (button) -> { + this.minecraft.setScreen(new BOptionScreen(this) { + @Override + protected String getName() { + return I18n.get("controls.title"); + } + + @Override + protected void initFooter(int i, int i1) { + addButton(createDoneButton(i, i1, parent)); + } + + @Override + protected int getRowWidth() { + return 310; + } + + @Override + public int getPadding() { + return 10; + } + + @Override + protected int getScrollingWidgetStart() { + return super.getScrollingWidgetStart() + 10; + } + + @Override + protected int getScrollingWidgetEnd() { + return super.getScrollingWidgetEnd() - 10; + } + + @Override + protected void initConfigButtons() { + addConfigLine( + BCustomButton.create(I18n.get("controls.keybinds.button"), () -> { + this.minecraft.setScreen(new ControlsScreen(this, this.minecraft.options)); + }), + new BConfigScreenButton( + I18n.get("controls.keybinds.debug"), + this, + DebugKeybindsScreen::new + ) + ); + } + }); + }; + } +} diff --git a/common/src/main/resources/assets/debugkeybind/lang/en_us.json b/common/src/main/resources/assets/debugkeybind/lang/en_us.json index 3ce2978..e52f2b6 100644 --- a/common/src/main/resources/assets/debugkeybind/lang/en_us.json +++ b/common/src/main/resources/assets/debugkeybind/lang/en_us.json @@ -1,6 +1,8 @@ { + "controls.keybinds.button": "Keybinds...", "controls.keybinds.debug": "Debug Keybinds...", "controls.keybinds.debug.title": "Debug Keybinds", + "controls.keybinds.duplicateKeybinds": "Duplicate Keybinds: %s", "key.categories.debug": "Debug", "key.categories.debug_actions": "Debug Actions (must be pressed with debug key)", @@ -11,6 +13,7 @@ "key.debug_actions.reload_chunks": "Reload All Chunks", "key.debug_actions.show_hitboxes": "Show Hitboxes", "key.debug_actions.copy_location": "Copy Location (hold to crash game)", + "key.debug_actions.cycle_render_distance": "Cycle Render Distance", "key.debug_actions.clear_chat": "Clear Chat", "key.debug_actions.chunk_borders": "Show Chunk Borders", "key.debug_actions.advanced_tooltips": "Render Advanced Tooltips", @@ -22,5 +25,63 @@ "key.debug_actions.dynamic_textures": "Dump Dynamic Textures", "key.debug_actions.reload_resourcepacks": "Reload All Resource Packs", "key.debug_actions.open_gamemode_switcher": "Open Gamemode Switcher", - "key.debug_actions.pause_without_menu": "Pause Without Pause Menu (if possible)" + "key.debug_actions.pause_without_menu": "Pause Without Pause Menu (if possible)", + + "debug.advanced_tooltips.help": "%s + %s = Advanced tooltips", + "debug.advanced_tooltips.off": "Advanced tooltips: hidden", + "debug.advanced_tooltips.on": "Advanced tooltips: shown", + + "debug.chunk_boundaries.help": "%s + %s = Show chunk boundaries", + "debug.chunk_boundaries.off": "Chunk borders: hidden", + "debug.chunk_boundaries.on": "Chunk borders: shown", + + "debug.cycle_renderdistance.help": "%s + %s = Cycle render distance (Shift to invert)", + + "debug.clear_chat.help": "%s + %s = Clear chat", + + "debug.copy_location.help": "%s + %s = Copy location as /tp command, hold %s + %s to crash the game", + "debug.copy_location.message": "Copied location to clipboard", + + "debug.crash.message": "%s + %s is held down. This will crash the game unless released.", + "debug.crash.warning": "Crashing in %s...", + + "debug.creative_spectator.error": "Unable to switch gamemode; no permission", + "debug.creative_spectator.help": "%s + %s = Cycle previous gamemode <-> spectator", + + "debug.dump_dynamic_textures": "Saved dynamic textures to %s", + "debug.dump_dynamic_textures.help": "%s + %s = Dump dynamic textures", + + "debug.gamemodes.error": "Unable to open game mode switcher; no permission", + "debug.gamemodes.help": "%s + %s = Open game mode switcher", + "debug.gamemodes.press_f4": "[ %s ]", + "debug.gamemodes.select_next": "%s Next", + + "debug.help.help": "%s + %s = Show this list", + "debug.help.message": "Key bindings:", + + "debug.inspect.client.block": "Copied client-side block data to clipboard", + "debug.inspect.client.entity": "Copied client-side entity data to clipboard", + "debug.inspect.help": "%s + %s = Copy entity or block data to clipboard", + "debug.inspect.server.block": "Copied server-side block data to clipboard", + "debug.inspect.server.entity": "Copied server-side entity data to clipboard", + + "debug.pause_focus.help": "%s + %s = Pause on lost focus", + "debug.pause_focus.off": "Pause on lost focus: disabled", + "debug.pause_focus.on": "Pause on lost focus: enabled", + "debug.pause.help": "%s + %s = Pause without pause menu (if pausing is possible)", + + "debug.prefix": "[Debug]:", + + "debug.profiling.help": "%s + %s = Start/stop profiling", + "debug.profiling.start": "Profiling started for %s seconds. Use %s + %s to stop early", + "debug.profiling.stop": "Profiling ended. Saved results to %s", + + "debug.reload_chunks.help": "%s + %s = Reload chunks", + "debug.reload_chunks.message": "Reloading all chunks", + "debug.reload_resourcepacks.help": "%s + %s = Reload resource packs", + "debug.reload_resourcepacks.message": "Reloaded resource packs", + + "debug.show_hitboxes.help": "%s + %s = Show hitboxes", + "debug.show_hitboxes.off": "Hitboxes: hidden", + "debug.show_hitboxes.on": "Hitboxes: shown" } \ No newline at end of file diff --git a/common/src/main/resources/assets/debugkeybind/lang/es_es.json b/common/src/main/resources/assets/debugkeybind/lang/es_es.json index fac55ea..64184b8 100644 --- a/common/src/main/resources/assets/debugkeybind/lang/es_es.json +++ b/common/src/main/resources/assets/debugkeybind/lang/es_es.json @@ -1,9 +1,8 @@ { + "controls.keybinds.button": "Teclados...", "controls.keybinds.debug": "Teclas de depuración...", "controls.keybinds.debug.title": "Teclas de depuración", - - "key.categories.debug": "Depuración", - "key.categories.debug_actions": "Acciones de depuración (debe ser presionado con la tecla de depuración)", + "controls.keybinds.duplicateKeybinds": "Teclas duplicados: %s", "key.debug.debugkeybind": "Tecla de depuración", "key.debug.hide_gui": "Eliminar el GUI", @@ -11,6 +10,7 @@ "key.debug_actions.reload_chunks": "Recargar chunks", "key.debug_actions.show_hitboxes": "Mostrar cajas de colisiones", "key.debug_actions.copy_location": "Copiar la ubicación como comando /tp.", + "key.debug_actions.cycle_render_distance": "Ciclo Distancia de renderizado", "key.debug_actions.clear_chat": "Limpiar chat", "key.debug_actions.chunk_borders": "Mostrar bordes de chunks", "key.debug_actions.advanced_tooltips": "Descripciones avanzadas", @@ -22,5 +22,64 @@ "key.debug_actions.dynamic_textures": "Volcar texturas dinámicas", "key.debug_actions.reload_resourcepacks": "Recargar paquestes de recursos", "key.debug_actions.open_gamemode_switcher": "Abrir el menú del juego", - "key.debug_actions.pause_without_menu": "Pausa sin el menú del juego (si es posible)" + "key.debug_actions.pause_without_menu": "Pausa sin el menú del juego (si es posible)", + + "debug.advanced_tooltips.help": "%s + %s = Descripciones avanzadas", + "debug.advanced_tooltips.off": "Descripciones avanzadas: no", + "debug.advanced_tooltips.on": "Descripciones avanzadas: sí", + + "debug.chunk_boundaries.help": "%s + %s = Mostrar bordes de chunks", + "debug.chunk_boundaries.off": "Bordes de chunks: ocultar", + "debug.chunk_boundaries.on": "Bordes de chunks: mostrar", + + "debug.clear_chat.help": "%s + %s = Limpiar chat", + "debug.copy_location.help": "%s + %s = Copiar la ubicación como comando /tp. Mantenlas pulsadas para forzar el cierre del juego", + + "debug.copy_location.message": "Ubicación copiada en el portapapeles", + + "debug.cycle_renderdistance.help": "%s + %s = Ciclar distancia de renderizado (Presiona shift para invertir)", + + "debug.crash.message": "Estás pulsando %s + %s. Si no las sueltas, el juego dejará de funcionar.", + "debug.crash.warning": "El juego dejará de funcionar en %s...", + + "debug.creative_spectator.error": "No tienes permiso para cambiar el modo de juego", + "debug.creative_spectator.help": "%s + %s = Cambiar entre el modo de juego anterior <-> espectador", + + "debug.dump_dynamic_textures": "Texturas dinámicas guardadas en %s", + "debug.dump_dynamic_textures.help": "%s + %s = Volcar texturas dinámicas", + + "debug.gamemodes.error": "No se ha podido abrir el menú de modos de juego, no tienes permisos", + "debug.gamemodes.help": "%s + %s = Abrir menú de modos de juego", + "debug.gamemodes.press_f4": "[ %s ]", + "debug.gamemodes.select_next": "%s siguiente", + + "debug.help.help": "%s + %s = Mostrar esta lista", + "debug.help.message": "Teclas:", + + "debug.inspect.client.block": "Se han copiado los datos del bloque al portapapeles (lado del cliente)", + "debug.inspect.client.entity": "Se han copiado los datos de la entidad al portapapeles (lado del cliente)", + "debug.inspect.help": "%s + %s = Copiar datos de entidad o bloque al portapapeles", + "debug.inspect.server.block": "Se han copiado los datos del bloque al portapapeles (lado del servidor)", + "debug.inspect.server.entity": "Se han copiado los datos de la entidad al portapapeles (lado del servidor)", + + "debug.pause.help": "%s + %s = Pausa sin el menú del juego (si es posible pausar)", + "debug.pause_focus.help": "%s + %s = Pausar juego al cambiar de ventana", + "debug.pause_focus.off": "Pausar al minimizar pantalla: no", + "debug.pause_focus.on": "Pausar al minimizar pantalla: sí", + + "debug.prefix": "[Debug]:", + + "debug.profiling.help": "%s + %s = Iniciar/Terminar perfilado", + "debug.profiling.start": "Iniciado perfilado durante %s segundos. Usa %s + %s para detenerlo antes.", + "debug.profiling.stop": "Perfilado terminado. Resultados guardados en %s.", + + "debug.reload_chunks.help": "%s + %s = Recargar chunks", + "debug.reload_chunks.message": "Recargando todos los chunks", + + "debug.reload_resourcepacks.help": "%s + %s = Recargar paquetes de recursos", + "debug.reload_resourcepacks.message": "Paquetes de recursos recargados", + + "debug.show_hitboxes.help": "%s + %s = Mostrar cajas de colisiones", + "debug.show_hitboxes.off": "Cajas de colisiones: ocultar", + "debug.show_hitboxes.on": "Cajas de colisiones: mostrar" } \ No newline at end of file diff --git a/common/src/main/resources/assets/minecraft/lang/en_us.json b/common/src/main/resources/assets/minecraft/lang/en_us.json deleted file mode 100644 index 1ce593c..0000000 --- a/common/src/main/resources/assets/minecraft/lang/en_us.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "debug.advanced_tooltips.help": "%s + %s = Advanced tooltips", - "debug.advanced_tooltips.off": "Advanced tooltips: hidden", - "debug.advanced_tooltips.on": "Advanced tooltips: shown", - - "debug.chunk_boundaries.help": "%s + %s = Show chunk boundaries", - "debug.chunk_boundaries.off": "Chunk borders: hidden", - "debug.chunk_boundaries.on": "Chunk borders: shown", - - "debug.clear_chat.help": "%s + %s = Clear chat", - - "debug.copy_location.help": "%s + %s = Copy location as /tp command, hold %s + %s to crash the game", - "debug.copy_location.message": "Copied location to clipboard", - - "debug.crash.message": "%s + %s is held down. This will crash the game unless released.", - "debug.crash.warning": "Crashing in %s...", - - "debug.creative_spectator.error": "Unable to switch gamemode; no permission", - "debug.creative_spectator.help": "%s + %s = Cycle previous gamemode <-> spectator", - - "debug.dump_dynamic_textures": "Saved dynamic textures to %s", - "debug.dump_dynamic_textures.help": "%s + %s = Dump dynamic textures", - - "debug.gamemodes.error": "Unable to open game mode switcher; no permission", - "debug.gamemodes.help": "%s + %s = Open game mode switcher", - "debug.gamemodes.press_f4": "[ %s ]", - "debug.gamemodes.select_next": "%s Next", - - "debug.help.help": "%s + %s = Show this list", - "debug.help.message": "Key bindings:", - - "debug.inspect.client.block": "Copied client-side block data to clipboard", - "debug.inspect.client.entity": "Copied client-side entity data to clipboard", - "debug.inspect.help": "%s + %s = Copy entity or block data to clipboard", - "debug.inspect.server.block": "Copied server-side block data to clipboard", - "debug.inspect.server.entity": "Copied server-side entity data to clipboard", - - "debug.pause_focus.help": "%s + %s = Pause on lost focus", - "debug.pause_focus.off": "Pause on lost focus: disabled", - "debug.pause_focus.on": "Pause on lost focus: enabled", - "debug.pause.help": "%s + %s = Pause without pause menu (if pausing is possible)", - - "debug.prefix": "[Debug]:", - - "debug.profiling.help": "%s + %s = Start/stop profiling", - "debug.profiling.start": "Profiling started for %s seconds. Use %s + %s to stop early", - "debug.profiling.stop": "Profiling ended. Saved results to %s", - - "debug.reload_chunks.help": "%s + %s = Reload chunks", - "debug.reload_chunks.message": "Reloading all chunks", - "debug.reload_resourcepacks.help": "%s + %s = Reload resource packs", - "debug.reload_resourcepacks.message": "Reloaded resource packs", - - "debug.show_hitboxes.help": "%s + %s = Show hitboxes", - "debug.show_hitboxes.off": "Hitboxes: hidden", - "debug.show_hitboxes.on": "Hitboxes: shown" -} \ No newline at end of file diff --git a/common/src/main/resources/assets/minecraft/lang/es_es.json b/common/src/main/resources/assets/minecraft/lang/es_es.json deleted file mode 100644 index 91c8eda..0000000 --- a/common/src/main/resources/assets/minecraft/lang/es_es.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "debug.advanced_tooltips.help": "%s + %s = Descripciones avanzadas", - "debug.advanced_tooltips.off": "Descripciones avanzadas: no", - "debug.advanced_tooltips.on": "Descripciones avanzadas: sí", - - "debug.chunk_boundaries.help": "%s + %s = Mostrar bordes de chunks", - "debug.chunk_boundaries.off": "Bordes de chunks: ocultar", - "debug.chunk_boundaries.on": "Bordes de chunks: mostrar", - - "debug.clear_chat.help": "%s + %s = Limpiar chat", - "debug.copy_location.help": "%s + %s = Copiar la ubicación como comando /tp. Mantenlas pulsadas para forzar el cierre del juego", - - "debug.copy_location.message": "Ubicación copiada en el portapapeles", - - "debug.crash.message": "Estás pulsando %s + %s. Si no las sueltas, el juego dejará de funcionar.", - "debug.crash.warning": "El juego dejará de funcionar en %s...", - - "debug.creative_spectator.error": "No tienes permiso para cambiar el modo de juego", - "debug.creative_spectator.help": "%s + %s = Cambiar entre el modo de juego anterior <-> espectador", - - "debug.dump_dynamic_textures": "Texturas dinámicas guardadas en %s", - "debug.dump_dynamic_textures.help": "%s + %s = Volcar texturas dinámicas", - - "debug.gamemodes.error": "No se ha podido abrir el menú de modos de juego, no tienes permisos", - "debug.gamemodes.help": "%s + %s = Abrir menú de modos de juego", - "debug.gamemodes.press_f4": "[ %s ]", - "debug.gamemodes.select_next": "%s siguiente", - - "debug.help.help": "%s + %s = Mostrar esta lista", - "debug.help.message": "Teclas:", - - "debug.inspect.client.block": "Se han copiado los datos del bloque al portapapeles (lado del cliente)", - "debug.inspect.client.entity": "Se han copiado los datos de la entidad al portapapeles (lado del cliente)", - "debug.inspect.help": "%s + %s = Copiar datos de entidad o bloque al portapapeles", - "debug.inspect.server.block": "Se han copiado los datos del bloque al portapapeles (lado del servidor)", - "debug.inspect.server.entity": "Se han copiado los datos de la entidad al portapapeles (lado del servidor)", - - "debug.pause.help": "%s + %s = Pausa sin el menú del juego (si es posible pausar)", - "debug.pause_focus.help": "%s + %s = Pausar juego al cambiar de ventana", - "debug.pause_focus.off": "Pausar al minimizar pantalla: no", - "debug.pause_focus.on": "Pausar al minimizar pantalla: sí", - - "debug.prefix": "[Debug]:", - - "debug.profiling.help": "%s + %s = Iniciar/Terminar perfilado", - "debug.profiling.start": "Iniciado perfilado durante %s segundos. Usa %s + %s para detenerlo antes.", - "debug.profiling.stop": "Perfilado terminado. Resultados guardados en %s.", - - "debug.reload_chunks.help": "%s + %s = Recargar chunks", - "debug.reload_chunks.message": "Recargando todos los chunks", - - "debug.reload_resourcepacks.help": "%s + %s = Recargar paquetes de recursos", - "debug.reload_resourcepacks.message": "Paquetes de recursos recargados", - - "debug.show_hitboxes.help": "%s + %s = Mostrar cajas de colisiones", - "debug.show_hitboxes.off": "Cajas de colisiones: ocultar", - "debug.show_hitboxes.on": "Cajas de colisiones: mostrar" -} \ No newline at end of file diff --git a/common/src/main/resources/DebugKeybind-common.mixins.json b/common/src/main/resources/debugkeybind.mixins.json similarity index 69% rename from common/src/main/resources/DebugKeybind-common.mixins.json rename to common/src/main/resources/debugkeybind.mixins.json index 83a60f5..098acf5 100644 --- a/common/src/main/resources/DebugKeybind-common.mixins.json +++ b/common/src/main/resources/debugkeybind.mixins.json @@ -4,12 +4,10 @@ "package": "dev.boxadactle.debugkeybind.mixin", "compatibilityLevel": "JAVA_17", "client": [ - "ControlsScreenMixin", - "DebugInvoker", - "GamemodeSwitcherScreenMixin", "InputConstantsMixin", "KeyBindsListMixin", - "KeyboardHandlerMixin" + "KeyboardHandlerMixin", + "OptionsScreenMixin" ], "injectors": { "defaultRequire": 1 diff --git a/fabric/build.gradle b/fabric/build.gradle index f5ce6e1..f53bd7d 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -33,7 +33,7 @@ dependencies { modImplementation("dev.boxadactle:Boxlib-fabric:${rootProject.boxlib_version}") { transitive = false } - modImplementation("com.terraformersmc:modmenu:${rootProject.modmenu_version}") { transitive = true } + modImplementation("io.github.prospector:modmenu:${rootProject.modmenu_version}") { transitive = false } common(project(path: ':common', configuration: 'namedElements')) { transitive false } shadowBundle project(path: ':common', configuration: 'transformProductionFabric') diff --git a/fabric/src/main/java/dev/boxadactle/debugkeybind/fabric/ModMenuImpl.java b/fabric/src/main/java/dev/boxadactle/debugkeybind/fabric/ModMenuImpl.java index a920f85..49172d1 100644 --- a/fabric/src/main/java/dev/boxadactle/debugkeybind/fabric/ModMenuImpl.java +++ b/fabric/src/main/java/dev/boxadactle/debugkeybind/fabric/ModMenuImpl.java @@ -1,13 +1,21 @@ package dev.boxadactle.debugkeybind.fabric; -import com.terraformersmc.modmenu.api.ConfigScreenFactory; -import com.terraformersmc.modmenu.api.ModMenuApi; +import dev.boxadactle.debugkeybind.DebugKeybindMain; import dev.boxadactle.debugkeybind.gui.DebugKeybindsScreen; +import io.github.prospector.modmenu.api.ModMenuApi; +import net.minecraft.client.gui.screens.Screen; + +import java.util.function.Function; public class ModMenuImpl implements ModMenuApi { @Override - public ConfigScreenFactory getModConfigScreenFactory() { + public Function getConfigScreenFactory() { return DebugKeybindsScreen::new; } + + @Override + public String getModId() { + return DebugKeybindMain.MOD_ID; + } } diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 1eb7d43..a012a71 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -21,14 +21,14 @@ ] }, "mixins": [ - "DebugKeybind-common.mixins.json" + "debugkeybind.mixins.json" ], "depends": { - "fabricloader": ">=0.15", - "minecraft": ">=1.21", - "boxlib": ">=14.0.0" + "fabricloader": "*", + "minecraft": "1.14.4", + "boxlib": "2.*" }, "recommends": { - "modmenu": ">=11.0.0" + "modmenu": "*" } } diff --git a/forge/build.gradle b/forge/build.gradle new file mode 100644 index 0000000..9f814e4 --- /dev/null +++ b/forge/build.gradle @@ -0,0 +1,88 @@ +plugins { + id 'com.github.johnrengelman.shadow' + id "me.shedaniel.unified-publishing" +} + +architectury { + platformSetupLoomIde() + forge {} +} + +loom { + forge { + mixinConfig "debugkeybind.mixins.json" + } +} + +configurations { + common { + canBeResolved = true + canBeConsumed = false + } + compileClasspath.extendsFrom common + runtimeClasspath.extendsFrom common + developmentForge.extendsFrom common + + // Files in this configuration will be bundled into your mod using the Shadow plugin. + // Don't use the `shadow` configuration from the plugin itself as it's meant for excluding files. + shadowBundle { + canBeResolved = true + canBeConsumed = false + } +} + +dependencies { + forge "net.minecraftforge:forge:${rootProject.minecraft_version}-${rootProject.forge_version}" + + common(project(path: ':common', configuration: 'namedElements')) { transitive false } + shadowBundle project(path: ':common', configuration: 'transformProductionForge') + + modImplementation("dev.boxadactle:Boxlib-forge:${rootProject.boxlib_version}") { transitive = true } +} + +processResources { + inputs.property 'version', project.version + + filesMatching('META-INF/mods.toml') { + expand version: project.version + } +} + +shadowJar { + configurations = [project.configurations.shadowBundle] + archiveClassifier = 'dev-shadow' +} + +remapJar { + input.set shadowJar.archiveFile +} + +unifiedPublishing { + project { + displayName = "[Forge ${rootProject.minecraft_version}] v$rootProject.mod_version" + version = "$rootProject.version-forge" + changelog = "A changelog can be found here: https://github.com/Boxadactle/coordinates-display/releases/tag/$rootProject.mod_version" + releaseType = rootProject.release_type + gameVersions = Arrays.asList(rootProject.game_versions.split(",")) + gameLoaders = [ "forge" ] + + mainPublication tasks.remapJar + + var cfToken = System.getenv("CURSEFORGE_TOKEN") + if (cfToken != null) { + curseforge { + token = cfToken + id = rootProject.project_id_curseforge + } + } + + var modrinthToken = System.getenv("MODRINTH_TOKEN") + if (modrinthToken != null) { + modrinth { + token = modrinthToken + id = rootProject.project_id_modrinth + version = "${rootProject.mod_version}-forge" + } + } + } +} \ No newline at end of file diff --git a/forge/gradle.properties b/forge/gradle.properties new file mode 100644 index 0000000..37f3cc5 --- /dev/null +++ b/forge/gradle.properties @@ -0,0 +1 @@ +loom.platform = forge \ No newline at end of file diff --git a/forge/src/main/java/dev/boxadactle/debugkeybind/forge/DebugKeybindForge.java b/forge/src/main/java/dev/boxadactle/debugkeybind/forge/DebugKeybindForge.java new file mode 100644 index 0000000..41a4cad --- /dev/null +++ b/forge/src/main/java/dev/boxadactle/debugkeybind/forge/DebugKeybindForge.java @@ -0,0 +1,20 @@ +package dev.boxadactle.debugkeybind.forge; + +import dev.boxadactle.debugkeybind.DebugKeybindMain; +import dev.boxadactle.debugkeybind.gui.DebugKeybindsScreen; +import net.minecraftforge.fml.ExtensionPoint; +import net.minecraftforge.fml.ModLoadingContext; +import net.minecraftforge.fml.common.Mod; + +@Mod(DebugKeybindMain.MOD_ID) +public class DebugKeybindForge { + + public DebugKeybindForge() { + DebugKeybindMain.init(); + + ModLoadingContext.get().registerExtensionPoint(ExtensionPoint.CONFIGGUIFACTORY, () -> + (minecraft, screen) -> new DebugKeybindsScreen(screen) + ); + } + +} diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml new file mode 100644 index 0000000..aeda3c8 --- /dev/null +++ b/forge/src/main/resources/META-INF/mods.toml @@ -0,0 +1,32 @@ +modLoader="javafml" +loaderVersion="[0,)" +license="MIT" + +[[mods]] +modId="debugkeybind" +version="${version}" +displayName="DebugKeybind" +authors="Boxadactle" +description='''A basic mod that adds keybinds for the F3 menu''' +logoFile='icon.png' + +[[dependencies.debugkeybind]] +modId="forge" +mandatory=true +versionRange="[0,)" +ordering="NONE" +side="BOTH" + +[[dependencies.debugkeybind]] +modId="minecraft" +mandatory=true +versionRange="[1.14,)" +ordering="NONE" +side="BOTH" + +[[dependencies.debugkeybind]] +modId="boxlib" +mandatory=true +versionRange="[2.0.0,3.0.0)" +ordering="NONE" +side="CLIENT" \ No newline at end of file diff --git a/forge/src/main/resources/pack.mcmeta b/forge/src/main/resources/pack.mcmeta new file mode 100644 index 0000000..b0d89af --- /dev/null +++ b/forge/src/main/resources/pack.mcmeta @@ -0,0 +1,7 @@ +{ + "pack": { + "description": "DebugKeybind resources", + "pack_format": 15, + "forge:server_data_pack_format": 12 + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index ff62580..ce34242 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,24 +3,25 @@ org.gradle.jvmargs=-Xmx2G org.gradle.parallel=true # Mod properties -mod_version = 9.0.0 +mod_version = 1.2.0 maven_group = dev.boxadactle archives_name = DebugKeybind -enabled_platforms = fabric,neoforge +enabled_platforms = fabric # Minecraft properties -minecraft_version = 1.21 +minecraft_version = 1.14.4 # Dependencies fabric_loader_version = 0.15.11 -fabric_api_version = 0.100.3+1.21 -neoforge_version = 21.0.37-beta +fabric_api_version = 0.28.5+1.14 +forge_version = 28.2.26 -modmenu_version = 11.0.1 -boxlib_version = 14.0.0 +modmenu_version = 1.7.17+build.1 +boxlib_version = 2.0.2 #publishing -game_versions = 1.21 +game_versions = 1.14.4 project_id_curseforge = 901782 project_id_modrinth = DX9ioka8 -release_type = release \ No newline at end of file +release_type = release +changelog_file = CHANGELOG.md \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d64cd49..e644113 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b82aa23..a441313 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew.bat b/gradlew.bat index 93e3f59..25da30d 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -43,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/settings.gradle b/settings.gradle index cf1383e..97c4f5d 100644 --- a/settings.gradle +++ b/settings.gradle @@ -11,4 +11,5 @@ rootProject.name = 'DebugKeybind' include 'common' include 'fabric' -include 'neoforge' +//include 'neoforge' +include 'forge' \ No newline at end of file