Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file modified gradlew
100644 → 100755
Empty file.
8 changes: 6 additions & 2 deletions src/main/java/carbonconfiglib/gui/config/ConfigElement.java
Original file line number Diff line number Diff line change
Expand Up @@ -197,8 +197,12 @@ public void render(int x, int top, int left, int width, int height, int mouseX,
IChatComponent comp = new ChatComponentText(indexOf()+":");
renderText(comp, maxX-115, top-1, 105, height, GuiAlign.RIGHT, -1);
}
if(value != null && mouseY >= top && mouseY <= top + height && mouseX >= left && mouseX <= maxX-2 && owner.isInsideList(mouseX, mouseY)) {
owner.addTooltips(value.getTooltip());
if (mouseY >= top && mouseY <= top + height && mouseX >= left && mouseX <= maxX-2 && owner.isInsideList(mouseX, mouseY)) {
if (value != null) {
owner.addTooltips(value.getTooltip());
} else if (this instanceof ArrayElement && ((ArrayElement) this).node != null) {
owner.addTooltips(((ArrayElement) this).node.getTooltip());
}
}
if(isArray()) {
if(setReset.isHovered() && owner.isInsideList(mouseX, mouseY)) {
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/carbonconfiglib/gui/screen/ArrayScreen.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
import carbonconfiglib.utils.structure.IStructuredData.StructureType;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiYesNo;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.ChatStyle;
Expand Down Expand Up @@ -95,7 +94,7 @@ private void apply(GuiButton button) {

private void goBack(GuiButton button) {
if(array.isChanged()) {
mc.displayGuiScreen(new GuiYesNo((T, V) -> {
mc.displayGuiScreen(new GuiMultiLineYesNo((T, V) -> {
if(T) array.setPrevious();
mc.displayGuiScreen(T ? prev : this);
}, new ChatComponentTranslation("gui.carbonconfig.warn.changed").getFormattedText(), new ChatComponentTranslation("gui.carbonconfig.warn.changed.desc").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GRAY)).getFormattedText(), 0));
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/carbonconfiglib/gui/screen/CompoundScreen.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
import carbonconfiglib.gui.widgets.CarbonButton;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiYesNo;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.ChatStyle;
Expand Down Expand Up @@ -104,7 +103,7 @@ private void notifyClose() {

private void goBack(GuiButton button) {
if(compound.isChanged()) {
mc.displayGuiScreen(new GuiYesNo((T, K) -> {
mc.displayGuiScreen(new GuiMultiLineYesNo((T, K) -> {
if(T) notifyClose();
mc.displayGuiScreen(T ? prev : this);
}, new ChatComponentTranslation("gui.carbonconfig.warn.changed").getFormattedText(), new ChatComponentTranslation("gui.carbonconfig.warn.changed.desc").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GRAY)).getFormattedText(), 0));
Expand Down
5 changes: 2 additions & 3 deletions src/main/java/carbonconfiglib/gui/screen/ConfigScreen.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiYesNo;
import net.minecraft.client.gui.GuiYesNoCallback;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.ChatComponentText;
Expand Down Expand Up @@ -199,7 +198,7 @@ private void leave() {
if(prev != this) {
GuiScreen toOpen = prev.parent;
if(node.isRoot() && prev.isChanged()) {
mc.displayGuiScreen(new GuiYesNo((T, K) -> {
mc.displayGuiScreen(new GuiMultiLineYesNo((T, K) -> {
mc.displayGuiScreen(T ? toOpen : ConfigScreen.this);
}, new ChatComponentTranslation("gui.carbonconfig.warn.changed").getFormattedText(), new ChatComponentTranslation("gui.carbonconfig.warn.changed.desc").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GRAY)).getFormattedText(), 0));
return;
Expand Down Expand Up @@ -306,7 +305,7 @@ protected void onSearchChange(CarbonEditBox box, String value) {

private void goBack(GuiButton button) {
if(node.isRoot() && isChanged()) {
mc.displayGuiScreen(new GuiYesNo(new GuiYesNoCallback() {
mc.displayGuiScreen(new GuiMultiLineYesNo(new GuiYesNoCallback() {
@Override
public void confirmClicked(boolean result, int p_73878_2_) {
mc.displayGuiScreen(result ? parent : ConfigScreen.this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import carbonconfiglib.utils.ParseResult;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiYesNo;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.ChatStyle;
Expand Down Expand Up @@ -100,7 +99,7 @@ private void save(GuiButton button) {

private void cancel(GuiButton button) {
if(value.isChanged()) {
mc.displayGuiScreen(new GuiYesNo((T, k) -> {
mc.displayGuiScreen(new GuiMultiLineYesNo((T, k) -> {
if(T) value.setPrevious();
mc.displayGuiScreen(T ? parent : this);
}, new ChatComponentTranslation("gui.carbonconfig.warn.changed").getFormattedText(), new ChatComponentTranslation("gui.carbonconfig.warn.changed.desc").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GRAY)).getFormattedText(), 0));
Expand Down
62 changes: 62 additions & 0 deletions src/main/java/carbonconfiglib/gui/screen/FormattingUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package carbonconfiglib.gui.screen;

import net.minecraft.client.gui.FontRenderer;
import net.minecraft.util.IChatComponent;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class FormattingUtil {
private static boolean isFormatColor(char c) {
return c >= '0' && c <= '9' || c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F';
}

private static boolean isFormatSpecialNoReset(char c) {
return c >= 'k' && c <= 'o' || c >= 'K' && c <= 'O';
}

private static String getFormatFromString(String s) {
String s1 = "";
int i = -1;
int j = s.length();

while ((i = s.indexOf(167, i + 1)) != -1)
{
if (i < j - 1)
{
char c0 = s.charAt(i + 1);

if (isFormatColor(c0))
{
s1 = "\u00a7" + c0;
}
else if (isFormatSpecialNoReset(c0))
{
s1 = s1 + "\u00a7" + c0;
}
}
}

return s1;
}

@SuppressWarnings("unchecked")
public static String[] listFormattedStringToWidthRespectingNewlines(FontRenderer fontRenderer, String s, int width) {
List<String> result = new ArrayList<>();
String[] lines = s.split("\\\\n");
String formatting = getFormatFromString(s);
for (String line : lines) {
if (width > 0) {
result.addAll(fontRenderer.listFormattedStringToWidth(formatting + line, width));
} else {
result.add(formatting + line);
}
}
return result.toArray(new String[0]);
}

public static String[] listFormattedStringToWidthRespectingNewlines(FontRenderer fontRenderer, String s) {
return listFormattedStringToWidthRespectingNewlines(fontRenderer, s, -1);
}
}
35 changes: 35 additions & 0 deletions src/main/java/carbonconfiglib/gui/screen/GuiMultiLineYesNo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package carbonconfiglib.gui.screen;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.gui.GuiYesNo;
import net.minecraft.client.gui.GuiYesNoCallback;

@SideOnly(Side.CLIENT)
public class GuiMultiLineYesNo extends GuiYesNo {

private final String message;

public GuiMultiLineYesNo(GuiYesNoCallback callback, String title, String message, int id) {
super(callback, title, "", id);
this.message = message;
}

public GuiMultiLineYesNo(GuiYesNoCallback parent, String title, String message, String confirm, String cancel, int id) {
super(parent, title, "", confirm, cancel, id);
this.message = message;
}

@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
super.drawScreen(mouseX, mouseY, partialTicks);

int lineHeight = this.fontRendererObj.FONT_HEIGHT + 2;
int startY = 90;
String[] messages = FormattingUtil.listFormattedStringToWidthRespectingNewlines(this.fontRendererObj, message, this.width - 50);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

throw that line into the init function, font renderer and width are accessible once the init is called.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried, width is 0


for (int i = 0; i < messages.length; ++i) {
this.drawCenteredString(this.fontRendererObj, messages[i], this.width / 2, startY + (i * lineHeight), 16777215);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import carbonconfiglib.gui.widgets.CarbonButton;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiYesNo;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatComponentTranslation;
Expand Down Expand Up @@ -135,7 +134,7 @@ private void save(GuiButton button) {

private void cancel(GuiButton button) {
if(node.isChanged() && !dontWarn) {
mc.displayGuiScreen(new GuiYesNo((T, V) -> {
mc.displayGuiScreen(new GuiMultiLineYesNo((T, V) -> {
if(T) abort();
mc.displayGuiScreen(T ? parent : this);
}, new ChatComponentTranslation("gui.carbonconfig.warn.changed").getFormattedText(), new ChatComponentTranslation("gui.carbonconfig.warn.changed.desc").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GRAY)).getFormattedText(), 0));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package carbonconfiglib.gui.screen;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;

Expand Down Expand Up @@ -52,7 +54,11 @@ public MultiChoiceScreen(Consumer<Result> callback, IChatComponent title, IChatC
@SuppressWarnings("unchecked")
public void initGui() {
super.initGui();
output = fontRendererObj.listFormattedStringToWidth(message.getFormattedText(), width-50);

output = new ArrayList<>();
String[] lines = FormattingUtil.listFormattedStringToWidthRespectingNewlines(this.fontRendererObj, message.getFormattedText(), width-50);
output.addAll(Arrays.asList(lines));

this.addButtons(MathHelper.clamp_int(this.messageTop() + this.messageHeight() + 20, this.height / 6 + 96, this.height - 24));
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/assets/carbonconfig/lang/en_US.lang
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ gui.carbonconfig.reset=Reset All
gui.carbonconfig.warn.changed=You have changed the value!
gui.carbonconfig.warn.changed.desc=Proceeding this will cause changes to be lost!\n\nDo you want to Proceed?
gui.carbonconfig.reset_all.title=Reset Everything?
gui.carbonconfig.reset_all.message=Do you want to do any Changes done?\nOr do you want to default everything?
gui.carbonconfig.reset_all.message=Do you want to undo any Changes done?\nOr do you want to default everything?
gui.carbonconfig.reset_all.default=Set all Default
gui.carbonconfig.reset_all.reset=Undo Changes
gui.carbonconfig.reset_all.cancel=Cancel
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/assets/carbonconfig/lang/ru_RU.lang
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ gui.carbonconfig.restart.message=Вы изменили параметр, кот
gui.carbonconfig.ok=Понятно
gui.carbonconfig.reset=Общий сброс
gui.carbonconfig.warn.changed=Вы изменили параметры!
gui.carbonconfig.warn.changed.desc=Это приведёт к потере изменений!\n\nВы хотите продолжить?
gui.carbonconfig.warn.changed.desc=Это приведёт к потере изменений!\nВы хотите продолжить?
gui.carbonconfig.reset_all.title=Сбросить всё?
gui.carbonconfig.reset_all.message=Вы хотите сбросить определённые изменения или абсолютно все?
gui.carbonconfig.reset_all.default=Задать всё по умолчанию
Expand Down