我很想知道如何保存和加载两个HashMaps,我一直在尝试使用自己的方法,但我什么都想不通,因为一个正在覆盖另一个!
这是我的主要.class
package me.core.UPTest;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin{
public final Sub sub = new Sub(this);
public void onEnable(){
getLogger().info("Ultimate Plugin is now enabled.");
getServer().getPluginManager().registerEvents(sub, this);
sub.loadPoints();
sub.loadCommandUsed
}
public void onDisable(){
getLogger().info("Ultimate Plugin is now disabled.");
sub.savePoints();
sub.saveCommandUsed();
}
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
Player player = (Player) sender;
if(cmd.getName().equalsIgnoreCase("points")){
if(args.length == 0){
player.sendMessage("You have " + sub.points.get(player.getName().toLowerCase()) + " points.");
return true;
}else if(args.length > 0){
player.sendMessage(ChatColor.GRAY + "Too many arguments.");
return true;
}
}
if(cmd.getName().equalsIgnoreCase("vote")){
if(args.length == 0){
if(sub.commandused.get(player.getName().toLowerCase()) == false){
player.sendMessage(ChatColor.BLUE + "Thank you for voting for our server!");
sub.commandused.put(player.getName().toLowerCase(), true);
return true;
}else{
player.sendMessage(ChatColor.BLUE + "You have already voted for our server!");
}
}else if(args.length > 0){
player.sendMessage(ChatColor.GRAY + "Too many arguments.");
return true;
}
}
return false;
}
}
这是我的潜艇.class
package me.core.UPTest;
import java.util.HashMap;
import java.util.Map.Entry;
public class Sub {
private Main plugin;
public Sub(Main plugin) {
this.plugin = plugin;
}
private HashMap<String, Integer> points = new HashMap<String, Integer>();
private HashMap<String, Boolean> commandused = new HashMap<String, Boolean>();
public void loadPoints(){
for (String str : plugin.getConfig().getKeys(true)) {
int p = plugin.getConfig().getInt(str);
points.put(str, p);
}
plugin.saveConfig();
}
public void savePoints(){
for (Entry<String, Integer> pointstostore : points.entrySet()) {
plugin.getConfig().set(pointstostore.getKey(), pointstostore.getValue());
}
plugin.saveConfig();
}
public void loadCommandUsed(){
for (String str : plugin.getConfig().getKeys(true)){
boolean p = plugin.getConfig().getBoolean(str);
commandused.put(str, p);
}
plugin.saveConfig();
}
public void saveCommandUsed(){
for (Entry<String, Boolean> commandusedtostore : commandused.entrySet()){
plugin.getConfig().set(commandusedtostore.getKey(), commandusedtostore.getValue());
}
plugin.saveConfig();
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event){
Player player = event.getPlayer();
if(points.get(player.getName().toLowerCase()) == null){
points.put(player.getName().toLowerCase(), 0);
}
commandused.put(player.getName().toLowerCase(), false);
}
}
正如我在一开始提到的,地图会互相覆盖,我不知道如何解决这个问题!
1)为什么在加载方法中编写plugin.saveConfig()
?这里不应该需要它。
2) 点
和commandused
maps使用相同的键。我不明白你为什么有两张地图。一个就够了。
此方法
public void onDisable(){
getLogger().info("Ultimate Plugin is now disabled.");
sub.savePoints();
sub.saveCommandUsed();
}
依次调用子.savePoints()
和子.save命令使用()
。
所以,当你这么做的时候
plugin.getConfig().set(pointstostore.getKey(), pointstostore.getValue());
在保存命令使用()
和
plugin.getConfig().set(commandusedtostore.getKey(),commandusedtostore.getValue());
在< code >保存点()中
第一次,您编写最终存储在` plugin()中的键值。getConfig()。< br >第二次覆盖它们时。
问题内容: 我有一堂课,为游戏中的玩家提供服务,创建他们以及其他东西。 我需要将这些播放器对象保存在文件中,以便以后使用。我已经尝试过pickle模块,但是我不知道如何保存多个对象并再次加载它们?有没有办法做到这一点,还是应该使用其他类(例如列表)并将对象保存并加载到列表中? 有没有更好的办法? 问题答案: 到目前为止,使用列表,元组或字典是最常见的方法: 打印: 但是,泡菜文件 可以 包含任意数
问题内容: 我有一堂课,为游戏中的玩家提供服务,创建他们以及其他东西。 我需要将这些播放器对象保存在文件中,以便以后使用。我已经尝试过pickle模块,但是我不知道如何保存多个对象并再次加载它们?有没有办法做到这一点,还是应该使用其他类(例如列表)并将对象保存并加载到列表中? 有没有更好的办法? 问题答案: 到目前为止,使用列表,元组或字典是最常见的方法: 输出: 但是,泡菜文件可以包含任意数量的
问题内容: 从到目前为止的经验来看,有几种不同的方法可以将TensorFlow图转储到文件中,然后再将其加载到另一个程序中,但是我无法找到关于它们如何工作的清晰示例/信息。我已经知道的是: 使用a将模型的变量保存到检查点文件(.ckpt)中,并在以后还原它们(源) 将模型保存到.pb文件,然后使用和(source)将其加载回 从.pb文件加载模型,对其进行重新训练,然后使用Bazel将其转储到新的
问题内容: 我使用的不是可重入的库(用C编写)(即库中没有函数可重入)。假设我已经通过System.load加载了库以获取句柄“ v”。由于重入问题(尝试过但无意义的结果),我无法在两个线程中使用v。我可以使用锁,但这会破坏我本可以获得的任何并行性。 我想做的是启动两个线程,然后在每个线程中加载库以获取两个不同的句柄(因此,加载的库有两个副本)。 这在Java中可行吗?问候Saptarshi 问题
问题 在本机硬盘上有一个HTML文件,需要对它进行解析从中抽取数据或进行修改。 办法 可以使用静态Jsoup.parse(File in, String charsetName, String baseUri) 方法: File input = new File("/tmp/input.html"); Document doc = Jsoup.parse(input, "UTF-8", "http
我正在生成。Liferay portlet中的svg文件将保存在服务器(JBoss AS)上的svg文件夹中。这些文件生成并保存在中。java类,如下所示: 该文件保存在server/bin/svg目录中。但是当我试图访问我的数据库中的文件时。jsp页面,它似乎找不到文件(可能正在另一个目录中查找)。我怎样才能告诉它,所需的文件在哪里?我可以使用绝对路径,将其存储在某个位置并将其传递给。jsp页面