作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想生成一匹自定义马及其自定义骑手生物,然后自定义它们。不过,一旦您调用 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/
我是一名优秀的程序员,十分优秀!