本帖最后由 唯爱她° 于 2020-5-7 17:24 编辑 
复制代码复制代码
这个vault前置,怎么才能设置死亡扣钱呢!
复制代码
为啥我之前测试页视这样定义的player,但是他withdraPlayer是有横杠的,另外怎么再bbs里发那种有横杠的文字
 
 
出现了一个神奇的地方:我百度查为啥有横线,然后查到了一个@Deprecated 这个
加上后不出现横线了,这个是啥呢!
 
 
- public void Playerdeadlosemoney(PlayerDeathEvent e){
 
-             autorespawnlistener.lose(e.getEntity().getPlayer(),money);
 
- }
- public static void lose(Player p,double money){
 
 
-             economy.withdrawPlayer(p, money);
 
 
- }
这个vault前置,怎么才能设置死亡扣钱呢!
- <div><pre style='font-family: "Consolas", courier; background: #ffffff'><span style="color: #000000;
">MoneyCmd</span><span style="color: #000000;
">.</span><span style="color: #000000;
">take</span><span style="color: #000000;
">(</span><span style="color: #000000;
">e</span><span style="color: #000000;
">.</span><span style="color: #000000;
">getEntity</span><span style="color: #000000;
">(</span><span style="color: #000000;
">)</span><span style="color: #000000;
">.</span><span style="color: #000000;
">getName</span><span style="color: #000000;
">(</span><span style="color: #000000;
">)</span><span style="color: #000000;
">,</span><span style="color: #000000;
"> </span><span style="font-weight: bold;
color: #7f0055;
">this</span><span style="color: #000000;
">.</span><span style="color: #000000;
">money</span><span style="color: #000000;
">)</span><span style="color: #000000;
">;</span></pre><b></b><i></i><u></u><sub></sub><sup></sup><strike></strike>
 
- </div><div><b></b><i></i><u></u><sub></sub><sup></sup><strike></strike>
 
- </div><div>public static void take(String player, double money)</div><div><pre style='font-family: "Consolas", courier; background: #ffffff'><span style="color: #000000;
">economy</span><span style="color: #000000;
">.</span><span style="color: #000000;
">withdrawPlayer</span><span style="color: #000000;
">(</span><span style="color: #000000;
">player</span><span style="color: #000000;
">,</span><span style="color: #000000;
"> </span><span style="color: #000000;
">money</span><span style="color: #000000;
">)</span><span style="color: #000000;
">;</span></pre><b></b><i></i><u></u><sub></sub><sup></sup><strike></strike>
 
- </div>
为啥我之前测试页视这样定义的player,但是他withdraPlayer是有横杠的,另外怎么再bbs里发那种有横杠的文字
 
出现了一个神奇的地方:我百度查为啥有横线,然后查到了一个@Deprecated 这个
加上后不出现横线了,这个是啥呢!
 
@Deprecated 是过时或废弃的注解
IDE贴心的提示你,为你加上了横线
你在方法前面加上这个注解
意思是你自己写的方法也是过时或废弃的
治标不治本
我建议看一下楼上的教程并使用不过时的方法
IDE贴心的提示你,为你加上了横线
你在方法前面加上这个注解
意思是你自己写的方法也是过时或废弃的
治标不治本
我建议看一下楼上的教程并使用不过时的方法
南柯郡守 发表于 2020-5-7 17:44
https://www.mcbbs.net/thread-1037730-1-2.html
看这篇贴子
- Alove_ issued server command: /kill Alove_
 
- [19:21:26] [Server thread/ERROR]: Could not pass event PlayerDeathEvent to Losemoney v1.0-SNAPSHOT
 
- org.bukkit.event.EventException: null
 
-         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:320) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:529) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:514) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory.callPlayerDeathEvent(CraftEventFactory.java:726) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.EntityPlayer.die(EntityPlayer.java:519) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.EntityLiving.damageEntity(EntityLiving.java:1169) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.EntityHuman.damageEntity(EntityHuman.java:769) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.EntityPlayer.damageEntity(EntityPlayer.java:674) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at org.bukkit.craftbukkit.v1_14_R1.entity.CraftLivingEntity.damage(CraftLivingEntity.java:245) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at org.bukkit.craftbukkit.v1_14_R1.entity.CraftLivingEntity.damage(CraftLivingEntity.java:232) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at com.earth2me.essentials.commands.Commandkill.updatePlayer(Commandkill.java:41) ~[?:?]
 
-         at com.earth2me.essentials.commands.EssentialsLoopCommand.loopOnlinePlayers(EssentialsLoopCommand.java:98) ~[?:?]
 
-         at com.earth2me.essentials.commands.Commandkill.run(Commandkill.java:26) ~[?:?]
 
-         at com.earth2me.essentials.commands.EssentialsCommand.run(EssentialsCommand.java:162) ~[?:?]
 
-         at com.earth2me.essentials.commands.EssentialsCommand.run(EssentialsCommand.java:157) ~[?:?]
 
