【総合】トピック立てるまでもない質問【Bukkit Plugin制作】

Modding・サーバPlugin制作・ツール制作など、開発関連の質問があればこちらにお願い致します。
フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999
  • (PostNo.322811)

Re: 【総合】トピック立てるまでもない質問【Bukkit Plugin制作】

投稿記事by takumi_ » 2018年12月21日(金) 11:41

amata1219 さんが書きました:
takumi_ さんが書きました:ありがとうございます。無事解決致しました。少し気になったのですがcontinueするとき{}がないのですがつけなくてもいいのですか(僕は一応つけましたけど)


(Spigotの話でなくJavaの文法の話になってしまいますけど、)
if文の条件を満たした時の処理が1つであれば中括弧を省略出来ます。
例えば下記の記述ですとプレイヤー名がSteveでない場合はHelloと表示されません。
コード: 全て選択
Player player = e.getPlayer();

if(!player.getName().equals("Steve"))
return;

player.sendMessage("Hello");


次の例の場合、プレイヤー名がSteveであればHelloとByeの両方が表示されます。
逆にプレイヤー名がSteveでなければByeとだけ表示されます。
コード: 全て選択
Player player = e.getPlayer();

if(player.getName().equals("Steve"))
player.sendMessage("Hello");

player.sendMessage("Bye");

そうなんでしたか...知りませんでした。ありがとうございます
takumi_
ID:ad6fdda5
木を殴ってる
 
記事: 15
登録日時: 2018年9月24日(月) 20:52

  • (PostNo.322812)

Re: 【総合】トピック立てるまでもない質問【Bukkit Plugin制作】

投稿記事by amata1219 » 2018年12月21日(金) 12:22

rona_tombo さんが書きました:amata1219さんありがとうございます。
その件については無事解決することができました。
続けての質問申し訳ありませんが引っかかってしまったので質問させていただきます。

Configの読み込みにてエラーが出ています
コード: 全て選択
[21:06:05 ERROR]: [org.bukkit.configuration.serialization.ConfigurationSerialization] Could not call method 'public static org.bukkit.Location org.bukkit.Location.deserialize(java.util.Map)' of class org.bukkit.Location for deserialization
java.lang.IllegalArgumentException: unknown world
        at org.bukkit.Location.deserialize(Location.java:1014) ~[patched_1.12.2.jar:git-Paper-1587]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_181]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_181]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_181]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_181]
        at org.bukkit.configuration.serialization.ConfigurationSerialization.deserializeViaMethod(ConfigurationSerialization.java:79) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.serialization.ConfigurationSerialization.deserialize(ConfigurationSerialization.java:119) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.serialization.ConfigurationSerialization.deserializeObject(ConfigurationSerialization.java:197) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:35) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:207) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:196) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:462) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:183) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:443) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:519) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:26) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:207) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:196) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:462) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:183) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:443) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:519) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:26) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:207) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:196) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:161) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:147) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:524) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.Yaml.load(Yaml.java:437) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:53) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:162) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:130) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:178) ~[patched_1.12.2.jar:git-Paper-1587]
        at cf.rona_tombo.skullshop.utils.ConfigManager.loadFiles(ConfigManager.java:36) ~[?:?]
        at cf.rona_tombo.skullshop.SkullShop.onEnable(SkullShop.java:22) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:395) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:344) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.MinecraftServer.t(MinecraftServer.java:442) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.MinecraftServer.l(MinecraftServer.java:403) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.MinecraftServer.a(MinecraftServer.java:341) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:289) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:616) ~[patched_1.12.2.jar:git-Paper-1587]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]


Locationのデシリアライズにて失敗しているようですが、保存はConfigAPIにて行っており手動編集はしていません。
またConfigManager.javaの36行目は
コード: 全て選択
shops = YamlConfiguration.loadConfiguration(shopFile);

です
なおYMLは以下の形式です
コード: 全て選択
shops:
  '1':
    name: test
    location:
      ==: org.bukkit.Location
      world: c
      x: 198.55628559280308
      y: 4.0
      z: 252.53811453852532
      pitch: 1.050003
      yaw: 184.05072

解決法ご存知の方いらっしゃったらご教授お願いいたします。


