唯爱她°
本帖最后由 唯爱她° 于 2020-5-7 17:24 编辑
  1. public void Playerdeadlosemoney(PlayerDeathEvent e){
  2.             autorespawnlistener.lose(e.getEntity().getPlayer(),money);
  3.     }
复制代码
  1. public static void lose(Player p,double money){

  2.             economy.withdrawPlayer(p, money);

  3.     }
复制代码




这个vault前置,怎么才能设置死亡扣钱呢!

  1. <div><pre style='font-family: "Consolas", courier; background: #ffffff'><span style="color: #000000;&#10;">MoneyCmd</span><span style="color: #000000;&#10;">.</span><span style="color: #000000;&#10;">take</span><span style="color: #000000;&#10;">(</span><span style="color: #000000;&#10;">e</span><span style="color: #000000;&#10;">.</span><span style="color: #000000;&#10;">getEntity</span><span style="color: #000000;&#10;">(</span><span style="color: #000000;&#10;">)</span><span style="color: #000000;&#10;">.</span><span style="color: #000000;&#10;">getName</span><span style="color: #000000;&#10;">(</span><span style="color: #000000;&#10;">)</span><span style="color: #000000;&#10;">,</span><span style="color: #000000;&#10;"> </span><span style="font-weight: bold;&#10;color: #7f0055;&#10;">this</span><span style="color: #000000;&#10;">.</span><span style="color: #000000;&#10;">money</span><span style="color: #000000;&#10;">)</span><span style="color: #000000;&#10;">;</span></pre><b></b><i></i><u></u><sub></sub><sup></sup><strike></strike>
  2. </div><div><b></b><i></i><u></u><sub></sub><sup></sup><strike></strike>
  3. </div><div>public static void take(String player, double money)</div><div><pre style='font-family: "Consolas", courier; background: #ffffff'><span style="color: #000000;&#10;">economy</span><span style="color: #000000;&#10;">.</span><span style="color: #000000;&#10;">withdrawPlayer</span><span style="color: #000000;&#10;">(</span><span style="color: #000000;&#10;">player</span><span style="color: #000000;&#10;">,</span><span style="color: #000000;&#10;"> </span><span style="color: #000000;&#10;">money</span><span style="color: #000000;&#10;">)</span><span style="color: #000000;&#10;">;</span></pre><b></b><i></i><u></u><sub></sub><sup></sup><strike></strike>
  4. </div>
复制代码






为啥我之前测试页视这样定义的player,但是他withdraPlayer是有横杠的,另外怎么再bbs里发那种有横杠的文字





出现了一个神奇的地方:我百度查为啥有横线,然后查到了一个@Deprecated 这个
加上后不出现横线了,这个是啥呢!




南柯郡守
https://www.mcbbs.net/thread-1037730-1-2.html
看这篇贴子

William_Shi
@Deprecated 是过时或废弃的注解

IDE贴心的提示你,为你加上了横线
你在方法前面加上这个注解
意思是你自己写的方法也是过时或废弃的
治标不治本
我建议看一下楼上的教程并使用不过时的方法



唯爱她°
南柯郡守 发表于 2020-5-7 17:44
https://www.mcbbs.net/thread-1037730-1-2.html
看这篇贴子
  1. Alove_ issued server command: /kill Alove_
  2. [19:21:26] [Server thread/ERROR]: Could not pass event PlayerDeathEvent to Losemoney v1.0-SNAPSHOT
  3. org.bukkit.event.EventException: null
  4.         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:320) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  5.         at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  6.         at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:529) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  7.         at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:514) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  8.         at org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory.callPlayerDeathEvent(CraftEventFactory.java:726) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  9.         at net.minecraft.server.v1_14_R1.EntityPlayer.die(EntityPlayer.java:519) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  10.         at net.minecraft.server.v1_14_R1.EntityLiving.damageEntity(EntityLiving.java:1169) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  11.         at net.minecraft.server.v1_14_R1.EntityHuman.damageEntity(EntityHuman.java:769) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  12.         at net.minecraft.server.v1_14_R1.EntityPlayer.damageEntity(EntityPlayer.java:674) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  13.         at org.bukkit.craftbukkit.v1_14_R1.entity.CraftLivingEntity.damage(CraftLivingEntity.java:245) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  14.         at org.bukkit.craftbukkit.v1_14_R1.entity.CraftLivingEntity.damage(CraftLivingEntity.java:232) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  15.         at com.earth2me.essentials.commands.Commandkill.updatePlayer(Commandkill.java:41) ~[?:?]
  16.         at com.earth2me.essentials.commands.EssentialsLoopCommand.loopOnlinePlayers(EssentialsLoopCommand.java:98) ~[?:?]
  17.         at com.earth2me.essentials.commands.Commandkill.run(Commandkill.java:26) ~[?:?]
  18.         at com.earth2me.essentials.commands.EssentialsCommand.run(EssentialsCommand.java:162) ~[?:?]
  19.         at com.earth2me.essentials.commands.EssentialsCommand.run(EssentialsCommand.java:157) ~[?:?]
  20.         at com.earth2me.essentials.Essentials.onCommandEssentials(Essentials.java:545) ~[?:?]
  21.         at com.earth2me.essentials.Essentials.onCommand(Essentials.java:458) ~[?:?]
  22.         at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  23.         at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  24.         at org.bukkit.craftbukkit.v1_14_R1.CraftServer.dispatchCommand(CraftServer.java:710) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  25.         at net.minecraft.server.v1_14_R1.PlayerConnection.handleCommand(PlayerConnection.java:1641) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  26.         at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:1481) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  27.         at net.minecraft.server.v1_14_R1.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  28.         at net.minecraft.server.v1_14_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  29.         at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  30.         at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  31.         at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(SourceFile:144) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  32.         at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  33.         at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(SourceFile:118) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  34.         at net.minecraft.server.v1_14_R1.MinecraftServer.aX(MinecraftServer.java:908) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  35.         at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:901) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  36.         at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeAll(SourceFile:103) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  37.         at net.minecraft.server.v1_14_R1.MinecraftServer.sleepForTick(MinecraftServer.java:884) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  38.         at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:818) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  39.         at java.lang.Thread.run(Unknown Source) [?:1.8.0_251]
  40. Caused by: java.lang.NullPointerException
  41.         at top.zjzdmc.datehoer.losemoney.event.LoseMoneyListener.onPlayerdeath(LoseMoneyListener.java:17) ~[?:?]
  42.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_251]
  43.         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_251]
  44.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_251]
  45.         at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_251]
  46.         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:316) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
  47.         ... 35 more
