|
@@ -32,8 +32,8 @@ import me.shedaniel.rei.api.EntryStack;
|
|
import me.shedaniel.rei.api.RecipeHelper;
|
|
import me.shedaniel.rei.api.RecipeHelper;
|
|
import me.shedaniel.rei.gui.ConfigReloadingScreen;
|
|
import me.shedaniel.rei.gui.ConfigReloadingScreen;
|
|
import me.shedaniel.rei.gui.ContainerScreenOverlay;
|
|
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.RecipeScreenType;
|
|
|
|
+import me.shedaniel.rei.gui.config.entry.RecipeScreenTypeEntry;
|
|
import me.shedaniel.rei.gui.credits.CreditsScreen;
|
|
import me.shedaniel.rei.gui.credits.CreditsScreen;
|
|
import net.fabricmc.loader.api.FabricLoader;
|
|
import net.fabricmc.loader.api.FabricLoader;
|
|
import net.minecraft.client.MinecraftClient;
|
|
import net.minecraft.client.MinecraftClient;
|
|
@@ -59,7 +59,6 @@ import static me.sargunvohra.mcmods.autoconfig1u.util.Utils.setUnsafely;
|
|
public class ConfigManagerImpl implements ConfigManager {
|
|
public class ConfigManagerImpl implements ConfigManager {
|
|
|
|
|
|
private boolean craftableOnly;
|
|
private boolean craftableOnly;
|
|
- // private List<EntryStack> favorites = new ArrayList<>();
|
|
|
|
private final Gson gson = new GsonBuilder().create();
|
|
private final Gson gson = new GsonBuilder().create();
|
|
|
|
|
|
public ConfigManagerImpl() {
|
|
public ConfigManagerImpl() {
|
|
@@ -82,22 +81,7 @@ public class ConfigManagerImpl implements ConfigManager {
|
|
}).build()));
|
|
}).build()));
|
|
GuiRegistry guiRegistry = AutoConfig.getGuiRegistry(ConfigObjectImpl.class);
|
|
GuiRegistry guiRegistry = AutoConfig.getGuiRegistry(ConfigObjectImpl.class);
|
|
//noinspection rawtypes
|
|
//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) -> {
|
|
guiRegistry.registerPredicateProvider((i13n, field, config, defaults, guiProvider) -> {
|
|
if (field.isAnnotationPresent(ConfigEntry.Gui.Excluded.class))
|
|
if (field.isAnnotationPresent(ConfigEntry.Gui.Excluded.class))
|
|
return Collections.emptyList();
|
|
return Collections.emptyList();
|
|
@@ -106,67 +90,15 @@ public class ConfigManagerImpl implements ConfigManager {
|
|
return Collections.singletonList(entry);
|
|
return Collections.singletonList(entry);
|
|
}, field -> field.getType() == ModifierKeyCode.class);
|
|
}, field -> field.getType() == ModifierKeyCode.class);
|
|
guiRegistry.registerAnnotationProvider((i13n, field, config, defaults, guiProvider) -> {
|
|
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) -> {
|
|
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);
|
|
Utils.setUnsafely(field, config, newValue / 100d);
|
|
}).setTextGetter(integer -> String.format("Size: %d%%", integer)).build());
|
|
}).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();
|
|
saveConfig();
|
|
RoughlyEnoughItemsCore.LOGGER.info("[REI] Config is loaded.");
|
|
RoughlyEnoughItemsCore.LOGGER.info("[REI] Config is loaded.");
|
|
}
|
|
}
|
|
@@ -178,8 +110,10 @@ public class ConfigManagerImpl implements ConfigManager {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void saveConfig() {
|
|
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();
|
|
((me.sargunvohra.mcmods.autoconfig1u.ConfigManager<ConfigObjectImpl>) AutoConfig.getConfigHolder(ConfigObjectImpl.class)).save();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -203,7 +137,7 @@ public class ConfigManagerImpl implements ConfigManager {
|
|
try {
|
|
try {
|
|
ConfigScreenProvider<ConfigObjectImpl> provider = (ConfigScreenProvider<ConfigObjectImpl>) AutoConfig.getConfigScreen(ConfigObjectImpl.class, parent);
|
|
ConfigScreenProvider<ConfigObjectImpl> provider = (ConfigScreenProvider<ConfigObjectImpl>) AutoConfig.getConfigScreen(ConfigObjectImpl.class, parent);
|
|
provider.setI13nFunction(manager -> "config.roughlyenoughitems");
|
|
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.setCategoryFunction((baseI13n, categoryName) -> String.format("%s.%s", baseI13n, categoryName));
|
|
provider.setBuildFunction(builder -> {
|
|
provider.setBuildFunction(builder -> {
|
|
if (FabricLoader.getInstance().isModLoaded("modmenu")) {
|
|
if (FabricLoader.getInstance().isModLoaded("modmenu")) {
|