1252251361
3TUSK 发表于 2019-10-1 14:23
试着跑了一遍,输出是 1。看不出问题在哪……

真是奇怪了,我这就一直是0,不过还是谢谢你

纱夜
能贴定义
实现
包括调用的完整代码么

注意一下
你调用的到底是静态方法还是动态方法

动态方法中
调用的是一个对象么?

1252251361
阴阳师元素祭祀 发表于 2019-10-1 15:27
能贴定义
实现
包括调用的完整代码么

代码大概是这样的
A类:
public List<String> list = new ArrayList<>();
public void add(String a){
list.add(a);
}
B类:
private Aclass ac = new Aclass():
public List<String> list = ac.list;
public void addA(){
ac.add("hello");
}
public int getSize(){
return ac.list.size();
}

纱夜
1252251361 发表于 2019-10-1 22:50
代码大概是这样的
A类:
public List list = new ArrayList();

????
你这代码..
完全没给全啊

可以给整个java文件的代码么

感觉这完全没调用一个对象

1252251361
阴阳师元素祭祀 发表于 2019-10-1 22:55
????
你这代码..
完全没给全啊

呃,等会我把项目源码发一下吧

1252251361
阴阳师元素祭祀 发表于 2019-10-1 22:55
????
你这代码..
完全没给全啊

命令类:
public class cmd_redpack implements CommandExecutor {
    private RedPackAPI rp = new RedPackAPI();
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        String cmd = command.getName();
        if (cmd.equalsIgnoreCase("rp") || cmd.equalsIgnoreCase("redpack")) {
            rp.send((Player) sender);
        }
        return true;
    }
}
API类:
public class RedPackAPI {
    private MessageRP m = new MessageRP();
    public RedPackList rpl = new RedPackList();
    public void send(Player object){
        m.rp_click("2333");
        rpl.add(new RedPackEX(2333,object,"money","1","30"));


    }

}
红包类:
public class RedPackEX {
    private Player player = null;
    private String count = null;
    private String value = null;
    private int code;
    private String type = null;
    private int last = 0;

    public RedPackEX(int random,Player Splayer,String Stype,String Scount,String Svalue) {
        code = random;
        player = Splayer;
        type = Stype;
        count = Scount;
        value = Svalue;
    }
    public void setTpye(String setType) {
        type = setType;
    }
    public void setPlayer(Player setPlayer){
        player = setPlayer;
    }
    public void setCount(String setCount) {
        count = setCount;
        last = Integer.valueOf(count);
    }
    public void setValue(String setValue) {
        value = setValue;
    }
    public void setCode(int setCode){
        code = setCode;
    }
    public Player getPlayer(){
        return player;
    }
    public String getCount(){
        return count;
    }
    public String getValue(){
        return value;
    }
    public int getCode(){
        return code;
    }
    public String getLast(){
        return String.valueOf(last);
    }
    public String openIt(Player object){
        String res = null;
        if (last == 0) {
            res = "&c红包已全部领取完毕!";
        }else {
            switch (type) {
                case "money":
                    EconomyResponse er = RedPack.getEconomy().depositPlayer(object, Double.parseDouble(value));
                    if (er.transactionSuccess()) {
                        res = "&a您获得了&b"+value+"&a元!";
                    }else {
                        res = "&c领取失败 未知错误!<RedPackEX>";
                    }
                    break;
                case "credit":
                    CreditAPI creditAPI = new CreditAPI();
                    if (creditAPI.addCredit(object.getName(), Integer.parseInt(value))) {
                        res = "&a您获得了&b"+value+"&a点券!";
                    }else {
                        res = "&c领取失败 未知错误!<RedPackEX>";
                    }
                    break;
            }
            last = last - 1;
        }
        return res;
    }
}
红包列表类:

public class RedPackList {
    private List<RedPackEX> list = new ArrayList<>();
    public void add(RedPackEX redPack) {
        list.add(redPack);
    }
    public RedPackEX get(int i) {
        return list.get(i);
    }
    public RedPackEX getByCode(int code) {
        for (RedPackEX redPackEX : list) {
            if (redPackEX.getCode() == code) {
                return redPackEX;
            }
        }
        return null;
    }
    public int size(){
        return list.size();
    }
    public List<RedPackEX> getList() {
        return list;
    }
    public boolean contain(int code) {
        for (RedPackEX redPackEX : list) {
            if (redPackEX.getCode() == code) {
                return true;
            }
        }
        return false;
    }
    public String open(Player player, int i) {
        return list.get(i).openIt(player);
    }
}
MessageRP里的函数
public void rp_click(String code) {
        TextComponent tc = new TextComponent("1");
        tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,new ComponentBuilder("点击拆开!").color(ChatColor.GOLD).create()));
        tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND,"rpget#"+code));
        tc.setColor(net.md_5.bungee.api.ChatColor.GOLD);
        Bukkit.spigot().broadcast(tc);
    }
监听类
public class PlayerEvents implements Listener {
    private Variable v = new Variable();
    private MessageRP m = new MessageRP();
    private RedPackAPI rpa = new RedPackAPI();
    private RedPackList rpl = null;
    @EventHandler
    public void onChat (AsyncPlayerChatEvent event) {
        Player player = event.getPlayer();
        String text = event.getMessage();
        event.setFormat(event.getFormat());
        if (text.contains("rpget#")) {
            if (player.hasPermission(v.prem_receive)) {
                String spilt = text.split("#")[1];
                rpl = rpa.rpl;
                if (rpl.contain(Integer.valueOf(spilt))) {
                    m.pprivate_(player,rpl.getByCode(Integer.valueOf(spilt)).openIt(player));
                }else {
                    m.pprivate_(player,"&c无法找到该红包!红包数量:"+rpl.size());
                }
            }else {
                m.pprem(player,v.prem_receive);
            }
        }
    }
}

纱夜
1252251361 发表于 2019-10-1 23:04
命令类:
public class cmd_redpack implements CommandExecutor {
    private RedPackAPI rp = new Red ...

在没高亮的时候读完了代码x

你的命令
以及事件
引用的不是一个API对象

还有其他地方我就不说了

1252251361
阴阳师元素祭祀 发表于 2019-10-1 23:12
在没高亮的时候读完了代码x

你的命令

能说一下解决方法么 实在感谢

1252251361
阴阳师元素祭祀 发表于 2019-10-1 23:12
在没高亮的时候读完了代码x

你的命令

谢谢,我明白了

吕易天
1252251361 发表于 2019-10-1 23:04
命令类:
public class cmd_redpack implements CommandExecutor {
    private RedPackAPI rp = new Red ...

你两个RedPackAPI的实例不一样啊,你PlayerEvents和cmd_redpack里面的RedPackAPI的实例不是同一个,那么RedPackList自然也不是同一个

1252251361
吕易天 发表于 2019-10-2 12:51
你两个RedPackAPI的实例不一样啊,你PlayerEvents和cmd_redpack里面的RedPackAPI的实例不是同一个,那么R ...

已经明白了 谢谢

第一页 上一页 下一页 最后一页