Location#serialize()とLocation.deserialize(Map<String, Object>)を用いれば問題無く変換出来ます。
アバター
amata1219
ID:08109f3c
石掘り
 
記事: 98
登録日時: 2016年11月18日(金) 16:46

  • (PostNo.322813)

Re: 【総合】トピック立てるまでもない質問【Bukkit Plugin制作】

投稿記事by rona_tombo » 2018年12月21日(金) 12:31

amata1219 さんが書きました:
rona_tombo さんが書きました:amata1219さんありがとうございます。
その件については無事解決することができました。
続けての質問申し訳ありませんが引っかかってしまったので質問させていただきます。

Configの読み込みにてエラーが出ています
コード: 全て選択
[21:06:05 ERROR]: [org.bukkit.configuration.serialization.ConfigurationSerialization] Could not call method 'public static org.bukkit.Location org.bukkit.Location.deserialize(java.util.Map)' of class org.bukkit.Location for deserialization
java.lang.IllegalArgumentException: unknown world
        at org.bukkit.Location.deserialize(Location.java:1014) ~[patched_1.12.2.jar:git-Paper-1587]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_181]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_181]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_181]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_181]
        at org.bukkit.configuration.serialization.ConfigurationSerialization.deserializeViaMethod(ConfigurationSerialization.java:79) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.serialization.ConfigurationSerialization.deserialize(ConfigurationSerialization.java:119) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.serialization.ConfigurationSerialization.deserializeObject(ConfigurationSerialization.java:197) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:35) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:207) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:196) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:462) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:183) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:443) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:519) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:26) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:207) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:196) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:462) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:183) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:443) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:519) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:26) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:207) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:196) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:161) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:147) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:524) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.Yaml.load(Yaml.java:437) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:53) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:162) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:130) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:178) ~[patched_1.12.2.jar:git-Paper-1587]
        at cf.rona_tombo.skullshop.utils.ConfigManager.loadFiles(ConfigManager.java:36) ~[?:?]
        at cf.rona_tombo.skullshop.SkullShop.onEnable(SkullShop.java:22) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:395) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:344) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.MinecraftServer.t(MinecraftServer.java:442) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.MinecraftServer.l(MinecraftServer.java:403) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.MinecraftServer.a(MinecraftServer.java:341) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:289) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:616) ~[patched_1.12.2.jar:git-Paper-1587]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]


Locationのデシリアライズにて失敗しているようですが、保存はConfigAPIにて行っており手動編集はしていません。
またConfigManager.javaの36行目は
コード: 全て選択
shops = YamlConfiguration.loadConfiguration(shopFile);

です
なおYMLは以下の形式です
コード: 全て選択
shops:
  '1':
    name: test
    location:
      ==: org.bukkit.Location
      world: c
      x: 198.55628559280308
      y: 4.0
      z: 252.53811453852532
      pitch: 1.050003
      yaw: 184.05072

解決法ご存知の方いらっしゃったらご教授お願いいたします。


Location#serialize()とLocation.deserialize(Map<String, Object>)を用いれば問題無く変換出来ます。

そもそもymlをFileConfigurationに読み込む時点でエラーが出ています…
以上よろしくお願いします
rona_tombo
ID:198c1c92
木を殴ってる
 
記事: 31
登録日時: 2018年5月04日(金) 23:50

  • (PostNo.322827)

Re: 【総合】トピック立てるまでもない質問【Bukkit Plugin制作】

投稿記事by takumi_ » 2018年12月22日(土) 14:39