-         at com.earth2me.essentials.Essentials.onCommandEssentials(Essentials.java:545) ~[?:?]
 
-         at com.earth2me.essentials.Essentials.onCommand(Essentials.java:458) ~[?:?]
 
-         at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at org.bukkit.craftbukkit.v1_14_R1.CraftServer.dispatchCommand(CraftServer.java:710) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.PlayerConnection.handleCommand(PlayerConnection.java:1641) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:1481) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(SourceFile:144) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(SourceFile:118) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.MinecraftServer.aX(MinecraftServer.java:908) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:901) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeAll(SourceFile:103) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.MinecraftServer.sleepForTick(MinecraftServer.java:884) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:818) [Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
-         at java.lang.Thread.run(Unknown Source) [?:1.8.0_251]
 
- Caused by: java.lang.NullPointerException
 
-         at top.zjzdmc.datehoer.losemoney.event.LoseMoneyListener.onPlayerdeath(LoseMoneyListener.java:17) ~[?:?]
 
-         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_251]
 
-         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_251]
 
-         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_251]
 
-         at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_251]
 
-         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:316) ~[Spigot1.14.4.jar:git-Spigot-1981d55-3e7b386]
 
- ... 35 more
大佬,报错了。。。
William_Shi 发表于 2020-5-7 19:20
@Deprecated 是过时或废弃的注解
IDE贴心的提示你,为你加上了横线
他那个方法,我把上面换成string就是划掉的
换成Player不是划掉的
这样的是啥意思呢
唯爱她° 发表于 2020-5-7 19:26
他那个方法,我把上面换成string就是划掉的
换成Player不是划掉的
这样的是啥意思呢 ...
我求你了,先学Java同一个方法名可以有不同的参数形式
然后根据传入的参数形式决定使用哪种方法
可能其中一个方法过时,但另外一个不过时
尽管方法名一样,但是其参数不一样(Player类型、String类型不一样)
William_Shi 发表于 2020-5-7 19:33
我求你了,先学Java同一个方法名可以有不同的参数形式
然后根据传入的参数形式决定使用哪种方法
可能其中 ...
唯爱她° 发表于 2020-5-7 19:35
行,明白了。能麻烦看下报错吗
你给的报错都看不到你行号和代码
William_Shi 发表于 2020-5-7 19:40
我刚刚回复了,请给代码行号以及完整代码
除非你认为你代码是商业机密不可以给任何人看到 ...
- package top.zjzdmc.datehoer.losemoney.event;
 
 
- import net.milkbowl.vault.economy.Economy;
 
- import net.milkbowl.vault.economy.EconomyResponse;
 
- import org.bukkit.entity.Player;
 
- import org.bukkit.event.EventHandler;
 
- import org.bukkit.event.Listener;
 
- import org.bukkit.event.entity.PlayerDeathEvent;
 
- import top.zjzdmc.datehoer.losemoney.Losemoney;
 
 
- public class LoseMoneyListener implements Listener {
 
-     private static Economy econ = null;
 
 
-     @EventHandler
 
-     public void onPlayerdeath(PlayerDeathEvent e){
 
-         Player player = e.getEntity().getPlayer();
 
-         double money = Losemoney.instance.getConfig().getDouble("LoseMoney");
 
-         EconomyResponse take = econ.withdrawPlayer(player,money);
 
-         if(take.transactionSuccess()){
 
-             player.sendMessage("扣除"+money);
 
-         }
 
-         else{
 
-             System.out.println(take.errorMessage);
 
-         }
 
-     }
 
- }
 
 
- [code]package top.zjzdmc.datehoer.losemoney;
 
 
- import net.milkbowl.vault.economy.Economy;
 
- import net.milkbowl.vault.economy.EconomyResponse;
 
- import org.bukkit.entity.Player;
 
- import org.bukkit.event.EventHandler;
 
- import org.bukkit.event.entity.PlayerDeathEvent;
 
- import org.bukkit.plugin.RegisteredServiceProvider;
 
- import org.bukkit.plugin.java.JavaPlugin;
 
- import top.zjzdmc.datehoer.losemoney.event.LoseMoneyListener;
 
 
- public final class Losemoney extends JavaPlugin {
 
-     private static Economy econ = null;
 
-     public static Losemoney instance;
 
-     @Override
 
-     public void onEnable() {
 
 
-         // Plugin startup logic
 
-         getLogger().info("[LoseMoney]§6插件以加载");
 
-         if (!setupEconomy() ) {                                 //判断是否有vault!
 
-             getLogger().info("没有找到经济插件!!请安装vault");
 
-             getServer().getPluginManager().disablePlugin(this);
 
-             return;
 
-         }
 
-         getConfig().options().copyDefaults();
 
-         saveDefaultConfig();
 
-         getServer().getPluginManager().registerEvents(new LoseMoneyListener(),this);
 
-     }
 
-     private boolean setupEconomy() {
 
-         if (getServer().getPluginManager().getPlugin("Vault") == null) {
 
-             return false;
 
-         }
 
-         RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
 
-         if (rsp == null) {
 
-             return false;
 
-         }
 
-         econ = rsp.getProvider();
 
-         return econ != null;
 
-     }
 
 
 
-     @Override
 
-     public void onDisable() {
 
-         // Plugin shutdown logic
 
-     }
 
- }
 
