11package pro .mikey .autoclicker ;
22
3+ import com .google .common .base .Suppliers ;
34import com .google .gson .Gson ;
5+ import it .unimi .dsi .fastutil .Pair ;
46import net .minecraft .ChatFormatting ;
57import net .minecraft .client .DeltaTracker ;
68import net .minecraft .client .KeyMapping ;
911import net .minecraft .client .player .LocalPlayer ;
1012import net .minecraft .client .resources .language .I18n ;
1113import net .minecraft .network .chat .Component ;
14+ import net .minecraft .util .LazyLoadedValue ;
1215import net .minecraft .world .InteractionHand ;
1316import net .minecraft .world .entity .LivingEntity ;
1417import net .minecraft .world .item .ShieldItem ;
1518import net .minecraft .world .phys .EntityHitResult ;
1619import net .minecraft .world .phys .HitResult ;
20+ import org .apache .commons .lang3 .concurrent .LazyInitializer ;
1721import org .apache .logging .log4j .LogManager ;
1822import org .apache .logging .log4j .Logger ;
1923import org .lwjgl .glfw .GLFW ;
2428import java .nio .file .Files ;
2529import java .nio .file .Path ;
2630import java .nio .file .Paths ;
31+ import java .util .function .Supplier ;
2732
2833public class AutoClicker {
2934 public static final String MOD_ID = "autoclicker" ;
@@ -32,8 +37,13 @@ public class AutoClicker {
3237 new KeyMapping ("keybinding.open-gui" , GLFW .GLFW_KEY_O , "category.autoclicker-fabric" );
3338 public static final KeyMapping toggleHolding =
3439 new KeyMapping ("keybinding.toggle-hold" , GLFW .GLFW_KEY_I , "category.autoclicker-fabric" );
35- private static final Path CONFIG_DIR = Paths .get (Minecraft .getInstance ().gameDirectory .getPath () + "/config" );
36- private static final Path CONFIG_FILE = Paths .get (CONFIG_DIR + "/auto-clicker-fabric.json" );
40+
41+ private static final Supplier <Pair <Path , Path >> CONFIG_PATHS = Suppliers .memoize (() -> {
42+ Path configDir = Paths .get (Minecraft .getInstance ().gameDirectory .getPath () + "/config" );
43+ Path configFile = Paths .get (configDir + "/auto-clicker-fabric.json" );
44+ return Pair .of (configDir , configFile );
45+ });
46+
3747 public static Holding .AttackHolding leftHolding ;
3848 public static Holding rightHolding ;
3949 public static Holding jumpHolding ;
@@ -60,18 +70,19 @@ public void onInitialize() {
6070 }
6171
6272 public void clientReady (Minecraft client ) {
63- if (!Files .exists (CONFIG_FILE )) {
73+ var configPaths = CONFIG_PATHS .get ();
74+ if (!Files .exists (configPaths .value ())) {
6475 try {
65- Files .createDirectories (CONFIG_DIR );
66- Files .createFile (CONFIG_FILE );
76+ Files .createDirectories (configPaths . key () );
77+ Files .createFile (configPaths . value () );
6778 } catch (IOException e ) {
6879 e .printStackTrace ();
6980 }
7081
7182 this .saveConfig ();
7283 } else {
7384 try {
74- FileReader json = new FileReader (CONFIG_FILE .toFile ());
85+ FileReader json = new FileReader (configPaths . value () .toFile ());
7586 Config config = new Gson ().fromJson (json , Config .class );
7687 json .close ();
7788 if (config != null && config .getHudConfig () != null ) {
@@ -90,8 +101,9 @@ public void clientReady(Minecraft client) {
90101 }
91102
92103 public void saveConfig () {
104+ var configPaths = CONFIG_PATHS .get ();
93105 try {
94- FileWriter writer = new FileWriter (CONFIG_FILE .toFile ());
106+ FileWriter writer = new FileWriter (configPaths . value () .toFile ());
95107
96108 new Gson ().toJson (this .config , writer );
97109 writer .flush ();
0 commit comments