死んだらお金が減るという仕組みを作りたく、
コード: 全て選択
@EventHandler
   public void damage(EntityDamageEvent e) {

      saveDefaultConfig();
      FileConfiguration config = getConfig();
      Entity entity = e.getEntity();
      if(entity.getType() == EntityType.PLAYER)
      {
         if(entity instanceof Player)
         {
            Player pl = (Player) entity;
            int MIN = config.getInt(pl.getPlayer().getName()+".MIN_HP");
            int MAX = config.getInt(pl.getPlayer().getName()+".MAX_HP");
            if(e.getDamage() >= MIN && e.getDamage() < 9999999)
            {
               pl.damage(9999999);
               config.set(pl.getName()+".MIN_HP", 0);
               new BukkitRunnable()
               {
                  @Override
                  public void run()
                  {
                     TranslatableComponent component = new TranslatableComponent("§a§m*<<<<<§r §a[ Health: "+MIN+" / "+MAX+" Satiety: "+pl.getFoodLevel()+" / 20 ] §m>>>>>*");
                     pl.spigot().sendMessage(ChatMessageType.ACTION_BAR, component);
                     Bukkit.broadcastMessage("<< "+pl.getCustomName()+"が死亡した。 >>");
                     config.set(pl.getName()+".money", config.getInt(pl.getName()+".money")*4/5);
                     pl.sendMessage("あなたは"+((config.getInt(pl.getName()+".money")*5/4)-config.getInt(pl.getName()+".money"))+"moneyを失った");
                  }
               }.runTaskLater(this, 1);
            } else if(e.getDamage() < 9999999){
               pl.setHealth(10);
               config.set(pl.getName()+".MIN_HP", config.getInt(pl.getName()+".MIN_HP")-e.getDamage()/2);
               e.setDamage(0);
               TranslatableComponent component = new TranslatableComponent("§a§m*<<<<<§r §a[ Health: "+MIN+" / "+MAX+" Satiety: "+pl.getFoodLevel()+" / 20 ] §m>>>>>*");
               pl.spigot().sendMessage(ChatMessageType.ACTION_BAR, component);
            }
            saveConfig();
            reloadConfig();
         }
      }
   }

こうしたのですが、config.set(pl.getName()+".money", config.getInt(pl.getName()+".money")*4/5);が保存されず困っています。
何故保存されないのでしょう。
そして気にならなかったとは思いますが、何故EntityDamageEventにしてるかというと
PlayerDeathEventにすると上記のpl.damage(9999999);をすると何故か二回イベントが行われてしまうからです。
できれば二つ回答していただけるとありがたいです。返信待ってます。
takumi_
ID:ad6fdda5
木を殴ってる
 
記事: 15
登録日時: 2018年9月24日(月) 20:52

  • (PostNo.322833)

Re: 【総合】トピック立てるまでもない質問【Bukkit Plugin制作】

投稿記事by amata1219 » 2018年12月22日(土) 19:51

rona_tombo さんが書きました:
amata1219 さんが書きました:
rona_tombo さんが書きました:amata1219さんありがとうございます。
その件については無事解決することができました。
続けての質問申し訳ありませんが引っかかってしまったので質問させていただきます。

Configの読み込みにてエラーが出ています
コード: 全て選択
[21:06:05 ERROR]: [org.bukkit.configuration.serialization.ConfigurationSerialization] Could not call method 'public static org.bukkit.Location org.bukkit.Location.deserialize(java.util.Map)' of class org.bukkit.Location for deserialization
java.lang.IllegalArgumentException: unknown world
        at org.bukkit.Location.deserialize(Location.java:1014) ~[patched_1.12.2.jar:git-Paper-1587]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_181]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_181]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_181]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_181]
        at org.bukkit.configuration.serialization.ConfigurationSerialization.deserializeViaMethod(ConfigurationSerialization.java:79) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.serialization.ConfigurationSerialization.deserialize(ConfigurationSerialization.java:119) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.serialization.ConfigurationSerialization.deserializeObject(ConfigurationSerialization.java:197) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:35) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:207) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:196) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:462) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:183) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:443) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:519) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:26) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:207) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:196) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:462) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:183) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:443) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:519) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:26) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:207) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:196) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:161) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:147) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:524) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.Yaml.load(Yaml.java:437) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:53) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:162) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:130) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:178) ~[patched_1.12.2.jar:git-Paper-1587]
        at cf.rona_tombo.skullshop.utils.ConfigManager.loadFiles(ConfigManager.java:36) ~[?:?]
        at cf.rona_tombo.skullshop.SkullShop.onEnable(SkullShop.java:22) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:395) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:344) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.MinecraftServer.t(MinecraftServer.java:442) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.MinecraftServer.l(MinecraftServer.java:403) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.MinecraftServer.a(MinecraftServer.java:341) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:289) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:616) ~[patched_1.12.2.jar:git-Paper-1587]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]


Locationのデシリアライズにて失敗しているようですが、保存はConfigAPIにて行っており手動編集はしていません。
またConfigManager.javaの36行目は
コード: 全て選択
shops = YamlConfiguration.loadConfiguration(shopFile);