复制代码

大佬,报错了。。。

唯爱她°
William_Shi 发表于 2020-5-7 19:20
@Deprecated 是过时或废弃的注解

IDE贴心的提示你,为你加上了横线

他那个方法,我把上面换成string就是划掉的
换成Player不是划掉的
这样的是啥意思呢

William_Shi
唯爱她° 发表于 2020-5-7 19:26
他那个方法,我把上面换成string就是划掉的
换成Player不是划掉的
这样的是啥意思呢 ...

我求你了,先学Java同一个方法名可以有不同的参数形式
然后根据传入的参数形式决定使用哪种方法
可能其中一个方法过时,但另外一个不过时
尽管方法名一样,但是其参数不一样(Player类型、String类型不一样)




William_Shi
唯爱她° 发表于 2020-5-7 19:22
大佬,报错了。。。

请补上你的代码请截图代码,并且带上行号
只有报错没代码,我怎么看??????

唯爱她°
William_Shi 发表于 2020-5-7 19:33
我求你了,先学Java同一个方法名可以有不同的参数形式
然后根据传入的参数形式决定使用哪种方法
可能其中 ...

行,明白了。能麻烦看下报错吗

南柯郡守
唯爱她° 发表于 2020-5-7 19:35
行,明白了。能麻烦看下报错吗

你给的报错都看不到你行号和代码


William_Shi
唯爱她° 发表于 2020-5-7 19:35
行,明白了。能麻烦看下报错吗

我刚刚回复了,请给代码行号以及完整代码
除非你认为你代码是商业机密不可以给任何人看到

唯爱她°
William_Shi 发表于 2020-5-7 19:40
我刚刚回复了,请给代码行号以及完整代码
除非你认为你代码是商业机密不可以给任何人看到 ...
  1. package top.zjzdmc.datehoer.losemoney.event;

  2. import net.milkbowl.vault.economy.Economy;
  3. import net.milkbowl.vault.economy.EconomyResponse;
  4. import org.bukkit.entity.Player;
  5. import org.bukkit.event.EventHandler;
  6. import org.bukkit.event.Listener;
  7. import org.bukkit.event.entity.PlayerDeathEvent;
  8. import top.zjzdmc.datehoer.losemoney.Losemoney;

  9. public class LoseMoneyListener implements Listener {
  10.     private static Economy econ = null;

  11.     @EventHandler
  12.     public void onPlayerdeath(PlayerDeathEvent e){
  13.         Player player = e.getEntity().getPlayer();
  14.         double money = Losemoney.instance.getConfig().getDouble("LoseMoney");
  15.         EconomyResponse take = econ.withdrawPlayer(player,money);
  16.         if(take.transactionSuccess()){
  17.             player.sendMessage("扣除"+money);
  18.         }
  19.         else{
  20.             System.out.println(take.errorMessage);
  21.         }
  22.     }
  23. }

  24. [code]package top.zjzdmc.datehoer.losemoney;

  25. import net.milkbowl.vault.economy.Economy;
  26. import net.milkbowl.vault.economy.EconomyResponse;
  27. import org.bukkit.entity.Player;
  28. import org.bukkit.event.EventHandler;
  29. import org.bukkit.event.entity.PlayerDeathEvent;
  30. import org.bukkit.plugin.RegisteredServiceProvider;
  31. import org.bukkit.plugin.java.JavaPlugin;
  32. import top.zjzdmc.datehoer.losemoney.event.LoseMoneyListener;

  33. public final class Losemoney extends JavaPlugin {
  34.     private static Economy econ = null;
  35.     public static Losemoney instance;
  36.     @Override
  37.     public void onEnable() {

  38.         // Plugin startup logic
  39.         getLogger().info("[LoseMoney]§6插件以加载");
  40.         if (!setupEconomy() ) {                                 //判断是否有vault!
  41.             getLogger().info("没有找到经济插件!!请安装vault");
  42.             getServer().getPluginManager().disablePlugin(this);
  43.             return;
  44.         }
  45.         getConfig().options().copyDefaults();
  46.         saveDefaultConfig();
  47.         getServer().getPluginManager().registerEvents(new LoseMoneyListener(),this);
  48.     }
  49.     private boolean setupEconomy() {
  50.         if (getServer().getPluginManager().getPlugin("Vault") == null) {
  51.             return false;
  52.         }
  53.         RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
  54.         if (rsp == null) {
  55.             return false;
  56.         }
  57.         econ = rsp.getProvider();
  58.         return econ != null;
  59.     }


  60.     @Override
  61.     public void onDisable() {
  62.         // Plugin shutdown logic
  63.     }
  64. }
