2016-07-30 33 views
0

Ich versuche, eine Eigenschaftendatei in Java zu machen. Leider, wenn ich Minecraft starte (Da dies ein Mod in Forge ist), wird die Datei nicht erstellt. Ich werde so dankbar sein für jeden, der mir hilft. Hier ist der Code:Warum erstellt dies keine Eigenschaftendatei?

package mymod.properties; 

import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.Properties; 

public class WriteToProperties { 

public static void main(String[] args) { 

    Properties prop = new Properties(); 
    try { 
     prop.setProperty("Test", "Yay"); 

     prop.store(new FileOutputStream("Test.properties"), null); 

    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 

} 

} 
+1

Ist es möglich, die Datei in einem Verzeichnis erstellt wird Sie don erwarte ich nicht? Versuchen Sie, einen vollständigen Pfad anzugeben. – JustinKSU

Antwort

-1

Diese Datei wurde im Stammverzeichnis Ihres Projekts erstellt. Wenn Sie einige konkrete Pfad speichern möchten, erstellen Sie Ordner in Stamm des Projekts wie Requisiten und den Weg zum "props\\Test.properties"

+0

In Ordnung. Was genau ist die Wurzel des Projekts? Gibt es eine Möglichkeit zu überprüfen? (Oder ist es nur die erste Datei, die alles enthält?) – Betterjakers

+0

Mit welcher IDE haben Sie diesen Code geschrieben? Eclipse, IDEA oder nur Notizblock? –

+0

Ich benutze Eclipse. :) – Betterjakers

1

Grundsätzlich in FileOutputStream Konstruktor ändern, was Sie wollen, ist initialize(event.getSuggestedConfigurationFile());

Forge im Grunde wünscht Ihnen die Standard zur Hand Einstellungen für Sie. Ich schlage auch vor, dass Sie die Dinge logisch strukturieren, damit sie später schön, sauber und zugänglich sind und einfacher zu verwalten sind.

Ich benutze dies als Config-loader

package tschallacka.magiccookies.init; 

import java.io.File; 

import net.minecraftforge.common.config.Configuration; 
import net.minecraftforge.common.config.Property; 
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; 
import tschallacka.magiccookies.MagicCookies; 
import tschallacka.magiccookies.api.ModHooks; 
import tschallacka.magiccookies.api.Preferences; 

public class ConfigLoader { 
    public static Configuration config; 
    public static final String CATEGORY_GENERAL = "GeneralSettings"; 
    public static final String CATEGORY_SERVER = "ServerPerformance"; 
    public static void init(FMLPreInitializationEvent event) { 
     ModHooks.MODID = MagicCookies.MODID; 
     ModHooks.MODNAME = MagicCookies.MODNAME; 
     ModHooks.VERSION = MagicCookies.VERSION; 
     try { 
      initialize(event.getSuggestedConfigurationFile()); 
     } 
     catch (Exception e) { 
      MagicCookies.log.error("MagicCookie failed to load preferences. Reverting to default"); 
     } 
     finally { 
      if (config != null) { 
       save(); 
      } 
     } 
    } 
    private static void initialize(final File file) { 
     config = new Configuration(file); 
     config.addCustomCategoryComment(CATEGORY_GENERAL, "General Settings"); 
     config.addCustomCategoryComment(CATEGORY_SERVER, "Server performance settings"); 
     Preferences.magicCookieIsLoaded = true; 
     config.load(); 
     syncConfigurable(); 
    } 
    private static void save() { 
     config.save(); 
    } 
    private static void syncConfigurable() { 

     final Property awesomeMod = config.get(Configuration.CATEGORY_GENERAL, "awesome_mod", Preferences.awesomeMod); 
     awesomeMod.comment = "Set this to yes if you think this mod is awesome, maybe it will at some time unlock a special thing.... or not... but that's only for people who think this is an wesome Mod ;-)"; 
     Preferences.awesomeMod = awesomeMod.getString(); 

     final Property numberOfBlocksPlacingPerTickByStripper = config.get(CATEGORY_SERVER,"number_of_blocks_placing_per_tick_by_stripper",Preferences.numberOfBlocksPlacingPerTickByStripper); 
     numberOfBlocksPlacingPerTickByStripper.comment = "This affects how many blocks will be placed per tick by the creative stripper tool per tick. The stripper tool will only place blocks if ticks are take less than 50ms. If you experience lag lower this number, if you don't experience lag and want faster copy pasting, make this number higher. For an awesome slowmo build of your caste set this to 1 ;-). Set to 0 to render everything in one go per chunk"; 
     Preferences.numberOfBlocksPlacingPerTickByStripper = numberOfBlocksPlacingPerTickByStripper.getInt(); 

     final Property averageTickTimeCalculationSpan = config.get(CATEGORY_SERVER,"number_of_ticks_used_for_average_time_per_tick_calculation",Preferences.averageTickTimeCalculationSpan); 
     averageTickTimeCalculationSpan.comment = "This number is the number of tick execution times are added together to calculation an average. The higher number means less lag by some things like the strippers, but can also lead to longer execution times for the strippers. Basically if your server is always running behind on server ticks set this value to 1, to at least get some work done when your server is running under 50ms tickspeed"; 
     Preferences.averageTickTimeCalculationSpan = averageTickTimeCalculationSpan.getInt(); 

     final Property acceptableTickduration = config.get(CATEGORY_SERVER,"acceptable_tick_duration",Preferences.acceptableTickduration); 
     acceptableTickduration.comment = "Define here what you see as acceptable tick speed where MagicCookies can do some of its magic. If average tick speed or current tick speed is higher than this value it won't perform some tasks to help manage server load."; 
     Preferences.acceptableTickduration = (long)acceptableTickduration.getDouble(); 
    } 
} 

Der Wert Halter Preferences-Klasse. Das ist rein, so kann ich überall Preferences.valuename tun.

package tschallacka.magiccookies.api; 
/** 
* Here the preferences of MagicCookies will be stored 
* and kept after the config's are loaded. 
* @author Tschallacka 
* 
*/ 
public class Preferences { 
    public static boolean magicCookieIsLoaded = false; 
    public static String awesomeMod = "Well?"; 
    public static boolean isLoadedThaumcraft = false; 
    public static int numberOfBlocksPlacingPerTickByStripper = 0; 
    public static int averageTickTimeCalculationSpan = 60; 
    public static long acceptableTickduration = 50l; 
    public static int darkShrineFrequency = 0; 
    public static boolean darkShrineSpawnLogging = true; 
    public static boolean entropyTempleSpawnLogging = true; 
    public static int entropySize = 30; 
} 

In Ihrem Haupt mod-Datei:

@EventHandler 
public void preInit(FMLPreInitializationEvent e) { 
    MagicCookies.log.warn("Preinit starting"); 
    MinecraftForge.EVENT_BUS.register((Object)MagicCookies.instance); 
    ConfigLoader.init(e); 
} 

Und danach kann man einfach aus der Preferences-Klasse mit all Ihren holen