です
なおYMLは以下の形式です
コード: 全て選択
shops:
  '1':
    name: test
    location:
      ==: org.bukkit.Location
      world: c
      x: 198.55628559280308
      y: 4.0
      z: 252.53811453852532
      pitch: 1.050003
      yaw: 184.05072

解決法ご存知の方いらっしゃったらご教授お願いいたします。


Location#serialize()とLocation.deserialize(Map<String, Object>)を用いれば問題無く変換出来ます。

そもそもymlをFileConfigurationに読み込む時点でエラーが出ています…
以上よろしくお願いします


エラーログを貼って下さい。
前回ご提示された物はLocationの変換に関する物でしたので参考になりません。

takumi_ さんが書きました:死んだらお金が減るという仕組みを作りたく、
コード: 全て選択
@EventHandler
   public void damage(EntityDamageEvent e) {

      saveDefaultConfig();
      FileConfiguration config = getConfig();
      Entity entity = e.getEntity();
      if(entity.getType() == EntityType.PLAYER)
      {
         if(entity instanceof Player)
         {
            Player pl = (Player) entity;
            int MIN = config.getInt(pl.getPlayer().getName()+".MIN_HP");
            int MAX = config.getInt(pl.getPlayer().getName()+".MAX_HP");
            if(e.getDamage() >= MIN && e.getDamage() < 9999999)
            {
               pl.damage(9999999);
               config.set(pl.getName()+".MIN_HP", 0);
               new BukkitRunnable()
               {
                  @Override
                  public void run()
                  {
                     TranslatableComponent component = new TranslatableComponent("§a§m*<<<<<§r §a[ Health: "+MIN+" / "+MAX+" Satiety: "+pl.getFoodLevel()+" / 20 ] §m>>>>>*");
                     pl.spigot().sendMessage(ChatMessageType.ACTION_BAR, component);
                     Bukkit.broadcastMessage("<< "+pl.getCustomName()+"が死亡した。 >>");
                     config.set(pl.getName()+".money", config.getInt(pl.getName()+".money")*4/5);
                     pl.sendMessage("あなたは"+((config.getInt(pl.getName()+".money")*5/4)-config.getInt(pl.getName()+".money"))+"moneyを失った");
                  }
               }.runTaskLater(this, 1);
            } else if(e.getDamage() < 9999999){
               pl.setHealth(10);
               config.set(pl.getName()+".MIN_HP", config.getInt(pl.getName()+".MIN_HP")-e.getDamage()/2);
               e.setDamage(0);
               TranslatableComponent component = new TranslatableComponent("§a§m*<<<<<§r §a[ Health: "+MIN+" / "+MAX+" Satiety: "+pl.getFoodLevel()+" / 20 ] §m>>>>>*");
               pl.spigot().sendMessage(ChatMessageType.ACTION_BAR, component);
            }
            saveConfig();
            reloadConfig();
         }
      }
   }

こうしたのですが、config.set(pl.getName()+".money", config.getInt(pl.getName()+".money")*4/5);が保存されず困っています。
何故保存されないのでしょう。
そして気にならなかったとは思いますが、何故EntityDamageEventにしてるかというと
PlayerDeathEventにすると上記のpl.damage(9999999);をすると何故か二回イベントが行われてしまうからです。
できれば二つ回答していただけるとありがたいです。返信待ってます。


遅延実行処理中でコンフィグのセーブとリロードをしていないため書き込み内容を保存出来ていません。
run()内で書き換え処理実行後にsaveConfig()とreloadConfig()を実行して下さい。

コード: 全て選択
               new BukkitRunnable()
               {
                  @Override
                  public void run()
                  {
                     TranslatableComponent component = new TranslatableComponent("§a§m*<<<<<§r §a[ Health: "+MIN+" / "+MAX+" Satiety: "+pl.getFoodLevel()+" / 20 ] §m>>>>>*");
                     pl.spigot().sendMessage(ChatMessageType.ACTION_BAR, component);
                     Bukkit.broadcastMessage("<< "+pl.getCustomName()+"が死亡した。 >>");
                     config.set(pl.getName()+".money", config.getInt(pl.getName()+".money")*4/5);

                     saveConfig();
                     reloadConfig();
                     //セーブとリロード
                     pl.sendMessage("あなたは"+((config.getInt(pl.getName()+".money")*5/4)-config.getInt(pl.getName()+".money"))+"moneyを失った");
                  }
               }.runTaskLater(this, 1);


