aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2020-02-12 01:55:38 +0800
committershedaniel <daniel@shedaniel.me>2020-02-12 02:03:30 +0800
commit620b7b47c9c2a3d7e1f54c5a8c82113acaff7438 (patch)
treedde7882dac52864c84167799db97cb6f72db90e0 /src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java
parent5cb938a76b4f93c9f58bc725a1543e511c760aa9 (diff)
downloadRoughlyEnoughItems-620b7b47c9c2a3d7e1f54c5a8c82113acaff7438.tar.gz
RoughlyEnoughItems-620b7b47c9c2a3d7e1f54c5a8c82113acaff7438.tar.bz2
RoughlyEnoughItems-620b7b47c9c2a3d7e1f54c5a8c82113acaff7438.zip
fix favorites saving
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java')
-rw-r--r--src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java90
1 files changed, 12 insertions, 78 deletions
diff --git a/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java b/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java
index cdd4d486b..e201fd7b7 100644
--- a/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java
+++ b/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java
@@ -32,8 +32,8 @@ import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.RecipeHelper;
import me.shedaniel.rei.gui.ConfigReloadingScreen;
import me.shedaniel.rei.gui.ContainerScreenOverlay;
-import me.shedaniel.rei.gui.PreRecipeViewingScreen;
import me.shedaniel.rei.gui.config.RecipeScreenType;
+import me.shedaniel.rei.gui.config.entry.RecipeScreenTypeEntry;
import me.shedaniel.rei.gui.credits.CreditsScreen;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.client.MinecraftClient;
@@ -59,7 +59,6 @@ import static me.sargunvohra.mcmods.autoconfig1u.util.Utils.setUnsafely;
public class ConfigManagerImpl implements ConfigManager {
private boolean craftableOnly;
- // private List<EntryStack> favorites = new ArrayList<>();
private final Gson gson = new GsonBuilder().create();
public ConfigManagerImpl() {
@@ -82,22 +81,7 @@ public class ConfigManagerImpl implements ConfigManager {
}).build()));
GuiRegistry guiRegistry = AutoConfig.getGuiRegistry(ConfigObjectImpl.class);
//noinspection rawtypes
- guiRegistry.registerAnnotationProvider((i13n, field, config, defaults, guiProvider) -> Collections.singletonList(ConfigEntryBuilder.create().startEnumSelector(i13n, (Class) field.getType(), getUnsafely(field, config, null)).setDefaultValue(() -> getUnsafely(field, defaults)).setSaveConsumer(newValue -> setUnsafely(field, config, newValue)).build()), field -> field.getType().isEnum(), ConfigObject.UseEnumSelectorInstead.class);
- // guiRegistry.registerAnnotationProvider((i13n, field, config, defaults, guiProvider) -> {
- // @SuppressWarnings("rawtypes") List<AbstractConfigListEntry> entries = new ArrayList<>();
- // for (FabricKeyBinding binding : ClientHelper.getInstance().getREIKeyBindings()) {
- // entries.add(ConfigEntryBuilder.create().fillKeybindingField(I18n.translate(binding.getId()) + ":", binding).build());
- // }
- // KeyCodeEntry entry = ConfigEntryBuilder.create().startKeyCodeField(i13n, getUnsafely(field, config, InputUtil.UNKNOWN_KEYCODE)).setDefaultValue(() -> getUnsafely(field, defaults)).setSaveConsumer(newValue -> setUnsafely(field, config, newValue)).build();
- // entry.setAllowMouse(false);
- // entries.add(entry);
- // return entries;
- // }, field -> field.getType() == InputUtil.KeyCode.class, ConfigObject.AddInFrontKeyCode.class);
- // guiRegistry.registerPredicateProvider((i13n, field, config, defaults, guiProvider) -> {
- // KeyCodeEntry entry = ConfigEntryBuilder.create().startKeyCodeField(i13n, getUnsafely(field, config, InputUtil.UNKNOWN_KEYCODE)).setDefaultValue(() -> getUnsafely(field, defaults)).setSaveConsumer(newValue -> setUnsafely(field, config, newValue)).build();
- // entry.setAllowMouse(false);
- // return Collections.singletonList(entry);
- // }, field -> field.getType() == InputUtil.KeyCode.class);
+ guiRegistry.registerAnnotationProvider((i13n, field, config, defaults, guiProvider) -> Collections.singletonList(ConfigEntryBuilder.create().startEnumSelector(i13n, (Class) field.getType(), getUnsafely(field, config, null)).setDefaultValue(() -> getUnsafely(field, defaults)).setSaveConsumer(newValue -> setUnsafely(field, config, newValue)).build()), field -> field.getType().isEnum(), ConfigObjectImpl.UseEnumSelectorInstead.class);
guiRegistry.registerPredicateProvider((i13n, field, config, defaults, guiProvider) -> {
if (field.isAnnotationPresent(ConfigEntry.Gui.Excluded.class))
return Collections.emptyList();
@@ -106,67 +90,15 @@ public class ConfigManagerImpl implements ConfigManager {
return Collections.singletonList(entry);
}, field -> field.getType() == ModifierKeyCode.class);
guiRegistry.registerAnnotationProvider((i13n, field, config, defaults, guiProvider) -> {
- ConfigObject.UsePercentage bounds = field.getAnnotation(ConfigObject.UsePercentage.class);
+ ConfigObjectImpl.UsePercentage bounds = field.getAnnotation(ConfigObjectImpl.UsePercentage.class);
return Collections.singletonList(ConfigEntryBuilder.create().startIntSlider(i13n, MathHelper.ceil(Utils.getUnsafely(field, config, 0.0) * 100), MathHelper.ceil(bounds.min() * 100), MathHelper.ceil(bounds.max() * 100)).setDefaultValue(() -> MathHelper.ceil((double) Utils.getUnsafely(field, defaults) * 100)).setSaveConsumer((newValue) -> {
Utils.setUnsafely(field, config, newValue / 100d);
}).setTextGetter(integer -> String.format("Size: %d%%", integer)).build());
- }, (field) -> field.getType() == Double.TYPE || field.getType() == Double.class, ConfigObject.UsePercentage.class);
+ }, (field) -> field.getType() == Double.TYPE || field.getType() == Double.class, ConfigObjectImpl.UsePercentage.class);
- guiRegistry.registerAnnotationProvider((i13n, field, config, defaults, guiProvider) -> {
- int width = 220;
- //noinspection deprecation
- return Collections.singletonList(new TooltipListEntry<RecipeScreenType>(i13n, null) {
- private RecipeScreenType type = getUnsafely(field, config, RecipeScreenType.UNSET);
- private final AbstractButtonWidget buttonWidget = new AbstractPressableButtonWidget(0, 0, 0, 20, "") {
- @Override
- public void onPress() {
- MinecraftClient.getInstance().openScreen(new PreRecipeViewingScreen(getScreen(), type, false, original -> {
- MinecraftClient.getInstance().openScreen(getScreen());
- type = original ? RecipeScreenType.ORIGINAL : RecipeScreenType.VILLAGER;
- getScreen().setEdited(true, isRequiresRestart());
- }));
- }
-
- @Override
- public void render(int mouseX, int mouseY, float delta) {
- setMessage(I18n.translate("config.roughlyenoughitems.recipeScreenType.config", type.toString()));
- super.render(mouseX, mouseY, delta);
- }
- };
- private final List<Element> children = ImmutableList.of(buttonWidget);
-
- @Override
- public RecipeScreenType getValue() {
- return type;
- }
-
- @Override
- public Optional<RecipeScreenType> getDefaultValue() {
- return Optional.ofNullable(getUnsafely(field, defaults));
- }
-
- @Override
- public void save() {
- Utils.setUnsafely(field, config, type);
- }
-
- @Override
- public List<? extends Element> children() {
- return children;
- }
-
- @Override
- public void render(int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isSelected, float delta) {
- super.render(index, y, x, entryWidth, entryHeight, mouseX, mouseY, isSelected, delta);
- Window window = MinecraftClient.getInstance().getWindow();
- this.buttonWidget.active = this.isEditable();
- this.buttonWidget.y = y;
- this.buttonWidget.x = x + entryWidth / 2 - width / 2;
- this.buttonWidget.setWidth(width);
- this.buttonWidget.render(mouseX, mouseY, delta);
- }
- });
- }, (field) -> field.getType() == RecipeScreenType.class, ConfigObject.UseSpecialRecipeTypeScreen.class);
+ guiRegistry.registerAnnotationProvider((i13n, field, config, defaults, guiProvider) ->
+ Collections.singletonList(new RecipeScreenTypeEntry(220, i13n, getUnsafely(field, config, RecipeScreenType.UNSET), getUnsafely(field, defaults), type -> setUnsafely(field, config, type)))
+ , (field) -> field.getType() == RecipeScreenType.class, ConfigObjectImpl.UseSpecialRecipeTypeScreen.class);
saveConfig();
RoughlyEnoughItemsCore.LOGGER.info("[REI] Config is loaded.");
}
@@ -178,8 +110,10 @@ public class ConfigManagerImpl implements ConfigManager {
@Override
public void saveConfig() {
- if (getFavorites() != null)
- getFavorites().removeIf(EntryStack::isEmpty);
+ if (getConfig().getFavorites() != null)
+ getConfig().getFavorites().removeIf(EntryStack::isEmpty);
+ if (getConfig().getFilteredStacks() != null)
+ getConfig().getFilteredStacks().removeIf(EntryStack::isEmpty);
((me.sargunvohra.mcmods.autoconfig1u.ConfigManager<ConfigObjectImpl>) AutoConfig.getConfigHolder(ConfigObjectImpl.class)).save();
}
@@ -203,7 +137,7 @@ public class ConfigManagerImpl implements ConfigManager {
try {
ConfigScreenProvider<ConfigObjectImpl> provider = (ConfigScreenProvider<ConfigObjectImpl>) AutoConfig.getConfigScreen(ConfigObjectImpl.class, parent);
provider.setI13nFunction(manager -> "config.roughlyenoughitems");
- provider.setOptionFunction((baseI13n, field) -> field.isAnnotationPresent(ConfigObject.DontApplyFieldName.class) ? baseI13n : String.format("%s.%s", baseI13n, field.getName()));
+ provider.setOptionFunction((baseI13n, field) -> field.isAnnotationPresent(ConfigObjectImpl.DontApplyFieldName.class) ? baseI13n : String.format("%s.%s", baseI13n, field.getName()));
provider.setCategoryFunction((baseI13n, categoryName) -> String.format("%s.%s", baseI13n, categoryName));
provider.setBuildFunction(builder -> {
if (FabricLoader.getInstance().isModLoaded("modmenu")) {