复制代码

[/code]


唯爱她°
南柯郡守 发表于 2020-5-7 19:38
你给的报错都看不到你行号和代码

在下面的回复里了

William_Shi

截图!
你把一堆类的代码混在一起了!
我怎么看的了行号??????

唯爱她°
William_Shi 发表于 2020-5-7 19:51
截图!
你把一堆类的代码混在一起了!
我怎么看的了行号??????
  1. package top.zjzdmc.datehoer.losemoney;

  2. import net.milkbowl.vault.economy.Economy;
  3. import net.milkbowl.vault.economy.EconomyResponse;
  4. import org.bukkit.entity.Player;
  5. import org.bukkit.event.EventHandler;
  6. import org.bukkit.event.entity.PlayerDeathEvent;
  7. import org.bukkit.plugin.RegisteredServiceProvider;
  8. import org.bukkit.plugin.java.JavaPlugin;
  9. import top.zjzdmc.datehoer.losemoney.event.LoseMoneyListener;

  10. public final class Losemoney extends JavaPlugin {
  11.     private static Economy econ = null;
  12.     public static Losemoney instance;
  13.     @Override
  14.     public void onEnable() {

  15.         // Plugin startup logic
  16.         getLogger().info("[LoseMoney]§6插件以加载");
  17.         if (!setupEconomy() ) {                                 //判断是否有vault!
  18.             getLogger().info("没有找到经济插件!!请安装vault");
  19.             getServer().getPluginManager().disablePlugin(this);
  20.             return;
  21.         }
  22.         getConfig().options().copyDefaults();
  23.         saveDefaultConfig();
  24.         getServer().getPluginManager().registerEvents(new LoseMoneyListener(),this);
  25.     }
  26.     private boolean setupEconomy() {
  27.         if (getServer().getPluginManager().getPlugin("Vault") == null) {
  28.             return false;
  29.         }
  30.         RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
  31.         if (rsp == null) {
  32.             return false;
  33.         }
  34.         econ = rsp.getProvider();
  35.         return econ != null;
  36.     }


  37.     @Override
  38.     public void onDisable() {
  39.         // Plugin shutdown logic
  40.     }
  41. }
复制代码

唯爱她°
  1. package top.zjzdmc.datehoer.losemoney.event;

  2. import net.milkbowl.vault.economy.Economy;
  3. import net.milkbowl.vault.economy.EconomyResponse;
  4. import org.bukkit.entity.Player;
  5. import org.bukkit.event.EventHandler;
  6. import org.bukkit.event.Listener;
  7. import org.bukkit.event.entity.PlayerDeathEvent;
  8. import top.zjzdmc.datehoer.losemoney.Losemoney;

  9. public class LoseMoneyListener implements Listener {
  10.     private static Economy econ = null;

  11.     @EventHandler
  12.     public void onPlayerdeath(PlayerDeathEvent e){
  13.         Player player = e.getEntity().getPlayer();
  14.         double money = Losemoney.instance.getConfig().getDouble("LoseMoney");
  15.         EconomyResponse take = econ.withdrawPlayer(player,money);
  16.         if(take.transactionSuccess()){
  17.             player.sendMessage("扣除"+money);
  18.         }
  19.         else{
  20.             System.out.println(take.errorMessage);
  21.         }
  22.     }
  23. }
复制代码

William_Shi
唯爱她° 发表于 2020-5-7 19:49
在下面的回复里了

反正就是这个栈帧

Caused by: java.lang.NullPointerException
        at top.zjzdmc.datehoer.losemoney.event.LoseMoneyListener.onPlayerdeath(LoseMoneyListener.java:17) ~[?:?]

出现了NPE

南柯郡守
扣钱的逻辑应该是Losemoney.econ而不是第二个类里面的econ
建议巩固下基础逻辑知识

William_Shi

Caused by: java.lang.NullPointerException
        at top.zjzdmc.datehoer.losemoney.event.LoseMoneyListener.onPlayerdeath(LoseMoneyListener.java:17) ~[?:?]

出现了NPE



咱先学java行不?你直接对着null操作钱?

你要获取你主类的econ
然后比如说赋值给这个econ
再进行操作

下一页 最后一页