PlayerDeathEventが2度発火してしまう問題は私も原因がイマイチ分かりませんが、プレイヤーに設定出来る最大のHPには限度がありますのでもしかしたらあまりに大きすぎる値の動作は保証されていないのかもしれません。
プレイヤーのHPを特に変更していなければ、damage(20)と変更して動作確認してみて下さい。
(ダメージ系のイベントは基本的にEntityDamageByEntityEventを使うのをおすすめします。)
アバター
amata1219
ID:09713522
石掘り
 
記事: 98
登録日時: 2016年11月18日(金) 16:46

  • (PostNo.322843)

Re: 【総合】トピック立てるまでもない質問【Bukkit Plugin制作】

投稿記事by ゲスト » 2018年12月23日(日) 03:16

プレイヤーのネームタグに表示される名前を変更する方法はありますか?
player.setCustomName()があったので使ってみましたがこれでは上手くいかず他に思い付けません
ゲスト
ID:cdf59e8b
 

  • (PostNo.322844)

Re: 【総合】トピック立てるまでもない質問【Bukkit Plugin制作】

投稿記事by amata1219 » 2018年12月23日(日) 09:46

ゲスト さんが書きました:プレイヤーのネームタグに表示される名前を変更する方法はありますか?
player.setCustomName()があったので使ってみましたがこれでは上手くいかず他に思い付けません


Player#setDisplayName(String)を使えば大丈夫です。
コード: 全て選択
Player player = ~;
player.setDisplayName("aaaaa");
//表示名をaaaaaに変更
アバター
amata1219
ID:29745805
石掘り
 
記事: 98
登録日時: 2016年11月18日(金) 16:46

  • (PostNo.322917)

Re: 【総合】トピック立てるまでもない質問【Bukkit Plugin制作】

投稿記事by takumi_ » 2018年12月25日(火) 19:05

amata1219 さんが書きました:
rona_tombo さんが書きました:
amata1219 さんが書きました:
rona_tombo さんが書きました:amata1219さんありがとうございます。
その件については無事解決することができました。
続けての質問申し訳ありませんが引っかかってしまったので質問させていただきます。

Configの読み込みにてエラーが出ています
コード: 全て選択
[21:06:05 ERROR]: [org.bukkit.configuration.serialization.ConfigurationSerialization] Could not call method 'public static org.bukkit.Location org.bukkit.Location.deserialize(java.util.Map)' of class org.bukkit.Location for deserialization
java.lang.IllegalArgumentException: unknown world
        at org.bukkit.Location.deserialize(Location.java:1014) ~[patched_1.12.2.jar:git-Paper-1587]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_181]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_181]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_181]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_181]
        at org.bukkit.configuration.serialization.ConfigurationSerialization.deserializeViaMethod(ConfigurationSerialization.java:79) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.serialization.ConfigurationSerialization.deserialize(ConfigurationSerialization.java:119) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.serialization.ConfigurationSerialization.deserializeObject(ConfigurationSerialization.java:197) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:35) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:207) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:196) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:462) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:183) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:443) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:519) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:26) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:207) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:196) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:462) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:183) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:443) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:519) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:26) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:207) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:196) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:161) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:147) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:524) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.yaml.snakeyaml.Yaml.load(Yaml.java:437) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:53) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:162) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:130) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:178) ~[patched_1.12.2.jar:git-Paper-1587]
        at cf.rona_tombo.skullshop.utils.ConfigManager.loadFiles(ConfigManager.java:36) ~[?:?]
        at cf.rona_tombo.skullshop.SkullShop.onEnable(SkullShop.java:22) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:395) ~[patched_1.12.2.jar:git-Paper-1587]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:344) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.MinecraftServer.t(MinecraftServer.java:442) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.MinecraftServer.l(MinecraftServer.java:403) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.MinecraftServer.a(MinecraftServer.java:341) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:289) ~[patched_1.12.2.jar:git-Paper-1587]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:616) ~[patched_1.12.2.jar:git-Paper-1587]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]


