前提・実現したいこと
ここに質問の内容を詳しく書いてください。
Java Spigot 1.13.2 (Minecraft)にてプラグインを作っています。
大まかな内容としては、プレイヤーがサーバーに接続したときに、ファイルを作成して、そのファイルに、プレイヤーが小麦を収穫したときに、プレイヤー接続時に作成したファイルの数字(ログインしたときには0が記入されるようになっている。)に+1をしてそれを記入して、ファイルを保存したいです。
発生している問題・エラーメッセージ
プレイヤーが小麦を収穫したときに、行う処理にて、テキストデータがリセットされてしまいます。(プレイヤーがログインしたときに入力される0も消えて、何もない状態になる。)
該当のソースコード
Java
1package com.gmail.rotoyutoriapp.ticketsystem; 2 3import org.bukkit.Bukkit; 4import org.bukkit.Material; 5import org.bukkit.block.data.Ageable; 6import org.bukkit.entity.Player; 7import org.bukkit.event.EventHandler; 8import org.bukkit.event.Listener; 9import org.bukkit.event.block.BlockBreakEvent; 10import org.bukkit.event.player.PlayerJoinEvent; 11import org.bukkit.plugin.java.JavaPlugin; 12 13import java.io.*; 14 15public final class TicketSystem extends JavaPlugin implements Listener { 16 17 @Override 18 public void onEnable() { 19 // Plugin startup logic 20 getLogger().info("TicketSystem Enabled"); 21 Bukkit.getServer().getPluginManager().registerEvents(this, this); 22 } 23 24 @Override 25 public void onDisable() { 26 // Plugin shutdown logic 27 getLogger().info("TicketSystem Disabled"); 28 } 29 File dir; 30 @EventHandler 31 public void onJoin(PlayerJoinEvent j) { 32 Player p = j.getPlayer(); 33 String uuid = p.getUniqueId().toString(); 34 dir = new File("plugins/TicketSystem/DataBase/" + uuid); 35 if (!(dir.exists())) { 36 try { 37 dir.createNewFile(); 38 FileWriter file = new FileWriter("plugins/TicketSystem/DataBase/" + uuid); 39 PrintWriter pw = new PrintWriter(new BufferedWriter(file)); 40 FileReader filereader = new FileReader(dir); 41 pw.println(0); 42 pw.close(); 43 System.out.println("データーの作成を行いました。"); 44 } catch (java.io.IOException a) { 45 System.out.println("エラー"); 46 } 47 } else { 48 System.out.println("ファイルが存在するため、データーの作成は行われませんでした。"); 49 } 50 } 51 @EventHandler 52 public void syuukaku(BlockBreakEvent e) { 53 Ageable age = (Ageable) e.getBlock().getBlockData(); 54 Player p = e.getPlayer(); 55 String uuid = p.getUniqueId().toString(); 56 if (e.getBlock().getType().equals(Material.WHEAT) && age.getAge() == 7) { 57 try { 58 FileWriter file = new FileWriter("plugins/TicketSystem/DataBase/" + uuid); 59 PrintWriter pw = new PrintWriter(new BufferedWriter(file)); 60 FileReader filereader = new FileReader(dir); 61 int data; 62 while ((data = filereader.read()) != -1) { 63 } 64 int keisan = data + 1; 65 pw.print(keisan); 66 pw.close(); 67 } 68 catch(java.io.IOException a){ 69 System.out.println("エラー"); 70 } 71 } else if (e.getBlock().getType().equals(Material.POTATOES) && age.getAge() == 7){ 72 System.out.println("じゃがいも"); 73 } else if (e.getBlock().getType().equals(Material.CARROTS) && age.getAge() == 7){ 74 System.out.println("人参"); 75 } else if (e.getBlock().getType().equals(Material.BEETROOTS) && age.getAge() == 3){ 76 System.out.print("ビートルート"); 77 } else { 78 System.out.println("不明なエラーが発生しました。"); 79 } 80 } 81}
試したこと
printlnをprintに変えたり、writeに変えてみたが、変わらなかった。
補足情報(FW/ツールのバージョンなど)
Windows10
Java 8
開発ソフト
Intellij IDEA CommunityEdition 2018
回答2件
あなたの回答
tips
プレビュー