请教各位大佬,我现在想写一个插件:
当同一个刷怪笼激活三次后自动销毁的功能。现在的代码如下:
private Map spawnerActivationCounts;
// 刷怪笼刷满3次后自动销毁掉
@EventHandler
public void onCreatureSpawn(CreatureSpawnEvent event) {
if (event.getSpawnReason() != CreatureSpawnEvent.SpawnReason.SPAWNER) {
return;
}
Block spawnerBlock = event.getLocation().getBlock();
if (spawnerBlock.getType() == Material.SPAWNER) {
Location spawnerLocation = spawnerBlock.getLocation();
spawnerActivationCounts.putIfAbsent(spawnerLocation, 0);
int count = spawnerActivationCounts.getOrDefault(spawnerLocation, 0) + 1;
spawnerActivationCounts.put(spawnerLocation, count);
if (count >= 3) {
spawnerBlock.setType(Material.AIR);
spawnerActivationCounts.remove(spawnerLocation);
}
}
}
但是存在一个问题,Block spawnerBlock = event.getLocation().getBlock(); 获取的位置是生物生成的坐标,而并非刷怪笼的坐标请问我应该如何修改才能获取刷怪笼的坐标呢
当同一个刷怪笼激活三次后自动销毁的功能。现在的代码如下:
private Map spawnerActivationCounts;
// 刷怪笼刷满3次后自动销毁掉
@EventHandler
public void onCreatureSpawn(CreatureSpawnEvent event) {
if (event.getSpawnReason() != CreatureSpawnEvent.SpawnReason.SPAWNER) {
return;
}
Block spawnerBlock = event.getLocation().getBlock();
if (spawnerBlock.getType() == Material.SPAWNER) {
Location spawnerLocation = spawnerBlock.getLocation();
spawnerActivationCounts.putIfAbsent(spawnerLocation, 0);
int count = spawnerActivationCounts.getOrDefault(spawnerLocation, 0) + 1;
spawnerActivationCounts.put(spawnerLocation, count);
if (count >= 3) {
spawnerBlock.setType(Material.AIR);
spawnerActivationCounts.remove(spawnerLocation);
}
}
}
但是存在一个问题,Block spawnerBlock = event.getLocation().getBlock(); 获取的位置是生物生成的坐标,而并非刷怪笼的坐标请问我应该如何修改才能获取刷怪笼的坐标呢