我为我的Minecraft服务器做了一个插件,一切都很好。我使用users.yml文件为每个用户存储一些数据,如组和uuid。
现在发生了一些奇怪的事情,我不知道如何解决它:我的users.yml很好,没有问题。所有数据都保存在那里,我可以访问它。但是,当我尝试编辑例如用户的组从默认(这是分配给每个新用户的组)到管理在文件本身和用户再次加入,文件覆盖组为默认。
我在下面的代码中没有看到什么可以防止覆盖,或者我做错了什么?
这是创建用户的函数。yml文件:
public class UserList {
private static File usersFile;
private static FileConfiguration usersConf;
public static void Setup(){
usersFile = new File(Main.getInstance().getDataFolder(), "users.yml");
if(!usersFile.exists()){
try {
usersFile.createNewFile();
} catch (Exception e){
System.out.println("Error creating Usersfile: " + e);
}
}
usersConf = YamlConfiguration.loadConfiguration(usersFile);
}
public static FileConfiguration get(){
return usersConf;
}
public static void Save(){
try {
usersConf.save(usersFile);
} catch (Exception e){
System.out.println("Error saving Usersfile: " + e);
}
}
public static void reload(){
usersConf = YamlConfiguration.loadConfiguration(usersFile);
}
}
这是onEn的()函数中的代码:
@Override
public void onEnable() {
instance = this;
if (!getDataFolder().exists()) getDataFolder().mkdir();
//Erstelle users.yml mit Standardwerten
UserList.Setup();
UserList.get().addDefault("groups.admin.prefix", "§c");
UserList.get().addDefault("groups.vip.prefix", "§6");
UserList.get().addDefault("groups.default.prefix", "§7");
UserList.get().options().copyDefaults(false);
UserList.Save();
//Hole alle Usergruppen
Set<String> groups = UserList.get().getConfigurationSection("groups").getKeys(false);
//Events Registrieren
getServer().getPluginManager().registerEvents(this, this);
}
以下是玩家加入服务器时执行的代码:
@EventHandler
public void onJoin(PlayerJoinEvent e){
Player p = e.getPlayer();
if (UserList.get().get("users." + p.getName() + ".group") == null){ //<- I tried to prevent it with this if-statement but the problem must be elsewhere
UserList.get().set("users." + p.getName() + ".group", "default");
}
UserList.get().set("users." + p.getName() + ".uuid", p.getUniqueId().toString());
UserList.Save();
if (!p.hasPlayedBefore()) e.setJoinMessage(ChatColor.YELLOW + p.getName() + ChatColor.WHITE + " is new on this Server!");
else e.setJoinMessage(ChatColor.YELLOW + p.getName() + ChatColor.WHITE + " is " + ChatColor.GREEN + "Online");
}
这是造成问题的原因:
UserList.get().options().copyDefaults(false);
您应该使用saveDefaultConfig()
,当(且仅当)配置文件不存在时,它将写入配置。
这个方法应该与您的插件实例一起调用,并且可以与您的config.yml
文件一起使用。
如果要在文件不存在的情况下复制该文件,请执行以下操作:
File usersFile = new File(Main.getInstance().getDataFolder(), "users.yml");
if(!usersFile.exists()){
try (InputStream in = pl.getResource("users.yml");
OutputStream out = new FileOutputStream(usersFile)) {
ByteStreams.copy(in, out);
} catch (Exception e) {
e.printStackTrace();
}
}
config = YamlConfiguration.loadConfiguration(usersFile);
问题内容: 我想要的只是让bool(myInstance)返回False(以及在if / or / and等条件下让myInstance评估为False。我知道如何覆盖>,<,=) 我已经试过了: 有什么建议? (我正在使用Python 2.6) 问题答案: 这是Python 2.x还是Python 3.x?对于Python 2.x,您正在寻找替代方法。
在我当前的构建脚本中,我有特殊的/res/和/assets文件夹,我在构建时将它们复制到文件的工作版本上。在/assets/中是捆绑的数据(sql和一个文本文件),而在/res/values/I中有一个connection.xml值文件。
在苹果自带地图和百度地图上覆盖一层图片,图片可以随地图缩放移动。关键就是自定义Overlay和OverlayView。 作者说:实在无力吐槽了,百度地图iOS SDK中的静态库文件居然都是10M !由于过大上传不了,亲们自行去 http://developer.baidu.com/map/sdk-ios.htm 按提示添加SDK吧!至于基于百度地图的自定义Overlay和OverlayView 记
首先,我是Spring集成和Spring JMS方面的新手,所以我尝试采用的解决方案可能不适合我的需求。 我将尝试解释我需要实现什么:基本上,我需要将消息放在一个队列中,并在另一个队列中异步等待答案。 1、将消息放入队列: 我的解决方案: -- 2.异步监听来自另一个队列的回复消息: 我的解决方案1: 自定义MessageListener实现javax.jms.MessageListener。 然
我仍然是python的新手,我已经尝试过这种方式覆盖txt文件上的一行 ''' 答案 =输入(“俄/秒/升/米:”) ''' 它会替换txt文件上的所有文本行,无论我想做什么,当我选择R时,它会写入txt文件的第一行,当我选择S时,它会写入txt文件的第三行 我现在已经尝试过了 ''' ''' 有人能告诉我正确的方向吗
是否有方法更改在〈代码〉*中定义的接口属性的类型。d、 在typescript中? 例如:中的接口定义为 我想在我写入的typescript文件中更改它 甚至这样也行 这种方法有效吗?当我尝试我的系统时,它没有工作。只是想确认一下这是否可能?