Сохранение данных на сервере и клиенте

Статус
В этой теме нельзя размещать новые ответы.
7,099
324
1,510
Как реализовать сохранение каких-то данных(строк, int-в) на диске, в зависимости от мира, в котором игрок? Если локальный, то на диске пользователя, если на сервере, то с серверной стороны.
Заранее спасибо.
 
608
5
15
WorldSaveData
 
7,099
324
1,510
Там можно произвольные данные хранить?
И в каком пакете это?

Еще нашел тему http://forum.mcmodding.ru/viewtopic.php?id=3662
Там просто прописывается путь для сохранения, независимо от стороны, но если игрок играет на сервере ему не нужен  дубляж данных на своем диске.
 
7,099
324
1,510
Спасибо, а в каком он пакете?
[merge_posts_bbcode]Добавлено: 09.04.2016 00:32:41[/merge_posts_bbcode]

Еще забыл сказать: версия 1.7.10
 
7,099
324
1,510
Спасибо)
[merge_posts_bbcode]Добавлено: 09.04.2016 01:03:21[/merge_posts_bbcode]

Не пашет, сделал через сохранение в файл руками, только не знаю, будет ли правильно работать на серве - не могу тестить(подробности во флудилке)
 
7,099
324
1,510
А можете дать пример?
 
7,099
324
1,510
Спасибо:)
 
7,099
324
1,510
Решил делать через собственную запись в файл(подтвердилось, что правильно пашет на серве), но чтение не работает: метод onBlockActivated выполняется 1 раз, ошибок не вылазит, последующие разы не вызывается вообще(проверял вставкой в начало метода println("a")

Полный код:
Код:
//MyBlock.scala
override def onBlockActivated(world: World, p_149727_2_ : Int, p_149727_3_ : Int, p_149727_4_ : Int, p_149727_5_ : EntityPlayer, p_149727_6_ : Int, p_149727_7_ : Float, p_149727_8_ : Float, p_149727_9_ : Float):Boolean={
if (!world.isRemote){
println("a")
println(Main.readFromFile("test.txt"))
//какой-нибудь серверный код
}
return false
}

Код:
//Main.scala
def readFromFile(par1FileName:String)
{
  var filePath="./config/MyMod/"+par1FileName
  var jsonfull = new StringBuilder();
  var bufReader:BufferedReader=null

  if (new File(filePath).exists())
  {
    try
    {
      bufReader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), Charset.forName("UTF-8")));
      jsonfull = new StringBuilder();
      var tempstring:String=""
      while ((tempstring = bufReader.readLine()) != null) { jsonfull.append(tempstring + "\n"); }
      bufReader.close();
    }
    catch {
      case e: FileNotFoundException => println(e.getMessage)
      case e: IOException => println(e.getMessage)
    }
  }
  else
  {
    try { new File(filePath).createNewFile(); }
    catch{case e: IOException => println(e.getMessage)}
  }

  return jsonfull.toString();
}
def writeToFile(par1FileName:String, par2String:String)
{
  var configFolder = new File("./config/MyMod/");
  configFolder.mkdir();
  try
  {
    var writer = new FileWriter("./config/ExtraTools/" + par1FileName, false);
    writer.write(par2String);
    writer.close();
  }
}
 
1,137
5
3
Код:
fun read(path: Path): String {
    return String(Files.readAllBytes(path))
}

fun write(path: Path, output: String) {
    Files.write(path, output.toByteArray())
}
 
7,099
324
1,510
XuPuPG написал(а):
Почему именно скала?Почему ты выбрал скалу?
Красивый язык, а еще я о нем не все знаю.
[merge_posts_bbcode]Добавлено: 09.04.2016 19:24:09[/merge_posts_bbcode]

wilah написал(а):
Код:
fun read(path: Path): String {
    return String(Files.readAllBytes(path))
}

fun write(path: Path, output: String) {
    Files.write(path, output.toByteArray())
}
Спасибо, попробую.

[merge_posts_bbcode]Добавлено: 09.04.2016 19:44:55[/merge_posts_bbcode]

Пашет, всем спасибо, можно закрывать.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху