Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public void register(EmiRegistry registry) {
registry.addWorkstation(SKYBLOCK_CRAFTING, EmiStack.of(Items.LAVA_BUCKET));
ItemRepository.getRecipesStream().map(SkyblockEmiRecipe::new).forEach(registry::addRecipe);
registry.addExclusionArea(InventoryScreen.class, (screen, consumer) -> {
if (!SkyblockerConfigManager.get().farming.garden.gardenPlotsWidget || !Utils.getLocation().equals(Location.GARDEN)) return;
if (!SkyblockerConfigManager.get().farming.plotsWidget.enabled || !Utils.getLocation().equals(Location.GARDEN)) return;
AbstractContainerScreenAccessor accessor = (AbstractContainerScreenAccessor) screen;
consumer.accept(new Bounds(accessor.getX() + accessor.getImageWidth() + 4, accessor.getY(), 104, 127));
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public List<Rect2i> getGuiExtraAreas(ContainerScreen containerScreen) {
private static class InventoryContainerHandler implements IGuiContainerHandler<InventoryScreen> {
@Override
public List<Rect2i> getGuiExtraAreas(InventoryScreen containerScreen) {
if (!Utils.isOnSkyblock() || !SkyblockerConfigManager.get().farming.garden.gardenPlotsWidget || !Utils.isInGarden()) return List.of();
if (!Utils.isOnSkyblock() || !SkyblockerConfigManager.get().farming.plotsWidget.enabled || !Utils.isInGarden()) return List.of();
AbstractContainerScreenAccessor accessor = (AbstractContainerScreenAccessor) containerScreen;
return List.of(new Rect2i(accessor.getX() + accessor.getImageWidth() + 4, accessor.getY(), 104, 127));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ public void registerExclusionZones(ExclusionZones zones) {
});

zones.register(InventoryScreen.class, screen -> {
if (!SkyblockerConfigManager.get().farming.garden.gardenPlotsWidget || !Utils.isInGarden()) return List.of();
if (!SkyblockerConfigManager.get().farming.plotsWidget.enabled || !Utils.isInGarden()) return List.of();
AbstractContainerScreenAccessor accessor = (AbstractContainerScreenAccessor) screen;
return List.of(new Rectangle(accessor.getX() + accessor.getImageWidth() + 4, accessor.getY(), 104, 127));
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
import org.slf4j.Logger;

public class SkyblockerConfigManager {
public static final int CONFIG_VERSION = 6;
public static final int CONFIG_VERSION = 7;
private static final Logger LOGGER = LogUtils.getLogger();
private static final Path CONFIG_DIR = FabricLoader.getInstance().getConfigDir();
private static final Path CONFIG_FILE = CONFIG_DIR.resolve("skyblocker.json");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,117 +21,127 @@ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig
.id(SkyblockerMod.id("config/farming"))
.name(Component.translatable("skyblocker.config.farming"))

//Garden
// Farming HUD
.group(OptionGroup.createBuilder()
.name(Component.translatable("skyblocker.config.farming.garden"))
.collapsed(false)
.name(Component.translatable("skyblocker.config.farming.farmingHud"))
.collapsed(true)
.option(Option.<Boolean>createBuilder()
.name(Component.translatable("skyblocker.config.farming.garden.enableHud"))
.binding(defaults.farming.garden.farmingHud.enableHud,
() -> config.farming.garden.farmingHud.enableHud,
newValue -> config.farming.garden.farmingHud.enableHud = newValue)
.name(Component.translatable("skyblocker.config.farming.farmingHud.enabled"))
.binding(defaults.farming.farmingHud.enabled,
() -> config.farming.farmingHud.enabled,
newValue -> config.farming.farmingHud.enabled = newValue)
.controller(ConfigUtils.createBooleanController())
.build())
.option(ButtonOption.createBuilder()
.name(Component.translatable("skyblocker.config.farming.garden.farmingHud"))
.name(Component.translatable("skyblocker.config.farming.farmingHud.config"))
.prompt(Component.translatable("text.skyblocker.open"))
.action(screen -> Minecraft.getInstance().setScreen(new WidgetsConfigurationScreen(Location.GARDEN, FarmingHudWidget.getInstance().getInternalID(), screen)))
.build())
.option(Option.<FarmingConfig.Type>createBuilder()
.name(Component.translatable("skyblocker.config.farming.garden.farmingHud.type"))
.description(Component.translatable("skyblocker.config.farming.garden.farmingHud.type.@Tooltip"))
.binding(defaults.farming.garden.farmingHud.type,
() -> config.farming.garden.farmingHud.type,
newValue -> config.farming.garden.farmingHud.type = newValue)
.name(Component.translatable("skyblocker.config.farming.farmingHud.type"))
.description(Component.translatable("skyblocker.config.farming.farmingHud.type.@Tooltip"))
.binding(defaults.farming.farmingHud.type,
() -> config.farming.farmingHud.type,
newValue -> config.farming.farmingHud.type = newValue)
.controller(ConfigUtils.createEnumController())
.build())
.build())
// Pest Highlighter
.group(OptionGroup.createBuilder()
.name(Component.translatable("skyblocker.config.farming.pestHighlighter"))
.collapsed(true)
.option(Option.<Boolean>createBuilder()
.name(Component.translatable("skyblocker.config.farming.garden.dicerTitlePrevent"))
.binding(defaults.farming.garden.dicerTitlePrevent,
() -> config.farming.garden.dicerTitlePrevent,
newValue -> config.farming.garden.dicerTitlePrevent = newValue)
.controller(ConfigUtils.createBooleanController())
.build())
.option(Option.<Boolean>createBuilder()
.name(Component.translatable("skyblocker.config.farming.garden.pestHighlighter"))
.description(Component.translatable("skyblocker.config.farming.garden.pestHighlighter.@Tooltip"))
.binding(defaults.farming.garden.pestHighlighter,
() -> config.farming.garden.pestHighlighter,
newValue -> config.farming.garden.pestHighlighter = newValue)
.name(Component.translatable("skyblocker.config.farming.pestHighlighter.enabled"))
.description(Component.translatable("skyblocker.config.farming.pestHighlighter.enabled.@Tooltip"))
.binding(defaults.farming.pestHighlighter.enabled,
() -> config.farming.pestHighlighter.enabled,
newValue -> config.farming.pestHighlighter.enabled = newValue)
.controller(ConfigUtils.createBooleanController())
.build())
.option(Option.<Boolean>createBuilder()
.name(Component.translatable("skyblocker.config.farming.garden.vinylHighlighter"))
.description(Component.translatable("skyblocker.config.farming.garden.vinylHighlighter.@Tooltip"))
.binding(defaults.farming.garden.vinylHighlighter,
() -> config.farming.garden.vinylHighlighter,
newValue -> config.farming.garden.vinylHighlighter = newValue)
.name(Component.translatable("skyblocker.config.farming.pestHighlighter.vinylHighlighter"))
.description(Component.translatable("skyblocker.config.farming.pestHighlighter.vinylHighlighter.@Tooltip"))
.binding(defaults.farming.pestHighlighter.vinylHighlighter,
() -> config.farming.pestHighlighter.vinylHighlighter,
newValue -> config.farming.pestHighlighter.vinylHighlighter = newValue)
.controller(ConfigUtils.createBooleanController())
.build())
.option(Option.<Boolean>createBuilder()
.name(Component.translatable("skyblocker.config.farming.garden.lockMouseTool"))
.binding(defaults.farming.garden.lockMouseTool,
() -> config.farming.garden.lockMouseTool,
newValue -> config.farming.garden.lockMouseTool = newValue)
.name(Component.translatable("skyblocker.config.farming.pestHighlighter.stereoHarmony"))
.description(Component.translatable("skyblocker.config.farming.pestHighlighter.stereoHarmony.@Tooltip"))
.binding(defaults.farming.pestHighlighter.enableStereoHarmonyHelperForContest,
() -> config.farming.pestHighlighter.enableStereoHarmonyHelperForContest,
newValue -> config.farming.pestHighlighter.enableStereoHarmonyHelperForContest = newValue)
.controller(ConfigUtils.createBooleanController())
.build())
.build())
// Mouse Lock
.group(OptionGroup.createBuilder()
.name(Component.translatable("skyblocker.config.farming.mouseLock"))
.collapsed(true)
.tags(Component.literal("camera lock"), Component.literal("sensitivity"), Component.literal("yaw pitch"))
.option(Option.<Boolean>createBuilder()
.name(Component.translatable("skyblocker.config.farming.garden.lockMouseGround"))
.binding(defaults.farming.garden.lockMouseGroundOnly,
() -> config.farming.garden.lockMouseGroundOnly,
newValue -> config.farming.garden.lockMouseGroundOnly = newValue)
.name(Component.translatable("skyblocker.config.farming.mouseLock.lockMouseTool"))
.binding(defaults.farming.mouseLock.lockMouseTool,
() -> config.farming.mouseLock.lockMouseTool,
newValue -> config.farming.mouseLock.lockMouseTool = newValue)
.controller(ConfigUtils.createBooleanController())
.build())
.option(Option.<Boolean>createBuilder()
.name(Component.translatable("skyblocker.config.farming.garden.gardenPlotsWidget"))
.description(Component.translatable("skyblocker.config.farming.garden.gardenPlotsWidget.@Tooltip"))
.binding(defaults.farming.garden.gardenPlotsWidget,
() -> config.farming.garden.gardenPlotsWidget,
newValue -> config.farming.garden.gardenPlotsWidget = newValue)
.name(Component.translatable("skyblocker.config.farming.mouseLock.lockMouseGround"))
.binding(defaults.farming.mouseLock.lockMouseGroundOnly,
() -> config.farming.mouseLock.lockMouseGroundOnly,
newValue -> config.farming.mouseLock.lockMouseGroundOnly = newValue)
.controller(ConfigUtils.createBooleanController())
.build())
.build())
// Garden Plots Widget
.group(OptionGroup.createBuilder()
.name(Component.translatable("skyblocker.config.farming.plotsWidget"))
.collapsed(true)
.option(Option.<Boolean>createBuilder()
.name(Component.translatable("skyblocker.config.farming.garden.closeScreenOnPlotClick"))
.description(Component.translatable("skyblocker.config.farming.garden.closeScreenOnPlotClick.@Tooltip"))
.binding(defaults.farming.garden.closeScreenOnPlotClick,
() -> config.farming.garden.closeScreenOnPlotClick,
newValue -> config.farming.garden.closeScreenOnPlotClick = newValue)
.name(Component.translatable("skyblocker.config.farming.plotsWidget.enabled"))
.description(Component.translatable("skyblocker.config.farming.plotsWidget.enabled.@Tooltip"))
.binding(defaults.farming.plotsWidget.enabled,
() -> config.farming.plotsWidget.enabled,
newValue -> config.farming.plotsWidget.enabled = newValue)
.controller(ConfigUtils.createBooleanController())
.build())
.option(Option.<Boolean>createBuilder()
.name(Component.translatable("skyblocker.config.farming.garden.enableStereoHarmonyHelperForContest"))
.description(Component.translatable("skyblocker.config.farming.garden.enableStereoHarmonyHelperForContest.@Tooltip"))
.binding(defaults.farming.garden.enableStereoHarmonyHelperForContest,
() -> config.farming.garden.enableStereoHarmonyHelperForContest,
newValue -> config.farming.garden.enableStereoHarmonyHelperForContest = newValue)
.name(Component.translatable("skyblocker.config.farming.plotsWidget.closeScreenOnPlotClick"))
.description(Component.translatable("skyblocker.config.farming.plotsWidget.closeScreenOnPlotClick.@Tooltip"))
.binding(defaults.farming.plotsWidget.closeScreenOnPlotClick,
() -> config.farming.plotsWidget.closeScreenOnPlotClick,
newValue -> config.farming.plotsWidget.closeScreenOnPlotClick = newValue)
.controller(ConfigUtils.createBooleanController())
.build())
.build())
// Visitor Helper
.group(OptionGroup.createBuilder()
.name(Component.translatable("skyblocker.config.farming.visitorHelper"))
.collapsed(false)
.collapsed(true)
.option(Option.<Boolean>createBuilder()
.name(Component.translatable("skyblocker.config.farming.visitorHelper.visitorHelper"))
.description(Component.translatable("skyblocker.config.farming.visitorHelper.visitorHelper.@Tooltip"))
.binding(defaults.farming.visitorHelper.visitorHelper,
() -> config.farming.visitorHelper.visitorHelper,
newValue -> config.farming.visitorHelper.visitorHelper = newValue)
.name(Component.translatable("skyblocker.config.farming.visitorHelper.enabled"))
.description(Component.translatable("skyblocker.config.farming.visitorHelper.enabled.@Tooltip"))
.binding(defaults.farming.visitorHelper.enabled,
() -> config.farming.visitorHelper.enabled,
newValue -> config.farming.visitorHelper.enabled = newValue)
.controller(ConfigUtils.createBooleanController())
.build())
.option(Option.<Boolean>createBuilder()
.name(Component.translatable("skyblocker.config.farming.visitorHelper.visitorHelperGardenOnly"))
.description(Component.translatable("skyblocker.config.farming.visitorHelper.visitorHelperGardenOnly.@Tooltip"))
.binding(defaults.farming.visitorHelper.visitorHelperGardenOnly,
() -> config.farming.visitorHelper.visitorHelperGardenOnly,
newValue -> config.farming.visitorHelper.visitorHelperGardenOnly = newValue)
.name(Component.translatable("skyblocker.config.farming.visitorHelper.showInGardenOnly"))
.description(Component.translatable("skyblocker.config.farming.visitorHelper.showInGardenOnly.@Tooltip"))
.binding(defaults.farming.visitorHelper.showInGardenOnly,
() -> config.farming.visitorHelper.showInGardenOnly,
newValue -> config.farming.visitorHelper.showInGardenOnly = newValue)
.controller(ConfigUtils.createBooleanController())
.build())
.option(Option.<Boolean>createBuilder()
.name(Component.translatable("skyblocker.config.farming.visitorHelper.showStacksInVisitorHelper"))
.description(Component.translatable("skyblocker.config.farming.visitorHelper.showStacksInVisitorHelper.@Tooltip"))
.binding(defaults.farming.visitorHelper.showStacksInVisitorHelper,
() -> config.farming.visitorHelper.showStacksInVisitorHelper,
newValue -> config.farming.visitorHelper.showStacksInVisitorHelper = newValue)
.name(Component.translatable("skyblocker.config.farming.visitorHelper.showInStacks"))
.description(Component.translatable("skyblocker.config.farming.visitorHelper.showInStacks.@Tooltip"))
.binding(defaults.farming.visitorHelper.showInStacks,
() -> config.farming.visitorHelper.showInStacks,
newValue -> config.farming.visitorHelper.showInStacks = newValue)
.controller(ConfigUtils.createBooleanController())
.build())
.build())
Expand Down
38 changes: 20 additions & 18 deletions src/main/java/de/hysky/skyblocker/config/configs/FarmingConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,44 +3,46 @@
import net.minecraft.client.resources.language.I18n;

public class FarmingConfig {
public Garden garden = new Garden();
public FarmingHud farmingHud = new FarmingHud();

public VisitorHelper visitorHelper = new VisitorHelper();
public PestHighlighter pestHighlighter = new PestHighlighter();

public MouseLock mouseLock = new MouseLock();

public static class Garden {
public FarmingHud farmingHud = new FarmingHud();
public PlotsWidget plotsWidget = new PlotsWidget();

public boolean dicerTitlePrevent = true;
public VisitorHelper visitorHelper = new VisitorHelper();

public boolean pestHighlighter = true;
public static class PestHighlighter {
public boolean enabled = true;

public boolean vinylHighlighter = true;

public boolean enableStereoHarmonyHelperForContest = true;
}

public static class MouseLock {
public boolean lockMouseTool = false;

public boolean lockMouseGroundOnly = false;
}

public boolean gardenPlotsWidget = true;
public static class PlotsWidget {
public boolean enabled = true;

public boolean closeScreenOnPlotClick = false;

public boolean enableStereoHarmonyHelperForContest = true;
}

public static class VisitorHelper {
public boolean visitorHelper = true;
public boolean enabled = true;

public boolean visitorHelperGardenOnly = true;
public boolean showInGardenOnly = true;

public boolean showStacksInVisitorHelper = false;
public boolean showInStacks = false;
}

public static class FarmingHud {
public boolean enableHud = true;

public int x;

public int y;
public boolean enabled = true;

public Type type = Type.BOTH;
}
Expand All @@ -52,7 +54,7 @@ public enum Type {

@Override
public String toString() {
return I18n.get("skyblocker.config.farming.garden.farmingHud.type." + name());
return I18n.get("skyblocker.config.farming.farmingHud.type." + name());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ private static DataFixer build() {
builder.addFixer(new ConfigFix4ChatRulesObject(schema5, true));
Schema schema6 = builder.addSchema(6, Schema::new);
builder.addFixer(new ConfigFix5ChatRulesSeparateOutputs(schema6, true));
Schema schema7 = builder.addSchema(7, Schema::new);
builder.addFixer(new ConfigFix6Farming(schema7, true));

return dataFixer = builder.build().fixer();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package de.hysky.skyblocker.config.datafixer;

import com.mojang.datafixers.DSL;
import com.mojang.datafixers.TypeRewriteRule;
import com.mojang.datafixers.schemas.Schema;
import com.mojang.serialization.Dynamic;

public class ConfigFix6Farming extends ConfigDataFix {
public ConfigFix6Farming(Schema outputSchema, boolean changesType) {
super(outputSchema, changesType);
}

@Override
protected TypeRewriteRule makeRule() {
return fixTypeEverywhereTyped(
getClass().getSimpleName(),
getInputSchema().getType(ConfigDataFixer.CONFIG_TYPE),
typed -> typed.update(DSL.remainderFinder(), this::fix)
);
}

private Dynamic<?> fix(Dynamic<?> dynamic) {
return fixVersion(dynamic).update("farming", farming -> farming
.set("farmingHud", dynamic.emptyMap()
.setFieldIfPresent("enabled", farming.get("garden").get("farmingHud").get("enableHud").result())
.setFieldIfPresent("type", farming.get("garden").get("farmingHud").get("type").result())
).set("pestHighlighter", dynamic.emptyMap()
.setFieldIfPresent("enabled", farming.get("garden").get("pestHighlighter").result())
.setFieldIfPresent("vinylHighlighter", farming.get("garden").get("vinylHighlighter").result())
.setFieldIfPresent("enableStereoHarmonyHelperForContest", farming.get("garden").get("enableStereoHarmonyHelperForContest").result())
).set("mouseLock", dynamic.emptyMap()
.setFieldIfPresent("lockMouseTool", farming.get("garden").get("lockMouseTool").result())
.setFieldIfPresent("lockMouseGroundOnly", farming.get("garden").get("lockMouseGroundOnly").result())
).set("plotsWidget", dynamic.emptyMap()
.setFieldIfPresent("enabled", farming.get("garden").get("gardenPlotsWidget").result())
.setFieldIfPresent("closeScreenOnPlotClick", farming.get("garden").get("closeScreenOnPlotClick").result())
).update("visitorHelper", visitorHelper -> visitorHelper
.renameField("visitorHelper", "enabled")
.renameField("visitorHelperGardenOnly", "showInGardenOnly")
.renameField("showStacksInVisitorHelper", "showInStacks")
).remove("garden")
);
}
}
Loading