这是对我之前的问题的重写,因为我被告知它太长了。
if(/*This is where I need something*/)
{
mc.thePlayer.swingItem();
mc.playerController.attackEntity(mc.thePlayer, e);
delay = 0;
break;
}
这是Minecraft中KillAura代码的一部分。我试图做到这一点,以便它不针对我做的朋友列表中的人。该列表是名为Variables.java的文件中名为“friendslist”的ArrayList。如果有人能向我解释我是如何让它不针对我朋友列表中的人,我将非常感激。请保持简洁,因为我对java相对较新。
提前致谢。
马特
答案 0 :(得分:1)
ArrayList
对象有一个名为contains
的方法。使用此方法,您可以测试对象是否是集合的一部分。阅读documentation。
工作示例
ArrayList<People> people = new ArrayList<People>();
// Define the collection.
People p = new People("Dave");
// Create a new test object.
people.add(p);
// Add the object to the collection.
if(people.contains(p))
{
// Will print out, because P exists within the people collection.
System.out.println("Object exists in the collection");
}
正如评论中所建议的那样,鉴于这是游戏的比较算法,您可能希望对此进行更多优化。考虑到这一点,我想到了HashMap。
HashMap示例
HashMap<String, Person> friends = new HashMap<String, Person>();
// Create the HashMap object.
Person p = new Person("Dave");
// Create a test object, with the name "Dave".
String key = p.getName();
// Get a key. In this case, the object's name.
friends.put(key, p);
// Add the person to the collection.
使用此代码,您现在可以在HashMap集合中拥有一个人。现在,当有人走进你的“攻击光环”时,你可以简单地获取该人的名字,并检查你的HashMap中是否存在一个键。这很快(O(1)复杂度)并且准确,最重要的是,您正在比较自定义值;不一样的对象。因此,用户可以回收他们的对象并仍然存储在您的集合中。
希望此编辑有助于:)
答案 1 :(得分:0)
要查找对象是否不在列表中,请使用:
if (!friendslist.contains(otherPlayer))
其中friendslist
是您的朋友列表,而otherPlayer
是您在朋友列表中查看的玩家。
您可以详细了解lists和arraylists
答案 2 :(得分:0)
要告诉所有部分是什么有点困难,但如果friendslist是包含播放器对象的数组列表,并且thePlayer是您正在检查的那个,那么
if (!(friendslist.contains(mc.thePlayer)))