如何在 bukkit 中存储变量的变量?
How do I store a variable of a variable in bukkit?
所以我一直在尝试在 bukkit 中制作一个 alt 检测插件,我是 api 的新手并且没有很好地编码,但我不确定如何让它工作,我已经尝试过 hashmaps 并且我也尝试过其他东西但我仍然不太明白如何去做,基本上我正在尝试获取任何加入但尚未加入的人的 IP配置并将他的 ip 放在那里,包括他的 IP,然后通过查看他是否具有与已存储的相同 ip 来检查他的 alt 是否加入,并将他添加到与 IP
相关的用户名列表中
一开始我想我可以做这样的事情:
String ip = event.getAddress().toString().replaceAll("/", "");
plugin.getConfig().set("IPs.", ip);
plugin.saveConfig();
if(plugin.getConfig().getString("IPs.") == s) {
if(plugin.getConfig().get("IPs." + ip) == player.getName()) {
plugin.getConfig().set("IPs." + s, player.getName());
plugin.saveConfig();
}
}
但我意识到我做不到,所以我想尝试制作一个字符串列表,并在配置中添加 IP 列表,然后我意识到我需要做一个奇怪的列表列表甚至从技术上讲,我无法存储某人的 IP 并检查他们拥有的名称列表,因为我无法检查他的 IP 名称中是否有列表
我在这里真的很困惑,希望得到一些帮助!
谢谢!
编辑 1 我使用的 HashMap 代码:
// s is the ip string
HashMap<String,String[]> map = new HashMap<String,String[]>();
String[] names = new String[10];
names[0] = player.getName();
map.put(s, names);
saveHashMap(map);
保存哈希图:
public void saveHashMap(HashMap<String, String[]> hm) {
for (String key : hm.keySet()) {
plugin.getConfig().set("IPs."+key, hm.get(key));
}
plugin.saveConfig();
}
}
为了测试我尝试了这个:
HashMap<String,String[]> test = loadHashMap();
String[] a = test.get(s);
System.out.println(a[0]);
loadHashMap:
public HashMap<String, String[]> loadHashMap() {
HashMap<String, String[]> hm = new HashMap<String,String[]>();
for (String key : plugin.getConfig().getConfigurationSection("IPs").getKeys(false)) {
hm.put(key, (String[]) plugin.getConfig().get("IPs."+key));
}
return hm;
}
根据 gamepedia entry 你应该这样保存 HashMaps:
getConfig().createSection(String path, Map< String, Object > map)
并像这样检索它们:
getConfig().getConfigurationSection("path.to.map").getValues(false)
然后您需要将地图转换为您想要的类型。
所以我一直在尝试在 bukkit 中制作一个 alt 检测插件,我是 api 的新手并且没有很好地编码,但我不确定如何让它工作,我已经尝试过 hashmaps 并且我也尝试过其他东西但我仍然不太明白如何去做,基本上我正在尝试获取任何加入但尚未加入的人的 IP配置并将他的 ip 放在那里,包括他的 IP,然后通过查看他是否具有与已存储的相同 ip 来检查他的 alt 是否加入,并将他添加到与 IP
相关的用户名列表中一开始我想我可以做这样的事情:
String ip = event.getAddress().toString().replaceAll("/", "");
plugin.getConfig().set("IPs.", ip);
plugin.saveConfig();
if(plugin.getConfig().getString("IPs.") == s) {
if(plugin.getConfig().get("IPs." + ip) == player.getName()) {
plugin.getConfig().set("IPs." + s, player.getName());
plugin.saveConfig();
}
}
但我意识到我做不到,所以我想尝试制作一个字符串列表,并在配置中添加 IP 列表,然后我意识到我需要做一个奇怪的列表列表甚至从技术上讲,我无法存储某人的 IP 并检查他们拥有的名称列表,因为我无法检查他的 IP 名称中是否有列表
我在这里真的很困惑,希望得到一些帮助! 谢谢!
编辑 1 我使用的 HashMap 代码:
// s is the ip string
HashMap<String,String[]> map = new HashMap<String,String[]>();
String[] names = new String[10];
names[0] = player.getName();
map.put(s, names);
saveHashMap(map);
保存哈希图:
public void saveHashMap(HashMap<String, String[]> hm) {
for (String key : hm.keySet()) {
plugin.getConfig().set("IPs."+key, hm.get(key));
}
plugin.saveConfig();
}
}
为了测试我尝试了这个:
HashMap<String,String[]> test = loadHashMap();
String[] a = test.get(s);
System.out.println(a[0]);
loadHashMap:
public HashMap<String, String[]> loadHashMap() {
HashMap<String, String[]> hm = new HashMap<String,String[]>();
for (String key : plugin.getConfig().getConfigurationSection("IPs").getKeys(false)) {
hm.put(key, (String[]) plugin.getConfig().get("IPs."+key));
}
return hm;
}
根据 gamepedia entry 你应该这样保存 HashMaps:
getConfig().createSection(String path, Map< String, Object > map)
并像这样检索它们:
getConfig().getConfigurationSection("path.to.map").getValues(false)
然后您需要将地图转换为您想要的类型。