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
再进行操作

唯爱她°
William_Shi 发表于 2020-5-7 20:05
Caused by: java.lang.NullPointerException
        at top.zjzdmc.datehoer.losemoney.event.LoseMoneyL ...
  1. public class ExamplePlugin extends JavaPlugin {
  2.    
  3.     private static final Logger log = Logger.getLogger("Minecraft");
  4.     private static Economy econ = null;
  5.     private static Permission perms = null;
  6.     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:44
Go to learn java
出门左拐java教程欢迎您
而且下面还有

okok

William_Shi
唯爱她° 发表于 2020-5-7 20:13
https://github.com/MilkBowl/VaultAPI
这个示例不就是给的null吗

实例先声明了成员变量
然后在onEnable里面对变量进行了赋值
其他类调用的时候变量就不是null了
你不能纯粹CV代码,应该多思考

第一页 上一页