/* * Roughly Enough Items by Danielshe. * Licensed under the MIT License. */ package me.shedaniel.rei.impl; import me.shedaniel.rei.api.ConfigObject; import me.shedaniel.rei.gui.config.*; import me.zeroeightsix.fiber.exception.FiberException; import me.zeroeightsix.fiber.tree.ConfigNode; import me.zeroeightsix.fiber.tree.ConfigValue; import me.zeroeightsix.fiber.tree.Node; public class ConfigObjectImpl implements ConfigObject { public ConfigNode configNode = new ConfigNode(); private Node general = configNode.fork("!general"); private Node appearance = configNode.fork("appearance"); private Node modules = configNode.fork("modules"); private Node technical = configNode.fork("technical"); private ConfigValue cheating = ConfigValue.builder(Boolean.class) .withParent(general) .withDefaultValue(false) .withComment("Declares whether cheating mode is on.") .withName("cheating") .build(); private ConfigValue itemListOrdering = ConfigValue.builder(ItemListOrderingConfig.class) .withParent(appearance) .withDefaultValue(ItemListOrderingConfig.REGISTRY_ASCENDING) .withComment("The ordering of the items on the item panel.") .withName("itemListOrdering") .build(); private ConfigValue darkTheme = ConfigValue.builder(Boolean.class) .withParent(appearance) .withDefaultValue(false) .withComment("Declares the appearance of REI windows.") .withName("darkTheme") .build(); private ConfigValue recipeScreenType = ConfigValue.builder(RecipeScreenType.class) .withParent(appearance) .withDefaultValue(RecipeScreenType.UNSET) .withComment("The ordering of the items on the item panel.") .withName("recipeScreenType") .build(); private ConfigValue loadDefaultPlugin = ConfigValue.builder(Boolean.class) .withParent(technical) .withDefaultValue(true) .withComment("To disable REI's default plugin.\nDon't change this unless you understand what you are doing") .withName("loadDefaultPlugin") .build(); private ConfigValue sideSearchField = ConfigValue.builder(SearchFieldLocation.class) .withParent(appearance) .withDefaultValue(SearchFieldLocation.CENTER) .withComment("Declares the position of the search field.") .withName("searchFieldLocation") .build(); private ConfigValue mirrorItemPanel = ConfigValue.builder(Boolean.class) .withParent(appearance) .withDefaultValue(false) .withComment("Declares the position of the item list panel.") .withName("mirrorItemPanel") .build(); private ConfigValue enableCraftableOnlyButton = ConfigValue.builder(Boolean.class) .withParent(modules) .withDefaultValue(true) .withComment("Declares whether the craftable filter button is enabled.") .withName("enableCraftableOnlyButton") .build(); private ConfigValue gamemodeCommand = ConfigValue.builder(String.class) .withParent(technical) .withDefaultValue("/gamemode {gamemode}") .withComment("Declares the command used to change gamemode.") .withName("gamemodeCommand") .build(); private ConfigValue giveCommand = ConfigValue.builder(String.class) .withParent(technical) .withDefaultValue("/give {player_name} {item_identifier}{nbt} {count}") .withComment("Declares the command used in servers to cheat items.") .withName("giveCommand") .build(); private ConfigValue weatherCommand = ConfigValue.builder(String.class) .withParent(technical) .withDefaultValue("/weather {weather}") .withComment("Declares the command used to change weather.") .withName("weatherCommand") .build(); private ConfigValue maxRecipePerPage = ConfigValue.builder(Integer.class) .withParent(appearance) .withDefaultValue(3) .withComment("Declares the maximum amount of recipes displayed in a page if possible.") .withName("maxRecipePerPage") .constraints() .minNumerical(2) .maxNumerical(99) .finish() .build(); private ConfigValue showUtilsButtons = ConfigValue.builder(Boolean.class) .withParent(modules) .withDefaultValue(false) .withComment("Declares whether the utils buttons are shown.") .withName("showUtilsButtons") .build(); private ConfigValue disableRecipeBook = ConfigValue.builder(Boolean.class) .withParent(modules) .withDefaultValue(false) .withComment("Declares whether REI should remove the recipe book.") .withName("disableRecipeBook") .build(); private ConfigValue clickableRecipeArrows = ConfigValue.builder(Boolean.class) .withParent(appearance) .withDefaultValue(true) .withName("clickableRecipeArrows") .build(); private ConfigValue itemCheatingMode = ConfigValue.builder(ItemCheatingMode.class) .withParent(appearance) .withDefaultValue(ItemCheatingMode.REI_LIKE) .withName("itemCheatingMode") .build(); private ConfigValue lightGrayRecipeBorder = ConfigValue.builder(Boolean.class) .withParent(appearance) .withDefaultValue(false) .withComment("Declares the appearance of recipe's border.") .withName("lightGrayRecipeBorder") .build(); private ConfigValue appendModNames = ConfigValue.builder(Boolean.class) .withParent(appearance) .withDefaultValue(false) .withComment("Declares whether REI should append mod names to item stacks.") .withName("appendModNames") .build(); private ConfigValue villagerScreenPermanentScrollBar = ConfigValue.builder(Boolean.class) .withParent(appearance) .withDefaultValue(false) .withComment("Declares how the scrollbar in villager screen act.") .withName("villagerScreenPermanentScrollBar") .build(); private ConfigValue registerRecipesInAnotherThread = ConfigValue.builder(Boolean.class) .withParent(technical) .withDefaultValue(true) .withName("registerRecipesInAnotherThread") .build(); private ConfigValue scrollingEntryListWidget = ConfigValue.builder(Boolean.class) .withParent(appearance) .withDefaultValue(false) .withComment("Declares whether if entry list widget is scrolled.") .withName("scrollingEntryListWidget") .build(); // private ConfigValue choosePageDialogPoint = ConfigValue.builder(RelativePoint.class) // .withParent(technical) // .withDefaultValue(new RelativePoint(.5, .5)) // .withName("choosePageDialogPoint") // .build(); public ConfigObjectImpl() throws FiberException { } @Override public ConfigNode getConfigNode() { return configNode; } @Override public boolean isCheating() { return cheating.getValue(); } @Override public void setCheating(boolean cheating) { this.cheating.setValue(cheating); } @Override public ItemListOrdering getItemListOrdering() { return itemListOrdering.getValue().getOrdering(); } @Override public boolean isItemListAscending() { return itemListOrdering.getValue().isAscending(); } @Override public boolean isUsingDarkTheme() { return darkTheme.getValue().booleanValue(); } @Override public boolean isEntryListWidgetScrolled() { return scrollingEntryListWidget.getValue().booleanValue(); } @Override public boolean shouldAppendModNames() { return appendModNames.getValue().booleanValue(); } @Override public RecipeScreenType getRecipeScreenType() { return recipeScreenType.getValue(); } @Override public void setRecipeScreenType(RecipeScreenType recipeScreenType) { this.recipeScreenType.setValue(recipeScreenType); } @Override public boolean isLoadingDefaultPlugin() { return loadDefaultPlugin.getValue().booleanValue(); } @Override public SearchFieldLocation getSearchFieldLocation() { return sideSearchField.getValue(); } @Override public boolean isLeftHandSidePanel() { return mirrorItemPanel.getValue().booleanValue(); } @Override public boolean isCraftableFilterEnabled() { return enableCraftableOnlyButton.getValue().booleanValue(); } @Override public String getGamemodeCommand() { return gamemodeCommand.getValue(); } @Override public String getGiveCommand() { return giveCommand.getValue(); } @Override public String getWeatherCommand() { return weatherCommand.getValue(); } @Override public int getMaxRecipePerPage() { return maxRecipePerPage.getValue().intValue(); } @Override public boolean doesShowUtilsButtons() { return showUtilsButtons.getValue().booleanValue(); } @Override public boolean doesDisableRecipeBook() { return disableRecipeBook.getValue().booleanValue(); } @Override public boolean areClickableRecipeArrowsEnabled() { return clickableRecipeArrows.getValue().booleanValue(); } @Override public ItemCheatingMode getItemCheatingMode() { return itemCheatingMode.getValue(); } @Override public boolean isUsingLightGrayRecipeBorder() { return lightGrayRecipeBorder.getValue().booleanValue(); } @Override public boolean doesVillagerScreenHavePermanentScrollBar() { return villagerScreenPermanentScrollBar.getValue().booleanValue(); } @Override public boolean doesRegisterRecipesInAnotherThread() { return registerRecipesInAnotherThread.getValue().booleanValue(); } @Override public RelativePoint getChoosePageDialogPoint() { // return choosePageDialogPoint.getValue(); return new RelativePoint(.5, .5); } @Override public void setChoosePageDialogPoint(RelativePoint choosePageDialogPoint) { // this.choosePageDialogPoint.setValue(choosePageDialogPoint); } }