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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

1750閲覧

(Minecraft Plugin) elseのfalseの時の処理について

RiFu

総合スコア11

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2017/12/28 09:55

MinecraftのPluginについての質問です。初心者なので、文が多少変なのはご了承ください(__)
if(a.equals(Action.LEFT_CLICK_BLOCK)) { if(b.getType().equals(Material.EMERALD_BLOCK)) { p.sendMessage(ChatColor.LIGHT_PURPLE + "テキスト"); if(p.getHealth() <= p.getMaxHealth() - 1) { p.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION,300,2)); p.spawnParticle(Particle.END_ROD, event.getPlayer().getLocation(), 10);
これはHPが低いとき特定のブロックを左クリックすると、HPが徐々に回復していくというものですが、それと同時に p.sendMessage(ChatColor.LIGHT_PURPLE + "回復した");というテキストも同時に表示されるようにしています。

}else { if(p.getHealth() == p.getMaxHealth());{ }

そこでHPが最大(マックス)の時は、回復しないようにしているのですが、「回復した」だけ表示されるようになってしまいます。これを表示しない代わりに、「HPが最大なので回復する必要はない」などのテキストを表示するようにするには、どうすればいいですか?

Java

1@SuppressWarnings("deprecation") 2 @EventHandler 3 public void onInteract(PlayerInteractEvent event) { 4 Action a = event.getAction(); 5 Player p = event.getPlayer(); 6 Block b = event.getClickedBlock(); 7 8 if(a.equals(Action.LEFT_CLICK_BLOCK)) { 9 if(b.getType().equals(Material.EMERALD_BLOCK)) { 10 p.sendMessage(ChatColor.LIGHT_PURPLE + "回復した"); 11 if(p.getHealth() <= p.getMaxHealth() - 1) { 12 p.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION,300,2)); 13 p.spawnParticle(Particle.END_ROD, event.getPlayer().getLocation(), 10); 14 } 15 }else { 16 if(p.getHealth() == p.getMaxHealth());{ 17 18 } 19 } 20 21 }

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

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

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

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

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

guest

回答1

0

ベストアンサー

こういうことでしょうか?
処理の順序を落ち着いて考えれば自明かと思いますが。

Java

1if(b.getType().equals(Material.EMERALD_BLOCK)) { 2 if(p.getHealth() == p.getMaxHealth()) { 3 4 } 5 else { 6 p.sendMessage(ChatColor.LIGHT_PURPLE + "回復した"); 7 p.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION,300,2)); 8 p.spawnParticle(Particle.END_ROD, event.getPlayer().getLocation(), 10); 9 } 10}

投稿2017/12/28 10:02

LouiS0616

総合スコア35658

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

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

RiFu

2017/12/28 10:15

ありがとうございます。上記のようにしてみましたが、前と同様「回復した」が表示されてしまいます。 ```java @SuppressWarnings("deprecation") @EventHandler public void onInteract(PlayerInteractEvent event) { Action a = event.getAction(); Player p = event.getPlayer(); Block b = event.getClickedBlock(); if(a.equals(Action.LEFT_CLICK_BLOCK)) { if(b.getType().equals(Material.EMERALD_BLOCK)) { p.sendMessage(ChatColor.LIGHT_PURPLE + "回復した"); if(p.getHealth() <= p.getMaxHealth() - 1) { p.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION,300,2)); p.spawnParticle(Particle.END_ROD, event.getPlayer().getLocation(), 10); } }else { iif(b.getType().equals(Material.EMERALD_BLOCK)) { if(p.getHealth() == p.getMaxHealth()) { } else { p.sendMessage(ChatColor.LIGHT_PURPLE + "回復した"); p.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION,300,2)); p.spawnParticle(Particle.END_ROD, event.getPlayer().getLocation(), 10); } } } } } } ``` https://hub.spigotmc.org/javadocs/spigot/ こちらのサイトをもとに作成しました。
LouiS0616

2017/12/28 10:20 編集

まず日本語でロジックを考えて下さい。 質問本文に記載されたコードは、こう読みます。 ・ もし左クリックされたら _・ もしブロックがエメラルドブロックなら __・ 『回復した』と表示する __・ もし体力がマックスでないなら ___・ポーションエフェクトを表示する ___・spawnParticleする (マインクラフトやったことないのでわからん) _・ そうでなければ (『もしブロックがエメラルドブロックなら』に対応) __・ 体力がマックスなら 註:空白を_で代替しています。
LouiS0616

2017/12/28 10:22 編集

慣れるまでは、上記のように日本語でまず考えなくてはなりません。 だから『考えれば自明』と言ったのです。
RiFu

2017/12/29 00:41

ありがとうございます!考えてみたら出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問