Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Что-либо хранить и менять в самой jar-ке не стоит. Можно просто создать в папке ./config/modid/modid.cfg, а чтение и запись в него производить по событиям.svk написал(а):Понятно, что можно записывать/считывать txt файл, но как мне писать путь до него, если он в моде?
public static String readFromFile(String par1FileName)
{
StackMeMod.log.info("Reading from " + par1FileName);
String filePath = "./config/" + StackMeMod.MODID + "/" + par1FileName;
StringBuilder jsonfull = new StringBuilder();
BufferedReader bufReader = null;
if (new File(filePath).exists())
{
try
{
bufReader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), Charset.forName("UTF-8")));
jsonfull = new StringBuilder();
String tempstring;
while ((tempstring = bufReader.readLine()) != null) { jsonfull.append(tempstring + "\n"); }
bufReader.close();
}
catch (FileNotFoundException e) { e.printStackTrace(); }
catch (IOException e) { e.printStackTrace(); }
}
else
{
try { new File(filePath).createNewFile(); }
catch (IOException e) { e.printStackTrace(); }
}
return jsonfull.toString();
}
public static void writeToFile(String par1FileName, String par2String)
{
StackMeMod.log.info("Writing into " + par1FileName);
File configFolder = new File("./config/" + StackMeMod.MODID + "/");
configFolder.mkdir();
try
{
FileWriter writer = new FileWriter("./config/" + StackMeMod.MODID + "/" + par1FileName, false);
writer.write(par2String);
writer.close();
}
catch (IOException e) { e.printStackTrace(); }
}
Ну я же должен сказать, что именно мне надо сохранитьFanKar написал(а):Все уже поняли, что ты эту "миниигру" делаешь -_-
package com.svk.WarMod.miniGame;
import java.util.HashMap;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import net.minecraft.world.WorldSavedData;
import net.minecraft.world.storage.MapStorage;
public class MGData extends WorldSavedData
{
final static String key = "MGData";
public static MGData forWorld(World world)
{
MapStorage storage = world.perWorldStorage;
MGData result = (MGData)storage.loadData(MGData.class, key);
if (result == null) {
result = new MGData();
storage.setData(key, result);
}
return result;
}
public MGData() {
super(key);
}
public MGData(String key){
super(key);
}
@Override
public void readFromNBT(NBTTagCompound nbttagcompound)
{
System.out.println("readNBTData");
}
@Override
public void writeToNBT(NBTTagCompound nbttagcompound)
{
System.out.println("writeNBTData");
}
}
package com.svk.WarMod.miniGame.events;
import java.util.EnumSet;
import com.svk.WarMod.miniGame.MGData;
import net.minecraft.world.World;
import net.minecraftforge.event.world.WorldEvent;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.TickEvent;
public class EventLoadMGData
{
@SubscribeEvent
public void WorldEvent(WorldEvent.Load e)
{
World world = e.world;
if(!world.isRemote)
{
MGData worldData = MGData.forWorld(world);
worldData.markDirty();
}
}
}
+ Новый вопрос: Какой ID у нормального мира?)world.provider.dimensionId
Я уже знаю что такое markDirty, я говорю, метод readFromNBT не работает, и я не могу загрузить мои данные.Agravaine написал(а):markDirty - метод-оповещатель. Говорит, что данные были изменены и их нужно сохранить.
Айди у нормального мира - 0.
package com.svk.WarMod.miniGame.events;
import java.util.Calendar;
import java.util.EnumSet;
import com.svk.WarMod.miniGame.MGData;
import net.minecraft.world.World;
import net.minecraft.world.storage.MapStorage;
import net.minecraftforge.event.world.WorldEvent;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.TickEvent;
public class EventLoadMGData
{
public static MGData worldData = null;
@SubscribeEvent
public void WorldEvent(WorldEvent.Load e)
{
World world = e.world;
worldData = MGData.forWorld(world);
}
}
package com.svk.WarMod.miniGame;
import java.util.HashMap;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import net.minecraft.world.WorldSavedData;
import net.minecraft.world.storage.MapStorage;
public class MGData extends WorldSavedData
{
final static String key = "MGData";
private NBTTagCompound worldData = new NBTTagCompound();
public int debil = 0;
public static MGData forWorld(World world)
{
MapStorage storage = world.perWorldStorage;
MGData result = (MGData)storage.loadData(MGData.class, key);
if (result == null)
{
result = new MGData();
storage.setData(key, result);
}
return result;
}
public MGData() {
super(key);
}
public MGData(String key){
super(key);
}
@Override
public void readFromNBT(NBTTagCompound compound)
{
System.out.println("LOAD!");
worldData = compound.getCompoundTag("MGData");
}
@Override
public void writeToNBT(NBTTagCompound compound)
{
System.out.println("WRITE!");
compound.setTag("MGData", worldData);
}
public NBTTagCompound getNBT()
{
return worldData;
}
}
EventLoadMGData.worldData.getNBT().setInteger("team", 1);
EventLoadMGData.worldData.setDirty(true);