对于任何知道如何正确使用Bukkit的人来说,这个问题可能非常明显,如果我错过了其他人的解决方案,我很抱歉,但这真的是踢我的屁股,我不知道还有什么其他的做,教程完全没用。我需要帮助做两件事:
int num = 0;
public void create(){
String name = chocolate + num;
Thingy name = new Thingy();
}
所以你看到我在说什么?我需要基本上更改为每个新实例指定的名称,以便在创建时不会覆盖最后一个实例。我发誓,我到处寻找,我问过我的Java教授,我无法得到任何答案。
2:我需要学习如何使用愚蠢的调度程序,到目前为止我无法理解。基本上,当检测到事件时,会调用两件事:一个立即激活的方法,另一个需要延迟5秒的方法,然后调用。代码是这样的:
public onEvent(event e){
Thingy thing = new Thingy();
thing.method1();
thing.doOnDelay(method2(), 100 ticks);
}
如果我没有提供太多细节,我再次道歉,但我不能为我的生活找到任何关于我能理解的Bukkit事件调度程序。
请不要给我留下Bukkit官方教程的链接,我根本无法理解它们,这将是一个浪费的答案。我需要一个可以帮助我的人,我是一个初学插件作家。
我有编程I和II,专注于Java,我知道很多基本的东西,我只需要Bukkit特定的第二个帮助。
自从我开始编程以来,第一个让我感到困惑。
答案 0 :(得分:1)
好的,对于第一个问题,我认为你想要使用数据结构。根据您正在执行的操作,可以使用不同的数据结构。数据结构只是一个容器,可用于存储一类对象的许多实例。您可以使用的数据结构是:
还有更多,但这些是重要的。 HashMap,HashSet和TreeMap都是Map类的一部分,它以其快速的操作而着称。要使用散列映射,请使用HashMap<KeyThing, ValueThingy> thing = new HashMap<KeyThing, ValueThing>();
对其进行实例化,然后使用thing.put(key, value)
向其添加元素。当你想从中得到一个值时,你只需使用thing.get(key)
HashMaps使用超快速的算法来获取值,但结果是HashMap不会在任何特定的情况下存储它的条目订购。因此,当你想用for循环遍历它时,它会随机返回它的条目(因为内存和东西不是真正随机的)。此外,重要的是要注意,每个单独的密钥只能有一个。如果您尝试放入地图中已存在的密钥,它将超过该密钥的值。
HashSet就像一个HashMap,但没有存储值。如果您需要使用它来确定对象是否在其中,那么这是一个非常好的容器。
TreeMap是唯一以特定顺序存储其值的地图之一。你必须提供一个比较器(一个告诉对象是否小于另一个对象的东西),以便它知道如果它们希望它们按升序排列值的顺序。
List和ArrayList不是地图。它们的元素带有索引地址。使用List,您必须指定要放入其中的元素数量。列表不会改变大小。 ArrayLists就像列表一样,每个元素都可以用arrayListThing.get(index)
检索,但ArrayList可以改变大小。您可以通过arrayListThing.add(Thing)
将元素添加到ArrayList。
Vector很像ArrayList。它的功能大致相同,我不太清楚它们之间的区别是什么。
无论如何,您可以使用这些数据结构通过循环来存储大量对象。这是一个Vector的例子。
Vector<Thing> thing = new Vector<Thing>();
int numberofthings = 100;
for(int i = 0; i < numberofthings; i++) {
thing.add(new Thing());
}
这会给你一个充满了你可以迭代的东西的向量 for(Thing elem:thing){ thing.dostuff }
好的,现在是第二个问题。你是正确的,你需要使用Bukkit调度程序。方法如下:
创建一个扩展BukkitRunnable的类
public class RunnableThing extends BukkitRunnable {
public void run() {
//what you want to do. You have to make this method.
}
}
然后,当你想要执行那件事时你想要做的是使用RunnableThing创建一个新的BukkitTask对象
BukkitTask example = new RunnableThing().runTaskLater(plugin, ticks)
你必须做一些数学计算,找出你想要多少刻度。 20个滴答= 1秒。除此之外,我认为这涵盖了所有问题。