当前位置: 首页 > 知识库问答 >
问题:

为什么我的config.yml文件一直只输出零?bukkit插件

钱凌
2023-03-14

我做了一个插件,可以跟踪你在《我的世界》开采的钻石数量,并保存到config.yml文件中。但是我的代码似乎不工作,我不知道为什么?

我已经在setConfig参数中尝试了1,现在我已经切换到这个,它似乎仍然不起作用。我还在我的配置.yml文件中预定义了菱形。

package com.raidoxe.BlockPlugin;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {


    @Override
    public void onEnable() {
        getLogger().info("Sartu has been enabled :)");
        PluginManager pm = getServer().getPluginManager();
        SartuListener listener = new SartuListener(this);
        pm.registerEvents(listener, this);
        this.getConfig().options().copyDefaults(true);
        this.saveConfig();


    }

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        Player player = (Player) sender;

        if (sender instanceof Player) {
            String lowerCmd = cmd.getName().toLowerCase();

            switch (lowerCmd) {

            case "mydiamonds":

                int a = this.getConfig().getInt("diamonds."+player.getUniqueId());
                player.sendMessage(ChatColor.DARK_PURPLE+"You have mined "+ChatColor.RED+a+ChatColor.AQUA+" Diamonds");

                return true;    
            }
        }
        return true;
        }


------------Listener File-----------

package com.raidoxe.BlockPlugin;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.Plugin;

public class SartuListener implements Listener {

    private Plugin plugin = Main.getPlugin(Main.class);
    public SartuListener(Main plugin) {

    }

    @EventHandler
    public void blockBreak(BlockBreakEvent event) {
        Player player = (Player) event.getPlayer();
        Block block = event.getBlock();
        Material blockMaterial = block.getType();
        if(blockMaterial.equals(Material.DIAMOND_ORE)) {
            Bukkit.broadcastMessage(ChatColor.WHITE+player.getDisplayName()+" found a "+ ChatColor.AQUA + ChatColor.BOLD+"Diamond!!!");
            int a = plugin.getConfig().getInt("diamonds."+player.getUniqueId());
            plugin.getConfig().set("diamonds."+player.getUniqueId(), a++);
            plugin.saveConfig();
        }

    }

当玩家执行命令/mydiamonds时,它会打印出“你已经开采了(a)钻石”。但不管你开采了多少钻石,它总是打印出零。

共有1个答案

惠诚
2023-03-14

你的代码看起来很好,除了一个小错误。你说你已经在setConfig中尝试了1,所以如果这个解决方案不适合你,那可能是版本问题

如果configgetInt()返回0,则可能意味着两件事:

  1. 值不存在(返回默认值)
  2. 配置中的值实际上为0

测试后,该值确实存在于配置中(由于SaveConfig(),但设置为0。所以这让我想到了设置方法。

问题是添加部分。你做一个里面的方法,这个方法之后会递增数字,我们想要之前,切换到一个。请参阅此帖子。

if(blockMaterial.equals(Material.DIAMOND_ORE)) {
    Bukkit.broadcastMessage(ChatColor.WHITE+player.getDisplayName()+" found a "+ ChatColor.AQUA + ChatColor.BOLD+"Diamond!!!");
    int a = plugin.getConfig().getInt("diamonds."+player.getUniqueId());
    plugin.getConfig().set("diamonds."+player.getUniqueId(), ++a);
    plugin.saveConfig();
}
 类似资料:
  • 我正在尝试创建插件,当有人打开箱子时,它会检查箱子的位置是否与我的config.yml中的任何位置不匹配。所以我想这样做: 编辑:现在我有了这段代码: 但是当我右键点击箱子时,消息jeej没有出现,所有出现的东西都是消息Hodnota x je 0。但是我的配置中有几个键,x在任何地方都不是0。在控制台中,会出现此错误:

  • 创建一个同步多线程系统,以确定三个文本文件中所有整数或分数的总数。如果流被阻塞,则必须将其名称显示为"LOCKED"。为什么只计算一个文件(带锁的线程)?程序显示的内容:Thread-0 Locked!线程-2锁定!123.321 322099只有一个文件

  • 上周,我很难从Spark获得数据,最后我不得不接受 出了这个答案。 我测试了更本土的 对于Spark 2.0,但根据下面的注释,它会删除一组csv文件,而不是需要连接的文件,无论这在上下文中意味着什么。它还将一个空文件放入名为“成功”的目录中。目录名是 /mycsv/,但csv本身有一个由一长串字符组成的难以理解的名称。 这是我第一次听说这样的事情。Excel有多个选项卡,这些选项卡必须以某种方式

  • 当我试图在我的bukkit服务器中加载插件时,我遇到了NullPointerExc的问题,但在Eclipse中没有错误。我的插件是Rush插件,很多东西没有使用/丢失。错误是这样的: 以下是我的代码:

  • 所以我正在为我的服务器制作一个 kick/ban 命令,格式是 /kick 名称原因。我让它一切工作,但只能是1个单词和任何排除它的东西,例如会说BattleDash被踢了。 这是我的代码: (此外,如果您不包括一个原因,它会在聊天中出现内部错误,并在控制台中发生异常)

  • 问题内容: 我在Interface Builder中创建了一个自定义UICollectionViewCell,将其上的视图绑定到该类,然后当我想使用并将字符串设置为字符串上的标签时,tha标签的值为nil。 和子类的单元格: 问题答案: 我再打一次。 如果您使用的是情节提要,则不想调用此功能 。它将覆盖情节提要中的内容。 如果您仍然有问题请检查是否是 相同 的 ,并 在。