gpt4 book ai didi

java - 生成一匹带有自定义骑手的自定义马

转载 作者:行者123 更新时间:2023-12-02 05:01:20 27 4
gpt4 key购买 nike

我想生成一匹自定义马及其自定义骑手生物,然后自定义它们。不过,一旦您调用 spawn(loc, Horse.class),您就无法在它生成之前再调用 getEntity() 了。您也不能从像 spawn(loc, custommob); 这样的变量或任何预先定制的实体生成生物。并且您无法实例化 new Horse();

因此,在修改马之前,需要在没有任何自定义、没有骑手的情况下生成马。但这将触发 EntitySpawnEvent ,该事件将被取消,因为我的世界中不允许生成“默认马”。而且我无法对其进行自定义以便稍后识别它,从而使其通过取消。

我对其骑手也有同样的问题,在它生成之前我无法对其进行自定义,因此在它生成后我无法将其识别为骑手。如果我在生成黑名单上生成任何内容,它就会被取消;如果我在白名单上生成任何内容,它就会生成并且无法识别。我不希望任何随机存在的生物突然成为骑手。

我如何生成这两个生物,自定义它们,并让它们在遵守黑名单的同时找到彼此并互相乘客?

@EventHandler
public void onMobSpawn(CreatureSpawnEvent event) {
String world = event.getEntity().getWorld().getName();
if (world.equals("Someworld") || world.equals("Someotherworld")) {
if (event.getEntityType().equals(EntityType.SKELETON)) { // Whitelisted
// Continue whitelist actions
}
} else {
/* I could add here to spawn the horse, and add an exception to the filter.
* But how do I customize it?
* I can't customize it before it spawned and I can't get it after it spawned.
* Same for the rider.
*/
// loc.getWorld().spawn(loc, Horse.class);
event.setCancelled(true);
}
}

最佳答案

CreatureSpawnEvent.getSpawnReason()是解决您的问题的一个很好的方法。看SpawnReason.CUSTOM .

When a creature is spawned by plugins

@EventHandler
public void onNormal(CreatureSpawnEvent event) {
// This will prevent an infinite loop
if (event.getSpawnReason() != SpawnReason.CUSTOM) {
event.setCancelled(true);
// Spawn what you want
}
}

关于java - 生成一匹带有自定义骑手的自定义马,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28264964/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com