Skip to content

Commit a764170

Browse files
committed
style: change color branch, add settings for branch and add background
1 parent 4830388 commit a764170

6 files changed

Lines changed: 77 additions & 16 deletions

File tree

src/main/java/zadudoder/spmhelper/ModMenuIntegration.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,6 @@ public ConfigScreenFactory<?> getModConfigScreenFactory() {
4444
.setSaveConsumer(newValue -> config.enableMenuButton = newValue)
4545
.build());
4646

47-
general.addEntry(entryBuilder.startBooleanToggle(Text.translatable("text.spmhelper.option.enableSPmNav"), config.enableSPmNav)
48-
.setSaveConsumer(newValue -> config.enableSPmNav = newValue)
49-
.build());
50-
5147
general.addEntry(entryBuilder.startEnumSelector(Text.translatable("text.spmhelper.option.defaultScreen"), ScreenType.class, config.defaultScreen)
5248
.setSaveConsumer(newValue -> config.defaultScreen = newValue)
5349
.setEnumNameProvider(value -> {
@@ -59,6 +55,21 @@ public ConfigScreenFactory<?> getModConfigScreenFactory() {
5955
general.addEntry(entryBuilder.startBooleanToggle(Text.translatable("text.spmhelper.option.numberOfCardInComment"), config.numberOfCardInComment)
6056
.setSaveConsumer(newValue -> config.numberOfCardInComment = newValue)
6157
.build());
58+
59+
general.addEntry(entryBuilder.startBooleanToggle(Text.translatable("text.spmhelper.option.enableSPmHelperNav"), config.enableSPmNav)
60+
.setSaveConsumer(newValue -> config.enableSPmNav = newValue)
61+
.build());
62+
63+
general.addEntry(entryBuilder.startIntSlider(Text.translatable("text.spmhelper.option.SPmHelperNavX"), config.SPmNavX, 1, 100)
64+
.setTextGetter(value -> Text.literal(value + " %"))
65+
.setSaveConsumer(newValue -> config.SPmNavX = newValue)
66+
.build());
67+
68+
general.addEntry(entryBuilder.startIntSlider(Text.translatable("text.spmhelper.option.SPmHelperNavY"), config.SPmNavY, 1, 100)
69+
.setTextGetter(value -> Text.literal(value + " %"))
70+
.setSaveConsumer(newValue -> config.SPmNavY = newValue)
71+
.build());
72+
6273
return builder.build();
6374
};
6475
}

src/main/java/zadudoder/spmhelper/config/SPmHelperConfig.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ public class SPmHelperConfig implements ConfigData {
1616
public Boolean enableMenuButton = true;
1717
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
1818
public ScreenType defaultScreen = ScreenType.MAIN;
19-
public Boolean enableSPmNav = true;
2019
public Boolean paymentWithNick = false; // true - ник, false - по номеру
2120
public Boolean numberOfCardInComment = false; // true - включено, false - выключено в переводе будет указывать карту куда вы переводите
22-
21+
public Boolean enableSPmNav = true;
22+
public int SPmNavX = 50;
23+
public int SPmNavY = 1;
2324
String API_TOKEN = "";
2425
Map<String, Card> cards = new HashMap<>();
2526
String mainCardName = "";

src/main/java/zadudoder/spmhelper/mixin/GameHudMixin.java

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import net.minecraft.client.font.TextRenderer;
66
import net.minecraft.client.gui.DrawContext;
77
import net.minecraft.client.gui.hud.InGameHud;
8+
import net.minecraft.client.network.ServerInfo;
89
import net.minecraft.client.render.RenderTickCounter;
910
import net.minecraft.client.util.math.MatrixStack;
1011
import net.minecraft.text.Text;
@@ -20,6 +21,8 @@
2021
import zadudoder.spmhelper.utils.types.BranchCoords;
2122
import zadudoder.spmhelper.utils.types.HubBranch;
2223

24+
import static zadudoder.spmhelper.Screen.Calls.CallsScreen.ALLOWED_SERVERS;
25+
2326
@Mixin(InGameHud.class)
2427
public abstract class GameHudMixin {
2528
@Final
@@ -30,19 +33,46 @@ public abstract class GameHudMixin {
3033
public void render(DrawContext context, RenderTickCounter tickCounter, CallbackInfo ci) {
3134
MatrixStack matrix = context.getMatrices();
3235
matrix.push();
33-
if (SPmHelperConfig.get().enableSPmNav && client.player.getWorld().getRegistryKey() == World.NETHER) {
36+
ServerInfo serverInfo = client.getCurrentServerEntry();
37+
38+
if (serverInfo != null && !client.options.hudHidden) {
39+
String serverAddress = serverInfo.address;
40+
String domain = serverAddress.split(":")[0];
41+
boolean onAllowedServer = ALLOWED_SERVERS.stream().anyMatch(allowed -> domain.equals(allowed) || domain.startsWith(allowed + ":"));
42+
43+
if (SPmHelperConfig.get().enableSPmNav && client.player.getWorld().getRegistryKey() == World.NETHER && onAllowedServer) {
3444
TextRenderer textRenderer = client.textRenderer;
3545
BranchCoords branchCoords = Misc.getBranch(client.player.getBlockPos());
3646
Text branchName = Text.translatable("text.spmhelper.branch_name." + branchCoords.branch.name().toLowerCase());
37-
if(branchCoords.branch == HubBranch.HUB){
38-
context.drawTextWithShadow(textRenderer, branchName, 2, 2, 0xFFFFFF);
47+
48+
int screenWidth = client.getWindow().getScaledWidth();
49+
int screenHeight = client.getWindow().getScaledHeight();
50+
51+
if(branchCoords.branch == HubBranch.HUB) {
52+
// Для HUB
53+
int X = (int) (screenWidth * (SPmHelperConfig.get().SPmNavX / 100.0) - textRenderer.getWidth(branchName) / 2);
54+
int Y = (int) (screenHeight * (SPmHelperConfig.get().SPmNavY / 100.0));
55+
X = Math.max(0, Math.min(X, screenWidth - textRenderer.getWidth(branchName) - 4));
56+
Y = Math.max(0, Math.min(Y, screenHeight - 10));
57+
58+
// Сначала фон, потом текст
59+
context.fill(X - 4, Y - 4, X + textRenderer.getWidth(branchName) + 4, Y + textRenderer.fontHeight + 2, 0x60000000);
60+
context.drawTextWithShadow(textRenderer, branchName, X, Y, 0xFFFFFF);
3961
} else {
40-
branchName = branchName.copy().append(": ");
41-
context.drawTextWithShadow(textRenderer, branchName, 2, 2, branchCoords.getBranchColor());
42-
context.drawTextWithShadow(textRenderer, String.valueOf(branchCoords.pos), 2 + textRenderer.getWidth(branchName), 2, 0xFFFFFF);
62+
// Для других веток
63+
Text fullText = branchName.copy().append(Text.literal(" | " + branchCoords.pos));
64+
int X = (int) (screenWidth * (SPmHelperConfig.get().SPmNavX / 100.0) - textRenderer.getWidth(fullText) / 2);
65+
int Y = (int) (screenHeight * (SPmHelperConfig.get().SPmNavY / 100.0));
66+
X = Math.max(0, Math.min(X, screenWidth - textRenderer.getWidth(fullText) - 4));
67+
Y = Math.max(0, Math.min(Y, screenHeight - 10));
68+
69+
// Сначала фон, потом текст
70+
context.fill(X - 4, Y - 4, X + textRenderer.getWidth(fullText) + 4, Y + textRenderer.fontHeight + 2, 0x60000000);
71+
context.drawTextWithShadow(textRenderer, fullText, X, Y, branchCoords.getBranchColor());
4372
}
4473
}
4574
matrix.pop();
75+
}
4676
}
4777
}
4878

src/main/java/zadudoder/spmhelper/utils/types/BranchCoords.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ public BranchCoords(){
1616
public int getBranchColor(){
1717
int color = 0xFFFFFF;
1818
switch (branch){
19-
case RED -> color = 0xFF0000;
20-
case BLUE -> color = 0x0000FF;
21-
case GREEN -> color = 0x00FF00;
22-
case YELLOW -> color = 0xFFFF00;
19+
case RED -> color = 0xFF3232;
20+
case BLUE -> color = 0x3232FF;
21+
case GREEN -> color = 0x32FF32;
22+
case YELLOW -> color = 0xFFFF32;
2323
}
2424
return color;
2525
}

src/main/resources/assets/spmhelper/lang/en_us.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,14 @@
77
"key.spmhelper.open_map_screen": "Open map",
88
"key.spmhelper.open_laws_screen": "Open laws",
99
"text.spmhelper.config.category": "Mod settings",
10+
1011
"text.spmhelper.option.enableMenuButton": "Enable SPmHelper button in main menu: ",
1112
"text.spmhelper.option.enableSPmNav" : "Enable SPmNav",
1213
"text.spmhelper.option.defaultScreen": "Select which screen the button will lead to: ",
1314
"text.spmhelper.option.numberOfCardInComment": "Show the card number in comments?",
15+
"text.spmhelper.option.SPmHelperNavX": "SPmHelperNav X-axis position (width):",
16+
"text.spmhelper.option.SPmHelperNavY": "SPmHelperNav Y-axis position (height):",
17+
1418
"text.spmhelper.screen_type.main": "Main screen",
1519
"text.spmhelper.screen_type.settings": "Settings",
1620
"text.spmhelper.screen_type.pay": "Payment",

src/main/resources/assets/spmhelper/lang/ru_ru.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,14 @@
77
"key.spmhelper.open_map_screen": "Открыть карту",
88
"key.spmhelper.open_laws_screen": "Открыть законы",
99
"text.spmhelper.config.category": "Настройки мода",
10+
1011
"text.spmhelper.option.enableMenuButton": "Включить кнопку SPmHelper в основном меню: ",
1112
"text.spmhelper.option.enableSPmNav": "Включить SPmNav",
1213
"text.spmhelper.option.defaultScreen": "На какой экран будет вести эта кнопка: ",
1314
"text.spmhelper.option.numberOfCardInComment": "Указывать номер карты куда вы переводите в комментарии?",
15+
"text.spmhelper.option.SPmHelperNavX": "Расположение SPmHelperNav по оси Х (ширина):",
16+
"text.spmhelper.option.SPmHelperNavY": "Расположение SPmHelperNav по оси Y (высота):",
17+
1418
"text.spmhelper.screen_type.main": "Главный экран",
1519
"text.spmhelper.screen_type.settings": "Настройки",
1620
"text.spmhelper.screen_type.pay": "Оплата",
@@ -19,6 +23,7 @@
1923
"text.spmhelper.screen_type.laws": "Законы",
2024
"text.spmhelper.current_screen": "SPmHelper — ",
2125
"text.spmhelper.select_screen": "Выбрать экран: %s",
26+
2227
"text.spmhelper.calls_calls_TextFieldWidget": "Введите комментарий для вызова:",
2328
"text.spmhelper.calls_detective": "Детектив",
2429
"text.spmhelper.calls_fsb": "ФСБ",
@@ -37,12 +42,15 @@
3742
"text.spmhelper.calls_render_SendCoordinatesAndPlayerPos": "Координаты: X:%d Y:%d Z:%d",
3843
"text.spmhelper.calls_render_Comment": "Комментарий:",
3944
"text.spmhelper.calls_render_EnterTextHere": "Введите сюда текст",
45+
4046
"text.spmhelper.laws_InDevelopment": "Канал с Законами, на данном этапе находится в разработке",
4147
"text.spmhelper.maps_InDevelopment": "Канал с Картой, на данном этапе находится в разработке",
48+
4249
"text.spmhelper.addCard_AcceptButton": "Принять",
4350
"text.spmhelper.addCard_AcceptFeedBack": "§a[SPmHelper]: Карта успешно привязана!",
4451
"text.spmhelper.addCard_DeclineButton": "Отклонить",
4552
"text.spmhelper.addCard_DoYouWantAdd": "Вы хотите добавить карту %s ?",
53+
4654
"text.spmhelper.pays_cardNumberButton": "Карта",
4755
"text.spmhelper.pays_nickNameButton": "Ник",
4856
"text.spmhelper.pays_SelectСard": "Выберите карту ⬇",
@@ -78,11 +86,13 @@
7886
"text.spmhelper.pays_toggleRecieverCards_LinkOneCard": "Привяжите хотя бы одну карту",
7987
"text.spmhelper.pays_toggleRecieverCards_PlayerNotEntry": "Вы не вписали ник игрока",
8088
"text.spmhelper.pays_toggleRecieverCards_PlayerNotOrNoCard": "Такого игрока не существует или он не имеет карт",
89+
8190
"text.spmhelper.mainMenu_ButtonLabels.payment": "Оплата",
8291
"text.spmhelper.mainMenu_ButtonLabels.map": "Карта",
8392
"text.spmhelper.mainMenu_ButtonLabels.settings": "Настройки",
8493
"text.spmhelper.mainMenu_ButtonLabels.calls": "Вызовы",
8594
"text.spmhelper.mainMenu_ButtonLabels.laws": "Законы",
95+
8696
"text.spmhelper.settings_SelectCard": "Выберите карту ⬇",
8797
"text.spmhelper.settings_Delete": "Удалить",
8898
"text.spmhelper.settings_DeleteSuccess": "✔ Карта успешно удалена!",
@@ -97,22 +107,27 @@
97107
"text.spmhelper.settings_SelectedForPayment": "\" выбрана для оплаты!",
98108
"text.spmhelper.settings_Login": "Авторизоваться",
99109
"text.spmhelper.settings_NoLinkedCard": "Нет привязанных карт!",
110+
100111
"text.spmhelper.SPmHAPI_GettingLink": "§a[SPmHelper]: Получение ссылки на авторизации",
101112
"text.spmhelper.SPmHAPI_ErrorConnectingServer": "§c[SPmHelper]: Ошибка подключения к серверу",
102113
"text.spmhelper.SPmHAPI_ErrorConnectingWebSocket": "§c[SPmHelper]: Ошибка подключения к WebSocket",
103114
"text.spmhelper.SPmHAPI_ErrorServer": "§c[SPmHelper]: Ошибка сервера",
115+
104116
"text.spmhelper.WebSocketClient_OpenURL": "§a[SPmHelper]: Открытие ссылки на авторизацию",
105117
"text.spmhelper.WebSocketClient_WaitingAuth": "§a[SPmHelper]: Ожидание авторизации",
106118
"text.spmhelper.WebSocketClient_AuthorizationCancelledByYou": "§c[SPmHelper]: Авторизация отменена вами",
107119
"text.spmhelper.WebSocketClient_FailedToGetLink": "§c[SPmHelper]: Не удалось получить ссылку на авторизацию",
108120
"text.spmhelper.WebSocketClient_TokenWritten": "§a[SPmHelper]: Вы успешно авторизованы.",
121+
109122
"text.spmhelper.updateMod_message_firstPart": "[SPmHelper]: Доступно обновление! Ваша версия: ",
110123
"text.spmhelper.updateMod_message_betweenPart": ". Доступна новая: ",
111124
"text.spmhelper.updateMod_message_lastPart": ". Нажмите на текст, чтобы перейти на Modrinth. ",
125+
112126
"text.spmhelper.auth_FeedBackMessage": "§a[SPmHelper]: Токен активен! Новая авторизация не нужна.",
113127
"text.spmhelper.status_FeedBackMessageCase200": "§a[SPmHelper]: Токен работает",
114128
"text.spmhelper.status_FeedBackMessageCase401": "§c[SPmHelper]: Токен недействителен или отсутсвует",
115129
"text.spmhelper.status_FeedBackMessageCaseDefault": "§c[SPmHelper]: Ошибка API: ",
130+
116131
"text.spmhelper.branch_name.red": "Красная",
117132
"text.spmhelper.branch_name.blue": "Синяя",
118133
"text.spmhelper.branch_name.green": "Зелёная",

0 commit comments

Comments
 (0)