Locationのデシリアライズにて失敗しているようですが、保存はConfigAPIにて行っており手動編集はしていません。
またConfigManager.javaの36行目は
コード: 全て選択
shops = YamlConfiguration.loadConfiguration(shopFile);

です
なおYMLは以下の形式です
コード: 全て選択
shops:
  '1':
    name: test
    location:
      ==: org.bukkit.Location
      world: c
      x: 198.55628559280308
      y: 4.0
      z: 252.53811453852532
      pitch: 1.050003
      yaw: 184.05072

解決法ご存知の方いらっしゃったらご教授お願いいたします。


Location#serialize()とLocation.deserialize(Map<String, Object>)を用いれば問題無く変換出来ます。

そもそもymlをFileConfigurationに読み込む時点でエラーが出ています…
以上よろしくお願いします


エラーログを貼って下さい。
前回ご提示された物はLocationの変換に関する物でしたので参考になりません。

takumi_ さんが書きました:死んだらお金が減るという仕組みを作りたく、
コード: 全て選択
@EventHandler
   public void damage(EntityDamageEvent e) {

      saveDefaultConfig();
      FileConfiguration config = getConfig();
      Entity entity = e.getEntity();
      if(entity.getType() == EntityType.PLAYER)
      {
         if(entity instanceof Player)
         {
            Player pl = (Player) entity;
            int MIN = config.getInt(pl.getPlayer().getName()+".MIN_HP");
            int MAX = config.getInt(pl.getPlayer().getName()+".MAX_HP");
            if(e.getDamage() >= MIN && e.getDamage() < 9999999)
            {
               pl.damage(9999999);
               config.set(pl.getName()+".MIN_HP", 0);
               new BukkitRunnable()
               {
                  @Override
                  public void run()
                  {
                     TranslatableComponent component = new TranslatableComponent("§a§m*<<<<<§r §a[ Health: "+MIN+" / "+MAX+" Satiety: "+pl.getFoodLevel()+" / 20 ] §m>>>>>*");
                     pl.spigot().sendMessage(ChatMessageType.ACTION_BAR, component);
                     Bukkit.broadcastMessage("<< "+pl.getCustomName()+"が死亡した。 >>");
                     config.set(pl.getName()+".money", config.getInt(pl.getName()+".money")*4/5);
                     pl.sendMessage("あなたは"+((config.getInt(pl.getName()+".money")*5/4)-config.getInt(pl.getName()+".money"))+"moneyを失った");
                  }
               }.runTaskLater(this, 1);
            } else if(e.getDamage() < 9999999){
               pl.setHealth(10);
               config.set(pl.getName()+".MIN_HP", config.getInt(pl.getName()+".MIN_HP")-e.getDamage()/2);
               e.setDamage(0);
               TranslatableComponent component = new TranslatableComponent("§a§m*<<<<<§r §a[ Health: "+MIN+" / "+MAX+" Satiety: "+pl.getFoodLevel()+" / 20 ] §m>>>>>*");
               pl.spigot().sendMessage(ChatMessageType.ACTION_BAR, component);
            }
            saveConfig();
            reloadConfig();
         }
      }
   }

こうしたのですが、config.set(pl.getName()+".money", config.getInt(pl.getName()+".money")*4/5);が保存されず困っています。
何故保存されないのでしょう。
そして気にならなかったとは思いますが、何故EntityDamageEventにしてるかというと
PlayerDeathEventにすると上記のpl.damage(9999999);をすると何故か二回イベントが行われてしまうからです。
できれば二つ回答していただけるとありがたいです。返信待ってます。


遅延実行処理中でコンフィグのセーブとリロードをしていないため書き込み内容を保存出来ていません。
run()内で書き換え処理実行後にsaveConfig()とreloadConfig()を実行して下さい。