[/code]
南柯郡守 发表于 2020-5-7 19:38
你给的报错都看不到你行号和代码
在下面的回复里了
William_Shi 发表于 2020-5-7 19:51
截图!
你把一堆类的代码混在一起了!
我怎么看的了行号??????
- package top.zjzdmc.datehoer.losemoney;
 
 
- import net.milkbowl.vault.economy.Economy;
 
- import net.milkbowl.vault.economy.EconomyResponse;
 
- import org.bukkit.entity.Player;
 
- import org.bukkit.event.EventHandler;
 
- import org.bukkit.event.entity.PlayerDeathEvent;
 
- import org.bukkit.plugin.RegisteredServiceProvider;
 
- import org.bukkit.plugin.java.JavaPlugin;
 
- import top.zjzdmc.datehoer.losemoney.event.LoseMoneyListener;
 
 
- public final class Losemoney extends JavaPlugin {
 
-     private static Economy econ = null;
 
-     public static Losemoney instance;
 
-     @Override
 
-     public void onEnable() {
 
 
-         // Plugin startup logic
 
-         getLogger().info("[LoseMoney]§6插件以加载");
 
-         if (!setupEconomy() ) {                                 //判断是否有vault!
 
-             getLogger().info("没有找到经济插件!!请安装vault");
 
-             getServer().getPluginManager().disablePlugin(this);
 
-             return;
 
-         }
 
-         getConfig().options().copyDefaults();
 
-         saveDefaultConfig();
 
-         getServer().getPluginManager().registerEvents(new LoseMoneyListener(),this);
 
-     }
 
-     private boolean setupEconomy() {
 
-         if (getServer().getPluginManager().getPlugin("Vault") == null) {
 
-             return false;
 
-         }
 
-         RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
 
-         if (rsp == null) {
 
-             return false;
 
-         }
 
-         econ = rsp.getProvider();
 
-         return econ != null;
 
-     }
 
 
 
-     @Override
 
-     public void onDisable() {
 
-         // Plugin shutdown logic
 
-     }
 
- }
 
- package top.zjzdmc.datehoer.losemoney.event;
 
 
- import net.milkbowl.vault.economy.Economy;
 
- import net.milkbowl.vault.economy.EconomyResponse;
 
- import org.bukkit.entity.Player;
 
- import org.bukkit.event.EventHandler;
 
- import org.bukkit.event.Listener;
 
- import org.bukkit.event.entity.PlayerDeathEvent;
 
- import top.zjzdmc.datehoer.losemoney.Losemoney;
 
 
- public class LoseMoneyListener implements Listener {
 
-     private static Economy econ = null;
 
 
-     @EventHandler
 
-     public void onPlayerdeath(PlayerDeathEvent e){
 
-         Player player = e.getEntity().getPlayer();
 
-         double money = Losemoney.instance.getConfig().getDouble("LoseMoney");
 
-         EconomyResponse take = econ.withdrawPlayer(player,money);
 
-         if(take.transactionSuccess()){
 
-             player.sendMessage("扣除"+money);
 
-         }
 
-         else{
 
-             System.out.println(take.errorMessage);
 
-         }
 
-     }
 
- }
 
唯爱她° 发表于 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
建议巩固下基础逻辑知识
建议巩固下基础逻辑知识
Caused by: java.lang.NullPointerException
at top.zjzdmc.datehoer.losemoney.event.LoseMoneyListener.onPlayerdeath(LoseMoneyListener.java:17) ~[?:?]
出现了NPE
-     private static Economy econ = null;
 
咱先学java行不?你直接对着null操作钱?
你要获取你主类的econ
然后比如说赋值给这个econ
再进行操作
William_Shi 发表于 2020-5-7 20:05
Caused by: java.lang.NullPointerException
at top.zjzdmc.datehoer.losemoney.event.LoseMoneyL ...
- public class ExamplePlugin extends JavaPlugin {
 
-     
 
-     private static final Logger log = Logger.getLogger("Minecraft");
 
-     private static Economy econ = null;
 
-     private static Permission perms = null;
 
- private static Chat chat = null;
https://github.com/MilkBowl/VaultAPI
这个示例不就是给的null吗
 本帖最后由 飞翔之歌 于 2020-5-7 20:53 编辑 
Go to learn java
出门左拐java教程欢迎您
而且下面还有代码这里面的perms、chat、econ都已经赋过值了
唯爱她° 发表于 2020-5-7 20:13
https://github.com/MilkBowl/VaultAPI
这个示例不就是给的null吗
Go to learn java
出门左拐java教程欢迎您
而且下面还有代码这里面的perms、chat、econ都已经赋过值了