【総合】トピック立てるまでもない質問【Bukkit Plugin制作】
【総合】トピック立てるまでもない質問【Bukkit Plugin制作】
このトピックでは「Bukkit Plugin制作」フォーラムにおける単発質問を受け付けます
-
- 初心者
- 記事: 8
- 登録日時: 2019年10月14日(月) 15:34
LunaChatを参考にしたが・・・
LunaChatを参考にひらがなを漢字に変換するコードを書いたのですがエラーが発生します。
原因と解決策がわかる方いませんか?
原因と解決策がわかる方いませんか?
環境
Paper-1613(1.12.2)
Main.java
コード: 全て選択
@EventHandler
public void onChat(AsyncPlayerChatEvent e) {
String origin = e.getMessage();
String result = Color.replaceColorCode(origin);
result = MonsterKanaConverter.conv(result);
//result = GoogleIME.convByGoogleIME(result);
String one = Color.deleteColorCode(origin);
one = MonsterKanaConverter.conv(one);
String msg = ChatColor.GOLD + result + ChatColor.RED + "[" + ChatColor.GRAY + origin + ChatColor.RED + "]";
String user = e.getPlayer().getPlayerListName();
e.setFormat("[" + e.getPlayer().getWorld().getName() + "]<" + user + ChatColor.RESET + "> " + msg);
user = Color.deleteColorCode(user);
ChatCh.sendMessage(user + " ≫ " + one + "[" + origin + "]").queue();
}
}
GoogleIME.java
コード: 全て選択
public class GoogleIME {
private static final String GOOGLE_IME_URL =
"https://www.google.com/transliterate?langpair=ja-Hira|ja&text=";
public static String convByGoogleIME(String org) {
return conv(org);
}
// 変換の実行
private static String conv(String org) {
if (org.isEmpty()) {
return "";
}
HttpURLConnection urlconn = null;
BufferedReader reader = null;
try {
String baseurl;
String encode = "UTF-8";
baseurl = GOOGLE_IME_URL + URLEncoder.encode(org , "UTF-8");
URL url = new URL(baseurl);
urlconn = (HttpURLConnection)url.openConnection();
urlconn.setRequestMethod("GET");
urlconn.setInstanceFollowRedirects(false);
urlconn.connect();
reader = new BufferedReader(
new InputStreamReader(urlconn.getInputStream(), encode));
String json = CharStreams.toString(reader);
return parseJson(json);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if ( urlconn != null ) {
urlconn.disconnect();
}
if ( reader != null ) {
try {
reader.close();
} catch (IOException e) { // do nothing.
}
}
}
return "";
}
// デバッグ用エントリ
/**
* GoogleIMEの最初の変換候補を抽出して結合します
*
* @param json 変換元のJson形式の文字列
* @return 変換後の文字列
* @since 2.8.10
*/
public static String parseJson(String json) {
StringBuilder result = new StringBuilder();
for (JsonElement response : new Gson().fromJson(json, JsonArray.class)) {
result.append(response.getAsJsonArray().get(1).getAsJsonArray().get(0).getAsString());
}
return result.toString();
}
}
エラー
コード: 全て選択
[21:59:15 ERROR]: Could not pass event AsyncPlayerChatEvent to MLSPlugin v1.0-SNAPSHOT
org.bukkit.event.EventException: null
at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:72) ~[patched_1.12.2.jar:git-Paper-1613]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:74) ~[patched_1.12.2.jar:git-Paper-1613]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[patched_1.12.2.jar:git-Paper-1613]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:513) ~[patched_1.12.2.jar:git-Paper-1613]
at net.minecraft.server.v1_12_R1.PlayerConnection.chat(PlayerConnection.java:1393) ~[patched_1.12.2.jar:git-Paper-1613]
at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1308) ~[patched_1.12.2.jar:git-Paper-1613]
at net.minecraft.server.v1_12_R1.PacketPlayInChat$1.run(PacketPlayInChat.java:39) ~[patched_1.12.2.jar:git-Paper-1613]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.lang.ClassCastException: class sun.net.www.protocol.https.HttpsURLConnectionImpl cannot be cast to class sun.net.www.protocol.http.HttpURLConnection (sun.net.www.protocol.https.HttpsURLConnectionImpl and sun.net.www.protocol.http.HttpURLConnection are in module java.base of loader 'bootstrap')
at jp.dip.monsterlifeserver.mlsplugin.mlsplugin.API.GoogleIME.conv(GoogleIME.java:47) ~[?:?]
at jp.dip.monsterlifeserver.mlsplugin.mlsplugin.API.GoogleIME.convByGoogleIME(GoogleIME.java:29) ~[?:?]
at jp.dip.monsterlifeserver.mlsplugin.mlsplugin.Listener.Chat.onChat(Chat.java:59) ~[?:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor870.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:70) ~[patched_1.12.2.jar:git-Paper-1613]
... 11 more
Re: 【総合】トピック立てるまでもない質問【Bukkit Plugin制作】
javaには詳しくないので、もし既に検証していたらすみません。LunaChatを参考にひらがなを漢字に変換するコードを書いたのですがエラーが発生します。
原因と解決策がわかる方いませんか?
e.getMessage();
はnullである場合があるのではないでしょうか?
String.isEmptyはnull判定ができない?
GoogleIME.javaでは殆どをtry catchで握り潰しているのですが、先頭のifだけそれに含まれていないのでそこに注目しました。
検証としてオウム返しはできますか?これができれば、イベントは正しく発火しています。もしできなければ・・・どこでしょうね・・・
-
- 初心者
- 記事: 8
- 登録日時: 2019年10月14日(月) 15:34