✨ Added Toast API Support
This adds in a logAsToast and toastTimer option, and is a minified form of Indrit's initial implementation previously used from fabritone
This commit is contained in:
parent
8ddc795158
commit
d6665f1cd5
@ -529,6 +529,18 @@ public final class Settings {
|
|||||||
*/
|
*/
|
||||||
public final Setting<Boolean> backfill = new Setting<>(false);
|
public final Setting<Boolean> backfill = new Setting<>(false);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shows popup message in the upper right corner, similarly to when you make an advancement
|
||||||
|
*/
|
||||||
|
public final Setting<Boolean> logAsToast = new Setting<>(false);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The time of how long the message in the pop-up will display
|
||||||
|
* <p>
|
||||||
|
* If below 1000L (1sec), it's better to disable this
|
||||||
|
*/
|
||||||
|
public final Setting<Long> toastTimer = new Setting<>(5000L);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Print all the debug messages to chat
|
* Print all the debug messages to chat
|
||||||
*/
|
*/
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
package baritone.api.utils;
|
package baritone.api.utils;
|
||||||
|
|
||||||
import baritone.api.BaritoneAPI;
|
import baritone.api.BaritoneAPI;
|
||||||
|
import baritone.api.utils.gui.BaritoneToast;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.util.text.ITextComponent;
|
import net.minecraft.util.text.ITextComponent;
|
||||||
import net.minecraft.util.text.TextComponentString;
|
import net.minecraft.util.text.TextComponentString;
|
||||||
@ -63,6 +64,35 @@ public interface Helper {
|
|||||||
return prefix;
|
return prefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send a message to display as a toast popup
|
||||||
|
*
|
||||||
|
* @param title The title to display in the popup
|
||||||
|
* @param message The message to display in the popup
|
||||||
|
*/
|
||||||
|
default void logToast(ITextComponent title, ITextComponent message) {
|
||||||
|
BaritoneToast.addOrUpdate(mc.getToastGui(), title, message, BaritoneAPI.getSettings().toastTimer.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send a message to display as a toast popup
|
||||||
|
*
|
||||||
|
* @param title The title to display in the popup
|
||||||
|
* @param message The message to display in the popup
|
||||||
|
*/
|
||||||
|
default void logToast(String title, String message) {
|
||||||
|
logToast(new TextComponentString(title), new TextComponentString(message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send a message to display as a toast popup
|
||||||
|
*
|
||||||
|
* @param message The message to display in the popup
|
||||||
|
*/
|
||||||
|
default void logToast(String message) {
|
||||||
|
logToast(Helper.getPrefix(), new TextComponentString(message));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send a message to chat only if chatDebug is on
|
* Send a message to chat only if chatDebug is on
|
||||||
*
|
*
|
||||||
@ -74,7 +104,31 @@ public interface Helper {
|
|||||||
//System.out.println(message);
|
//System.out.println(message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
logDirect(message);
|
// We won't log debug chat into toasts
|
||||||
|
// Because only a madman would want that extreme spam -_-
|
||||||
|
logDirect(message, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send components to chat with the [Baritone] prefix
|
||||||
|
*
|
||||||
|
* @param logAsToast Whether to log as a toast notification
|
||||||
|
* @param components The components to send
|
||||||
|
*/
|
||||||
|
default void logDirect(boolean logAsToast, ITextComponent... components) {
|
||||||
|
ITextComponent component = new TextComponentString("");
|
||||||
|
if (!logAsToast) {
|
||||||
|
// If we are not logging as a Toast
|
||||||
|
// Append the prefix to the base component line
|
||||||
|
component.appendSibling(getPrefix());
|
||||||
|
component.appendSibling(new TextComponentString(" "));
|
||||||
|
}
|
||||||
|
Arrays.asList(components).forEach(component::appendSibling);
|
||||||
|
if (logAsToast) {
|
||||||
|
logToast(getPrefix(), component);
|
||||||
|
} else {
|
||||||
|
mc.addScheduledTask(() -> BaritoneAPI.getSettings().logger.value.accept(component));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -83,11 +137,23 @@ public interface Helper {
|
|||||||
* @param components The components to send
|
* @param components The components to send
|
||||||
*/
|
*/
|
||||||
default void logDirect(ITextComponent... components) {
|
default void logDirect(ITextComponent... components) {
|
||||||
ITextComponent component = new TextComponentString("");
|
logDirect(BaritoneAPI.getSettings().logAsToast.value, components);
|
||||||
component.appendSibling(getPrefix());
|
}
|
||||||
component.appendSibling(new TextComponentString(" "));
|
|
||||||
Arrays.asList(components).forEach(component::appendSibling);
|
/**
|
||||||
Minecraft.getMinecraft().addScheduledTask(() -> BaritoneAPI.getSettings().logger.value.accept(component));
|
* Send a message to chat regardless of chatDebug (should only be used for critically important messages, or as a
|
||||||
|
* direct response to a chat command)
|
||||||
|
*
|
||||||
|
* @param message The message to display in chat
|
||||||
|
* @param color The color to print that message in
|
||||||
|
* @param logAsToast Whether to log as a toast notification
|
||||||
|
*/
|
||||||
|
default void logDirect(String message, TextFormatting color, boolean logAsToast) {
|
||||||
|
Stream.of(message.split("\n")).forEach(line -> {
|
||||||
|
ITextComponent component = new TextComponentString(line.replace("\t", " "));
|
||||||
|
component.getStyle().setColor(color);
|
||||||
|
logDirect(logAsToast, component);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -98,11 +164,18 @@ public interface Helper {
|
|||||||
* @param color The color to print that message in
|
* @param color The color to print that message in
|
||||||
*/
|
*/
|
||||||
default void logDirect(String message, TextFormatting color) {
|
default void logDirect(String message, TextFormatting color) {
|
||||||
Stream.of(message.split("\n")).forEach(line -> {
|
logDirect(message, color, BaritoneAPI.getSettings().logAsToast.value);
|
||||||
ITextComponent component = new TextComponentString(line.replace("\t", " "));
|
}
|
||||||
component.getStyle().setColor(color);
|
|
||||||
logDirect(component);
|
/**
|
||||||
});
|
* Send a message to chat regardless of chatDebug (should only be used for critically important messages, or as a
|
||||||
|
* direct response to a chat command)
|
||||||
|
*
|
||||||
|
* @param message The message to display in chat
|
||||||
|
* @param logAsToast Whether to log as a toast notification
|
||||||
|
*/
|
||||||
|
default void logDirect(String message, boolean logAsToast) {
|
||||||
|
logDirect(message, TextFormatting.GRAY, logAsToast);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -112,6 +185,6 @@ public interface Helper {
|
|||||||
* @param message The message to display in chat
|
* @param message The message to display in chat
|
||||||
*/
|
*/
|
||||||
default void logDirect(String message) {
|
default void logDirect(String message) {
|
||||||
logDirect(message, TextFormatting.GRAY);
|
logDirect(message, BaritoneAPI.getSettings().logAsToast.value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
86
src/api/java/baritone/api/utils/gui/BaritoneToast.java
Normal file
86
src/api/java/baritone/api/utils/gui/BaritoneToast.java
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of Baritone.
|
||||||
|
*
|
||||||
|
* Baritone is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Baritone is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package baritone.api.utils.gui;
|
||||||
|
|
||||||
|
import net.minecraft.client.gui.toasts.GuiToast;
|
||||||
|
import net.minecraft.client.gui.toasts.IToast;
|
||||||
|
import net.minecraft.client.renderer.GlStateManager;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraft.util.text.ITextComponent;
|
||||||
|
|
||||||
|
public class BaritoneToast implements IToast
|
||||||
|
{
|
||||||
|
private String title;
|
||||||
|
private String subtitle;
|
||||||
|
private long firstDrawTime;
|
||||||
|
private boolean newDisplay;
|
||||||
|
private long totalShowTime;
|
||||||
|
|
||||||
|
public BaritoneToast(ITextComponent titleComponent, ITextComponent subtitleComponent, long totalShowTime)
|
||||||
|
{
|
||||||
|
this.title = titleComponent.getFormattedText();
|
||||||
|
this.subtitle = subtitleComponent == null ? null : subtitleComponent.getFormattedText();
|
||||||
|
this.totalShowTime = totalShowTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Visibility draw(GuiToast toastGui, long delta)
|
||||||
|
{
|
||||||
|
if (this.newDisplay)
|
||||||
|
{
|
||||||
|
this.firstDrawTime = delta;
|
||||||
|
this.newDisplay = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
toastGui.getMinecraft().getTextureManager().bindTexture(new ResourceLocation("textures/gui/toasts.png"));
|
||||||
|
GlStateManager.color(1.0F, 1.0F, 1.0F, 255.0f);
|
||||||
|
toastGui.drawTexturedModalRect(0, 0, 0, 32, 160, 32);
|
||||||
|
|
||||||
|
if (this.subtitle == null)
|
||||||
|
{
|
||||||
|
toastGui.getMinecraft().fontRenderer.drawString(this.title, 18, 12, -11534256);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
toastGui.getMinecraft().fontRenderer.drawString(this.title, 18, 7, -11534256);
|
||||||
|
toastGui.getMinecraft().fontRenderer.drawString(this.subtitle, 18, 18, -16777216);
|
||||||
|
}
|
||||||
|
|
||||||
|
return delta - this.firstDrawTime < totalShowTime ? Visibility.SHOW : Visibility.HIDE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDisplayedText(ITextComponent titleComponent, ITextComponent subtitleComponent)
|
||||||
|
{
|
||||||
|
this.title = titleComponent.getFormattedText();
|
||||||
|
this.subtitle = subtitleComponent == null ? null : subtitleComponent.getFormattedText();
|
||||||
|
this.newDisplay = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void addOrUpdate(GuiToast toast, ITextComponent title, ITextComponent subtitle, long totalShowTime)
|
||||||
|
{
|
||||||
|
BaritoneToast baritonetoast = toast.getToast(BaritoneToast.class, new Object());
|
||||||
|
|
||||||
|
if (baritonetoast == null)
|
||||||
|
{
|
||||||
|
toast.add(new BaritoneToast(title, subtitle, totalShowTime));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
baritonetoast.setDisplayedText(title, subtitle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user