ConfigScreen.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. package me.shedaniel.rei.gui.config;
  2. import com.google.common.collect.Lists;
  3. import me.shedaniel.rei.RoughlyEnoughItemsCore;
  4. import me.shedaniel.rei.client.ClientHelper;
  5. import me.shedaniel.rei.client.ScreenHelper;
  6. import me.shedaniel.rei.client.ItemListOrdering;
  7. import me.shedaniel.rei.gui.widget.QueuedTooltip;
  8. import me.shedaniel.rei.gui.widget.TextFieldWidget;
  9. import net.minecraft.client.MinecraftClient;
  10. import net.minecraft.client.gui.InputListener;
  11. import net.minecraft.client.gui.Screen;
  12. import net.minecraft.client.gui.widget.ButtonWidget;
  13. import net.minecraft.client.render.GuiLighting;
  14. import net.minecraft.client.resource.language.I18n;
  15. import net.minecraft.text.TranslatableTextComponent;
  16. import java.awt.*;
  17. import java.io.IOException;
  18. import java.util.Arrays;
  19. import java.util.List;
  20. public class ConfigScreen extends Screen {
  21. private final List<QueuedTooltip> tooltipList;
  22. private Screen parent;
  23. private ConfigEntryListWidget entryListWidget;
  24. public ConfigScreen(Screen parent) {
  25. this.parent = parent;
  26. this.tooltipList = Lists.newArrayList();
  27. }
  28. @Override
  29. public boolean keyPressed(int int_1, int int_2, int int_3) {
  30. if (int_1 == 256 && this.doesEscapeKeyClose()) {
  31. MinecraftClient.getInstance().openScreen(parent);
  32. ScreenHelper.getLastOverlay().onInitialized();
  33. return true;
  34. } else {
  35. return super.keyPressed(int_1, int_2, int_3);
  36. }
  37. }
  38. @Override
  39. protected void onInitialized() {
  40. listeners.add(entryListWidget = new ConfigEntryListWidget(client, screenWidth, screenHeight, 32, screenHeight - 32, 24));
  41. entryListWidget.configClearEntries();
  42. entryListWidget.configAddEntry(new ConfigEntry.CategoryTitleConfigEntry(new TranslatableTextComponent("text.rei.config.general")));
  43. entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.cheating"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() {
  44. @Override
  45. public boolean onPressed(int button, double mouseX, double mouseY) {
  46. if (button == 0)
  47. ClientHelper.setCheating(!ClientHelper.isCheating());
  48. return true;
  49. }
  50. @Override
  51. public String getText() {
  52. return getTrueFalseText(ClientHelper.isCheating());
  53. }
  54. }));
  55. entryListWidget.configAddEntry(new ConfigEntry.CategoryTitleConfigEntry(new TranslatableTextComponent("text.rei.config.appearance")));
  56. entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.side_search_box"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() {
  57. @Override
  58. public boolean onPressed(int button, double mouseX, double mouseY) {
  59. if (button == 0)
  60. RoughlyEnoughItemsCore.getConfigManager().getConfig().sideSearchField = !RoughlyEnoughItemsCore.getConfigManager().getConfig().sideSearchField;
  61. try {
  62. RoughlyEnoughItemsCore.getConfigManager().saveConfig();
  63. } catch (IOException e) {
  64. e.printStackTrace();
  65. return false;
  66. }
  67. return true;
  68. }
  69. @Override
  70. public String getText() {
  71. return getTrueFalseText(RoughlyEnoughItemsCore.getConfigManager().getConfig().sideSearchField);
  72. }
  73. }));
  74. entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.list_ordering"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() {
  75. @Override
  76. public boolean onPressed(int button, double mouseX, double mouseY) {
  77. int index = Arrays.asList(ItemListOrdering.values()).indexOf(RoughlyEnoughItemsCore.getConfigManager().getConfig().itemListOrdering) + 1;
  78. if (index >= ItemListOrdering.values().length) {
  79. index = 0;
  80. RoughlyEnoughItemsCore.getConfigManager().getConfig().isAscending = !RoughlyEnoughItemsCore.getConfigManager().getConfig().isAscending;
  81. }
  82. RoughlyEnoughItemsCore.getConfigManager().getConfig().itemListOrdering = ItemListOrdering.values()[index];
  83. try {
  84. RoughlyEnoughItemsCore.getConfigManager().saveConfig();
  85. } catch (IOException e) {
  86. e.printStackTrace();
  87. return false;
  88. }
  89. return true;
  90. }
  91. @Override
  92. public String getText() {
  93. return I18n.translate("text.rei.config.list_ordering_button", I18n.translate(RoughlyEnoughItemsCore.getConfigManager().getConfig().itemListOrdering.getNameTranslationKey()), I18n.translate(RoughlyEnoughItemsCore.getConfigManager().getConfig().isAscending ? "ordering.rei.ascending" : "ordering.rei.descending"));
  94. }
  95. }));
  96. entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.mirror_rei"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() {
  97. @Override
  98. public boolean onPressed(int button, double mouseX, double mouseY) {
  99. if (button == 0)
  100. RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel = !RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel;
  101. try {
  102. RoughlyEnoughItemsCore.getConfigManager().saveConfig();
  103. } catch (IOException e) {
  104. e.printStackTrace();
  105. return false;
  106. }
  107. return true;
  108. }
  109. @Override
  110. public String getText() {
  111. return getTrueFalseText(RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel);
  112. }
  113. }));
  114. entryListWidget.configAddEntry(new ConfigEntry.CategoryTitleConfigEntry(new TranslatableTextComponent("text.rei.config.modules")));
  115. entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.enable_craftable_only"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() {
  116. @Override
  117. public boolean onPressed(int button, double mouseX, double mouseY) {
  118. if (button == 0)
  119. RoughlyEnoughItemsCore.getConfigManager().getConfig().enableCraftableOnlyButton = !RoughlyEnoughItemsCore.getConfigManager().getConfig().enableCraftableOnlyButton;
  120. try {
  121. RoughlyEnoughItemsCore.getConfigManager().saveConfig();
  122. } catch (IOException e) {
  123. e.printStackTrace();
  124. return false;
  125. }
  126. return true;
  127. }
  128. @Override
  129. public String getText() {
  130. return getTrueFalseText(RoughlyEnoughItemsCore.getConfigManager().getConfig().enableCraftableOnlyButton);
  131. }
  132. }));
  133. entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.load_default_plugin"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() {
  134. @Override
  135. public boolean onPressed(int button, double mouseX, double mouseY) {
  136. if (button == 0)
  137. RoughlyEnoughItemsCore.getConfigManager().getConfig().loadDefaultPlugin = !RoughlyEnoughItemsCore.getConfigManager().getConfig().loadDefaultPlugin;
  138. try {
  139. RoughlyEnoughItemsCore.getConfigManager().saveConfig();
  140. } catch (IOException e) {
  141. e.printStackTrace();
  142. return false;
  143. }
  144. return true;
  145. }
  146. @Override
  147. public String getText() {
  148. return getTrueFalseText(RoughlyEnoughItemsCore.getConfigManager().getConfig().loadDefaultPlugin);
  149. }
  150. @Override
  151. public void draw(me.shedaniel.rei.gui.widget.ButtonWidget button, Point mouse, float delta) {
  152. button.draw(mouse.x, mouse.y, delta);
  153. if (button.isHighlighted(mouse))
  154. tooltipList.add(QueuedTooltip.create(I18n.translate("text.rei.config.load_default_plugin.restart_tooltip").split("\n")));
  155. }
  156. }));
  157. entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.disable_credits_button"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() {
  158. @Override
  159. public boolean onPressed(int button, double mouseX, double mouseY) {
  160. if (button == 0)
  161. RoughlyEnoughItemsCore.getConfigManager().getConfig().disableCreditsButton = !RoughlyEnoughItemsCore.getConfigManager().getConfig().disableCreditsButton;
  162. try {
  163. RoughlyEnoughItemsCore.getConfigManager().saveConfig();
  164. } catch (IOException e) {
  165. e.printStackTrace();
  166. return false;
  167. }
  168. return true;
  169. }
  170. @Override
  171. public String getText() {
  172. return getTrueFalseText(RoughlyEnoughItemsCore.getConfigManager().getConfig().disableCreditsButton);
  173. }
  174. }));
  175. entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.enable_util_buttons"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() {
  176. @Override
  177. public boolean onPressed(int button, double mouseX, double mouseY) {
  178. if (button == 0)
  179. RoughlyEnoughItemsCore.getConfigManager().getConfig().showUtilsButtons = !RoughlyEnoughItemsCore.getConfigManager().getConfig().showUtilsButtons;
  180. try {
  181. RoughlyEnoughItemsCore.getConfigManager().saveConfig();
  182. } catch (IOException e) {
  183. e.printStackTrace();
  184. return false;
  185. }
  186. return true;
  187. }
  188. @Override
  189. public String getText() {
  190. return getTrueFalseText(RoughlyEnoughItemsCore.getConfigManager().getConfig().showUtilsButtons);
  191. }
  192. }));
  193. entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.disable_recipe_book"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() {
  194. @Override
  195. public boolean onPressed(int button, double mouseX, double mouseY) {
  196. if (button == 0)
  197. RoughlyEnoughItemsCore.getConfigManager().getConfig().disableRecipeBook = !RoughlyEnoughItemsCore.getConfigManager().getConfig().disableRecipeBook;
  198. try {
  199. RoughlyEnoughItemsCore.getConfigManager().saveConfig();
  200. } catch (IOException e) {
  201. e.printStackTrace();
  202. return false;
  203. }
  204. return true;
  205. }
  206. @Override
  207. public String getText() {
  208. return getTrueFalseText(RoughlyEnoughItemsCore.getConfigManager().getConfig().disableRecipeBook);
  209. }
  210. }));
  211. entryListWidget.configAddEntry(new ConfigEntry.CategoryTitleConfigEntry(new TranslatableTextComponent("text.rei.config.advanced")));
  212. entryListWidget.configAddEntry(new ConfigEntry.TextFieldConfigEntry(new TranslatableTextComponent("text.rei.give_command"), new ConfigEntry.TextFieldConfigEntry.ConfigEntryTextFieldProvider() {
  213. @Override
  214. public void onInitWidget(TextFieldWidget widget) {
  215. widget.setMaxLength(99999);
  216. widget.setText(RoughlyEnoughItemsCore.getConfigManager().getConfig().giveCommand);
  217. widget.setSuggestion(I18n.translate("text.rei.give_command.suggestion"));
  218. }
  219. @Override
  220. public void onUpdateText(TextFieldWidget button, String text) {
  221. RoughlyEnoughItemsCore.getConfigManager().getConfig().giveCommand = text;
  222. try {
  223. RoughlyEnoughItemsCore.getConfigManager().saveConfig();
  224. } catch (IOException e) {
  225. e.printStackTrace();
  226. }
  227. }
  228. @Override
  229. public void draw(TextFieldWidget widget, Point mouse, float delta) {
  230. widget.draw(mouse.x, mouse.y, delta);
  231. if (widget.isHighlighted(mouse))
  232. tooltipList.add(QueuedTooltip.create(I18n.translate("text.rei.give_command.tooltip").split("\n")));
  233. }
  234. }));
  235. entryListWidget.configAddEntry(new ConfigEntry.TextFieldConfigEntry(new TranslatableTextComponent("text.rei.gamemode_command"), new ConfigEntry.TextFieldConfigEntry.ConfigEntryTextFieldProvider() {
  236. @Override
  237. public void onInitWidget(TextFieldWidget widget) {
  238. widget.setMaxLength(99999);
  239. widget.setText(RoughlyEnoughItemsCore.getConfigManager().getConfig().gamemodeCommand);
  240. }
  241. @Override
  242. public void onUpdateText(TextFieldWidget button, String text) {
  243. RoughlyEnoughItemsCore.getConfigManager().getConfig().gamemodeCommand = text;
  244. try {
  245. RoughlyEnoughItemsCore.getConfigManager().saveConfig();
  246. } catch (IOException e) {
  247. e.printStackTrace();
  248. }
  249. }
  250. }));
  251. entryListWidget.configAddEntry(new ConfigEntry.TextFieldConfigEntry(new TranslatableTextComponent("text.rei.weather_command"), new ConfigEntry.TextFieldConfigEntry.ConfigEntryTextFieldProvider() {
  252. @Override
  253. public void onInitWidget(TextFieldWidget widget) {
  254. widget.setMaxLength(99999);
  255. widget.setText(RoughlyEnoughItemsCore.getConfigManager().getConfig().weatherCommand);
  256. }
  257. @Override
  258. public void onUpdateText(TextFieldWidget button, String text) {
  259. RoughlyEnoughItemsCore.getConfigManager().getConfig().weatherCommand = text;
  260. try {
  261. RoughlyEnoughItemsCore.getConfigManager().saveConfig();
  262. } catch (IOException e) {
  263. e.printStackTrace();
  264. }
  265. }
  266. }));
  267. entryListWidget.configAddEntry(new ConfigEntry.TextFieldConfigEntry(new TranslatableTextComponent("text.rei.config.max_recipes_per_page"), new ConfigEntry.TextFieldConfigEntry.ConfigEntryTextFieldProvider() {
  268. @Override
  269. public void onInitWidget(TextFieldWidget widget) {
  270. widget.setMaxLength(2);
  271. widget.setText(RoughlyEnoughItemsCore.getConfigManager().getConfig().maxRecipePerPage + "");
  272. widget.stripInvaild = s -> {
  273. StringBuilder stringBuilder_1 = new StringBuilder();
  274. char[] var2 = s.toCharArray();
  275. int var3 = var2.length;
  276. for(int var4 = 0; var4 < var3; ++var4) {
  277. char char_1 = var2[var4];
  278. if (Character.isDigit(char_1))
  279. stringBuilder_1.append(char_1);
  280. }
  281. return stringBuilder_1.toString();
  282. };
  283. }
  284. @Override
  285. public void onUpdateText(TextFieldWidget button, String text) {
  286. if (isInvaildNumber(text))
  287. try {
  288. RoughlyEnoughItemsCore.getConfigManager().getConfig().maxRecipePerPage = Integer.valueOf(text);
  289. RoughlyEnoughItemsCore.getConfigManager().saveConfig();
  290. } catch (Exception e) {
  291. }
  292. }
  293. @Override
  294. public void draw(TextFieldWidget widget, Point mouse, float delta) {
  295. widget.setEditableColor(isInvaildNumber(widget.getText()) ? -1 : Color.RED.getRGB());
  296. widget.draw(mouse.x, mouse.y, delta);
  297. }
  298. private boolean isInvaildNumber(String text) {
  299. try {
  300. int page = Integer.valueOf(text);
  301. return page >= 2 && page <= 99;
  302. } catch (Exception e) {
  303. }
  304. return false;
  305. }
  306. }));
  307. addButton(new ButtonWidget(screenWidth / 2 - 100, screenHeight - 26, I18n.translate("gui.done")) {
  308. @Override
  309. public void onPressed(double double_1, double double_2) {
  310. try {
  311. RoughlyEnoughItemsCore.getConfigManager().saveConfig();
  312. } catch (IOException e) {
  313. e.printStackTrace();
  314. }
  315. ConfigScreen.this.client.openScreen(parent);
  316. ScreenHelper.getLastOverlay().onInitialized();
  317. }
  318. });
  319. super.onInitialized();
  320. }
  321. private String getTrueFalseText(boolean showCraftableOnlyButton) {
  322. return String.format("%s%b", showCraftableOnlyButton ? "§a" : "§c", showCraftableOnlyButton);
  323. }
  324. @Override
  325. public void draw(int int_1, int int_2, float float_1) {
  326. this.drawTextureBackground(0);
  327. this.entryListWidget.draw(int_1, int_2, float_1);
  328. this.drawStringCentered(this.fontRenderer, I18n.translate("text.rei.config"), this.screenWidth / 2, 16, 16777215);
  329. super.draw(int_1, int_2, float_1);
  330. GuiLighting.disable();
  331. tooltipList.forEach(queuedTooltip -> drawTooltip(queuedTooltip.getText(), queuedTooltip.getLocation().x, queuedTooltip.getLocation().y));
  332. tooltipList.clear();
  333. GuiLighting.disable();
  334. }
  335. @Override
  336. public boolean isPauseScreen() {
  337. return false;
  338. }
  339. @Override
  340. public InputListener getFocused() {
  341. return entryListWidget;
  342. }
  343. }