コード: 全て選択
               new BukkitRunnable()
               {
                  @Override
                  public void run()
                  {
                     TranslatableComponent component = new TranslatableComponent("§a§m*<<<<<§r §a[ Health: "+MIN+" / "+MAX+" Satiety: "+pl.getFoodLevel()+" / 20 ] §m>>>>>*");
                     pl.spigot().sendMessage(ChatMessageType.ACTION_BAR, component);
                     Bukkit.broadcastMessage("<< "+pl.getCustomName()+"が死亡した。 >>");
                     config.set(pl.getName()+".money", config.getInt(pl.getName()+".money")*4/5);

                     saveConfig();
                     reloadConfig();
                     //セーブとリロード
                     pl.sendMessage("あなたは"+((config.getInt(pl.getName()+".money")*5/4)-config.getInt(pl.getName()+".money"))+"moneyを失った");
                  }
               }.runTaskLater(this, 1);


PlayerDeathEventが2度発火してしまう問題は私も原因がイマイチ分かりませんが、プレイヤーに設定出来る最大のHPには限度がありますのでもしかしたらあまりに大きすぎる値の動作は保証されていないのかもしれません。
プレイヤーのHPを特に変更していなければ、damage(20)と変更して動作確認してみて下さい。
(ダメージ系のイベントは基本的にEntityDamageByEntityEventを使うのをおすすめします。)

返信ありがとうございます。少し原因がわからなくて探ってたら返信が遅れてしまいました。申し訳ございません。
ダメージ系はDamgageBy~~~がいいとおすすめされたので使っています。
damage(20)に変更してみてもできなかったのでHealth(0)にしたらきちんと動作しました。この辺は謎でしたが、無事解決致しました。ありがとうございます。
takumi_
ID:ad6fdda5
木を殴ってる
 
記事: 15
登録日時: 2018年9月24日(月) 20:52

  • (PostNo.322920)

Re: 【総合】トピック立てるまでもない質問【Bukkit Plugin制作】

投稿記事by signal » 2018年12月25日(火) 20:19

質問させていただきます。
pluginを書き続け、ふと行数を見たらもうすぐ2000を超えそうだったので質問させていただきます。
今回の目的はクラス分割です。とりあえず調べ
コード: 全て選択
extends パッケージ名

と書いてあったのですが、これをテストとして、コマンドのクラス分割したほうに入れればconfigが扱えるのかと思いましたが、
コード: 全て選択
An internal ....

と表示されてしまいました。
この事から普通のイベントでも使えないだろうと思ったので悩んでいたのですが他にいい方法(Event)を教えてください。
コマンドはクラス分割せずにやったらできたのでそっちは解決しました。
signal
ID:ad6fdda5
木を殴ってる
 
記事: 23
登録日時: 2018年9月25日(火) 20:48

  • (PostNo.322948)

Re: 【総合】トピック立てるまでもない質問【Bukkit Plugin制作】

投稿記事by 薄ら氷 雪 » 2018年12月26日(水) 20:52

spuash918さん yotasakiさん 前のログインメッセージのランダムの件は、ありがとうございました!
コマンドプラグインを作ってるのですが、
/ora [適当な文字] と打った時にAn internal error occurred while attempting to perform this commandってでました。
/ora [適当な文字] と打った時に
/ora Config Reload (/ora C R) - コンフィグをリロードします。
/ora Config Info (/ora C I) - コンフィグの設定を表示します。
と、表示したいのですがどうすればいいかわかりません。

教えていただけたら幸いです。

ソースコード
コード: 全て選択
package com.usuraiyukito;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;

import net.md_5.bungee.api.ChatColor;

public class Commands extends JavaPlugin implements Listener{   
   
   @Override
   public void onEnable()
   {
      Bukkit.getConsoleSender().sendMessage(ChatColor.MAGIC + "開始");
      getServer().getPluginManager().registerEvents(this, this);
   }
   
   public void onDisable()
   {
      Bukkit.getConsoleSender().sendMessage(ChatColor.MAGIC + "終了");
   }

