gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:39:19 25 4
gpt4 key购买 nike

我制作了一个插件,用于跟踪您在 Minecraft 中开采的钻石数量并将其保存到 config.yml 文件中。但我的代码似乎不起作用,我不明白为什么?

我已经在 setConfig args 中尝试过 +1,现在我已经切换到这个,但它似乎仍然不起作用。我还在 config.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) 钻石”。但无论您开采了多少钻石,它总是打印出零。

最佳答案

除了一个小错误之外,您的代码看起来不错。你说你已经在 setConfig 中尝试了+1,所以如果这个解决方案对你不起作用,它可能是版本问题

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

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

经测试,该值确实存在于配置中(由于 saveConfig()),但设置为 0。因此,这引导我找到设置方法。

问题是添加部分。您在方法内执行 a++,这将增加方法之后的数字,我们希望在方法之前切换到++a。 See this post .

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();
}

关于java - 为什么我的 config.yml 文件一直只输出零? bukkit 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55989838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com