質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

1841閲覧

Java spigot 1.13.2のプラグイン開発 if文がうまく動かず、エラーが出てしまい、エラー解決方法がわからない

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/12/05 11:43

####Minecraft 1.13.2 (spigot 1.13.2)のプラグイン作成でif文がうまく動作しない
##ソース

Java

1package com.gmail.rotoyutoriapp.ticketsystem; 2 3import org.bukkit.Bukkit; 4import org.bukkit.Material; 5import org.bukkit.block.data.Ageable; 6import org.bukkit.enchantments.Enchantment; 7import org.bukkit.entity.Player; 8import org.bukkit.event.EventHandler; 9import org.bukkit.event.Listener; 10import org.bukkit.event.block.BlockBreakEvent; 11import org.bukkit.event.player.PlayerJoinEvent; 12import org.bukkit.inventory.ItemStack; 13import org.bukkit.inventory.meta.ItemMeta; 14import org.bukkit.plugin.java.JavaPlugin; 15 16import java.io.*; 17import java.util.ArrayList; 18import java.util.List; 19 20public final class TicketSystem extends JavaPlugin implements Listener { 21 22 @Override 23 public void onEnable() { 24 // Plugin startup logic 25 getLogger().info("TicketSystem Enabled"); 26 Bukkit.getServer().getPluginManager().registerEvents(this, this); 27 } 28 29 @Override 30 public void onDisable() { 31 // Plugin shutdown logic 32 getLogger().info("TicketSystem Disabled"); 33 } 34 File dir; 35 @EventHandler 36 public void onJoin(PlayerJoinEvent j) { 37 Player p = j.getPlayer(); 38 String uuid = p.getUniqueId().toString(); 39 dir = new File("plugins/TicketSystem/DataBase/" + uuid); 40 if (!(dir.exists())) { 41 try { 42 dir.createNewFile(); 43 FileWriter file = new FileWriter("plugins/TicketSystem/DataBase/" + uuid); 44 PrintWriter pw = new PrintWriter(new BufferedWriter(file)); 45 FileReader filereader = new FileReader(dir); 46 pw.print(0); 47 pw.close(); 48 System.out.println("データーの作成を行いました。"); 49 } catch (java.io.IOException a) { 50 a.printStackTrace(); 51 } 52 } else { 53 System.out.println("ファイルが存在するため、データーの作成は行われませんでした。"); 54 } 55 } 56 @EventHandler 57 public void syuukaku(BlockBreakEvent e) { 58 Ageable age = (Ageable) e.getBlock().getBlockData(); 59 Player p = e.getPlayer(); 60 String uuid = p.getUniqueId().toString(); 61 if (e.getBlock().getType().equals(Material.WHEAT) && age.getAge() == 7) { 62 try { 63 BufferedReader filereader = new BufferedReader(new FileReader(dir)); 64 String data; 65 data = filereader.readLine(); 66 int keisan = Integer.valueOf(data) + 1; 67 68 FileWriter file = new FileWriter(dir); 69 PrintWriter pw = new PrintWriter(new BufferedWriter(file)); 70 pw.print(keisan); 71 int keisann = Integer.valueOf(data); 72 if (keisann == 300) { 73 pw.print(0); 74 pw.close(); 75 } else { 76 pw.close(); 77 } 78 } 79 catch(java.io.IOException a){ 80 a.printStackTrace(); 81 } 82 } else if (e.getBlock().getType().equals(Material.POTATOES) && age.getAge() == 7){ 83 try { 84 BufferedReader filereader = new BufferedReader(new FileReader(dir)); 85 String data; 86 data = filereader.readLine(); 87 int keisan = Integer.valueOf(data) + 1; 88 89 FileWriter file = new FileWriter(dir); 90 PrintWriter pw = new PrintWriter(new BufferedWriter(file)); 91 pw.print(keisan); 92 pw.close(); 93 } 94 catch(java.io.IOException a){ 95 a.printStackTrace(); 96 } 97 } else if (e.getBlock().getType().equals(Material.CARROTS) && age.getAge() == 7){ 98 try { 99 BufferedReader filereader = new BufferedReader(new FileReader(dir)); 100 String data; 101 data = filereader.readLine(); 102 int keisan = Integer.valueOf(data) + 1; 103 104 FileWriter file = new FileWriter(dir); 105 PrintWriter pw = new PrintWriter(new BufferedWriter(file)); 106 pw.print(keisan); 107 pw.close(); 108 } 109 catch(java.io.IOException a){ 110 a.printStackTrace(); 111 } 112 } else if (e.getBlock().getType().equals(Material.BEETROOTS) && age.getAge() == 3){ 113 try { 114 BufferedReader filereader = new BufferedReader(new FileReader(dir)); 115 String data; 116 data = filereader.readLine(); 117 int keisan = Integer.valueOf(data) + 1; 118 119 FileWriter file = new FileWriter(dir); 120 PrintWriter pw = new PrintWriter(new BufferedWriter(file)); 121 pw.print(keisan); 122 } 123 catch(java.io.IOException a) { 124 a.printStackTrace(); 125 } 126 } else { 127 System.out.println("不明なエラーが発生しました。"); 128 } 129 } 130}

###実現したいこと
dataに書き込まれている数が300に到達したときに、そのファイルをリセット(0を上書きしたい)したいです。
###エラー内容
300に到達したときに、if文が動かずに、コンソールにてエラーが出てしまう。

Java

1Could not pass event BlockBreakEvent to TicketSystem v1.0 2org.bukkit.event.EventException: null 3 at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:308) ~[spigot-1.13.2.jar:git-Spigot-a1ba5fe-3359cb1] 4 at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.13.2.jar:git-Spigot-a1ba5fe-3359cb1] 5 at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) ~[spigot-1.13.2.jar:git-Spigot-a1ba5fe-3359cb1] 6 at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) ~[spigot-1.13.2.jar:git-Spigot-a1ba5fe-3359cb1] 7 at net.minecraft.server.v1_13_R2.PlayerInteractManager.breakBlock(PlayerInteractManager.java:292) ~[spigot-1.13.2.jar:git-Spigot-a1ba5fe-3359cb1] 8 at net.minecraft.server.v1_13_R2.PlayerInteractManager.a(PlayerInteractManager.java:123) ~[spigot-1.13.2.jar:git-Spigot-a1ba5fe-3359cb1] 9 at net.minecraft.server.v1_13_R2.PlayerConnection.a(PlayerConnection.java:1167) ~[spigot-1.13.2.jar:git-Spigot-a1ba5fe-3359cb1] 10 at net.minecraft.server.v1_13_R2.PacketPlayInBlockDig.a(SourceFile:40) ~[spigot-1.13.2.jar:git-Spigot-a1ba5fe-3359cb1] 11 at net.minecraft.server.v1_13_R2.PacketPlayInBlockDig.a(SourceFile:10) ~[spigot-1.13.2.jar:git-Spigot-a1ba5fe-3359cb1] 12 at net.minecraft.server.v1_13_R2.PlayerConnectionUtils.a(SourceFile:10) ~[spigot-1.13.2.jar:git-Spigot-a1ba5fe-3359cb1] 13 at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_191] 14 at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_191] 15 at net.minecraft.server.v1_13_R2.SystemUtils.a(SourceFile:199) [spigot-1.13.2.jar:git-Spigot-a1ba5fe-3359cb1] 16 at net.minecraft.server.v1_13_R2.MinecraftServer.b(MinecraftServer.java:900) [spigot-1.13.2.jar:git-Spigot-a1ba5fe-3359cb1] 17 at net.minecraft.server.v1_13_R2.DedicatedServer.b(DedicatedServer.java:417) [spigot-1.13.2.jar:git-Spigot-a1ba5fe-3359cb1] 18 at net.minecraft.server.v1_13_R2.MinecraftServer.a(MinecraftServer.java:835) [spigot-1.13.2.jar:git-Spigot-a1ba5fe-3359cb1] 19 at net.minecraft.server.v1_13_R2.MinecraftServer.run(MinecraftServer.java:733) [spigot-1.13.2.jar:git-Spigot-a1ba5fe-3359cb1] 20 at java.lang.Thread.run(Unknown Source) [?:1.8.0_191] 21Caused by: java.lang.NullPointerException 22 at java.io.FileInputStream.<init>(Unknown Source) ~[?:1.8.0_191] 23 at java.io.FileReader.<init>(Unknown Source) ~[?:1.8.0_191] 24 at com.gmail.rotoyutoriapp.ticketsystem.TicketSystem.syuukaku(TicketSystem.java:63) ~[?:?] 25 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_191] 26 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191] 27 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191] 28 at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_191] 29 at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:304) ~[spigot-1.13.2.jar:git-Spigot-a1ba5fe-3359cb1] 30 ... 17 more