   @Override
   public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {

      String subCommand0 = args.length == 0 ? "" : args[0];
      String subCommand1 = args.length == 0 ? "" : args[1];
      
      if (command.getName().equalsIgnoreCase("ora")) {
            if ((subCommand0.equalsIgnoreCase("Config")) || (subCommand0.equalsIgnoreCase("C"))) {
               if((subCommand1.equalsIgnoreCase("Reload")) || (subCommand1.equalsIgnoreCase("R"))) {
                  if ((sender instanceof Player)) {
                     sender.sendMessage("Oluginのコンフィグがリロードされました。");
                     reloadConfig();
                     saveConfig();
                     return true;
                  }
                     if(sender instanceof ConsoleCommandSender) {
                     sender.sendMessage("Oluginのコンフィグがリロードされました。");
                     reloadConfig();
                     saveConfig();
                     return true;
                  }
                  sender.sendMessage(ChatColor.GREEN + "このコマンドはプレーヤーとコンソールでのみ使用可能です。");
                  return true;
               }
                  
                  sender.sendMessage(new String[] {
                        "/ora Config Reload (/ora C R) - コンフィグをリロードします。",
                        "/ora Config Info (/ora C I) - コンフィグの設定を表示します。"
                  });
                  
                  if((subCommand1.equalsIgnoreCase("Info")) || (subCommand1.equalsIgnoreCase("I"))) {
                     sender.sendMessage("Message1");
                     sender.sendMessage("Message2");
                     sender.sendMessage("Message3");
                     sender.sendMessage("Message4");
                     sender.sendMessage("Message5");
                  return true;
               }
               sender.sendMessage(new String[] {
                     "/ora Config Reload (/ora C R) - コンフィグをリロードします。",
                     "/ora Config Info (/ora C I) - コンフィグの設定を表示します。"
               });return true;
            }
            sender.sendMessage(new String[] {
                  "/ora Config Reload (/ora C R) - コンフィグをリロードします。",
                  "/ora Config Info (/ora C I) - コンフィグの設定を表示します。"
            });return true;
      }return true;
   }
}


エラーログ
コード: 全て選択
[20:05:45 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'ora' in plugin Commands v1.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:648) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PlayerConnection.handleCommand(PlayerConnection.java:1399) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1234) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_181]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_181]
        at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:748) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_181]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
        at com.usuraiyukito.Commands.onCommand(Commands.java:31) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        ... 15 more

解決済み
このサイトを見ていろいろかえたら解決できましたm(__)m
https://ch.nicovideo.jp/minecrafter/blomaga/ar972400
薄ら氷 雪
ID:f6485117
水から上がったとこ
 
記事: 7
登録日時: 2018年6月24日(日) 13:03

  • (PostNo.323125)

Re: 【総合】トピック立てるまでもない質問【Bukkit Plugin制作】

投稿記事by Sea of trees » 2018年12月29日(土) 23:41

amata1219 さんが書きました:
ゲスト さんが書きました:プレイヤーのネームタグに表示される名前を変更する方法はありますか?
player.setCustomName()があったので使ってみましたがこれでは上手くいかず他に思い付けません


Player#setDisplayName(String)を使えば大丈夫です。
コード: 全て選択
Player player = ~;
player.setDisplayName("aaaaa");
//表示名をaaaaaに変更


質問内容
おなじく、プレイヤーのネームタグ変更で悩んでいます。
player.setDisplayName(ChatColor.RED+player.getName());
では変更できないようです。

1.8以降(?)からplayer.getHandler()が削除されてるっぽくこの手を使った変更もできないようです。
(自分はSpigot1.8.8で開発をしています)
他ではplayer.getClass().getMethod("getHandler")から取得している...みたいなものもありましたがよくわかりませんでした。
これ以外にもパケットを使った変更方法もありましたがこちらもさっぱりでして...
他力本願な質問ですが、頭の悪い私にご教授願います。

なお、他APIはできるだけ使いたくありません。
他APIを使わないと不可能なら諦めます。


すいません、自己解決しました。
やり方だけ載せておきます。
コード: 全て選択
   Scoreboard sb = Bukkit.getScoreboardManager().getMainScoreboard();
   if(sb.getTeam("red")!=null) {
      sb.getTeam("red").unregister();
   }
   Team t = sb.registerNewTeam("red");
   t.setPrefix(ChatColor.RED+"");
   sb.getTeam("red").addEntry(player.getName());

このような感じでスコアボードを使って変更することができるようです。
以下の動画がわかりやすかったです。
https://youtu.be/UAkF-Lu2vlE
なんか、最近多忙な気がするなぁ....
アバター
Sea of trees
ID:bdaa8c76
木を殴ってる
 
記事: 35
登録日時: 2015年3月01日(日) 15:27

1つ前へ

Return to 質問:開発・制作関連

x