###動かしたい場所

Java

1 public void syuukaku(BlockBreakEvent e) { 2 Ageable age = (Ageable) e.getBlock().getBlockData(); 3 Player p = e.getPlayer(); 4 String uuid = p.getUniqueId().toString(); 5 if (e.getBlock().getType().equals(Material.WHEAT) && age.getAge() == 7) { 6 try { 7 BufferedReader filereader = new BufferedReader(new FileReader(dir)); 8 String data; 9 data = filereader.readLine(); 10 int keisan = Integer.valueOf(data) + 1; 11 12 FileWriter file = new FileWriter(dir); 13 PrintWriter pw = new PrintWriter(new BufferedWriter(file)); 14 pw.print(keisan); 15 int keisann = Integer.valueOf(data); 16 if (keisann == 300) { 17 pw.print(0); 18 pw.close(); 19 } else { 20 pw.close(); 21 } 22 } 23 catch(java.io.IOException a){ 24 a.printStackTrace(); 25 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

if文のところの、keisann == 300ではなく、keisann >= 300にしたらうまく動作しました。
回答、ありがとうございました。

投稿2018/12/19 10:05

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そもそもエラー原因の場所が違います。

plain

1Caused by: java.lang.NullPointerException 2 at java.io.FileInputStream.<init>(Unknown Source) ~[?:1.8.0_191] 3 at java.io.FileReader.<init>(Unknown Source) ~[?:1.8.0_191] 4 at com.gmail.rotoyutoriapp.ticketsystem.TicketSystem.syuukaku(TicketSystem.java:63) ~[?:?]

63行目が原因のようで、そこで呼び出しているFileInputStreamのコンストラクタでnullを渡し、NullPointerExceptionが発生しています。つまりtryの次の行ですね。

投稿2018/12/05 22:13

swordone

総合スコア20649

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/12/06 11:50

回答有り難うございます。 もう少し細かい解決方法を教えていただけると嬉しいです....
swordone

2018/12/06 15:05

dirがnullなんじゃないかということしかわかりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問