Вопрос Некоторые мобы не спавняться

Версия Minecraft
1.16.X

Любитель Метала

Пользователь
Сообщения
93
Решения
2
Почему то мобы такие как: villager, horse, zombie_horse и такие подобные спавняться, только вот: ocelot, zombie,skeleton,spider и такие подобные не спавнятья как бы я не хотел, хотя спавниться только если с помощью BukkitRunable хоть и не всегда.


winn-message: "&aПоздравляем игрока %player%, ведь он убил босса и получил с него награды!"
boss-messages-spawn: "&fБосс был заспавнен на координатах: &a%coordX% %coordY% %coordZ% | %boss-type%"
spawn-boss-time: 250 # В секундах
bosses:
zombie_boss:
boss_type: "ZOMBIE"
health: 100
name: "БОСС СМЕРТИ УБИЙЦА"
abilities: Kill;Shit;ETC
skeleton_boss:
boss_type: "skeleton"
health: 250
name: "БОСС УЖАСА"
abilities: Kill;Shit;ETC
reward:
commands:
enable: true
command:
- "money give %player% 100000"
- "eco give %player% 100000"
- "donatemoney give %player% 100000"


package me.seven.reintmase.toboss.ManageBosses;

import me.seven.reintmase.toboss.Arrays.Containers;
import me.seven.reintmase.toboss.Main;
import me.seven.reintmase.toboss.Utils.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.NamespacedKey;
import org.bukkit.World;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.persistence.PersistentDataType;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.Objects;
import java.util.concurrent.ThreadLocalRandom;

public class CreateBoss {

private FileConfiguration config;
private String bossmessagespawn;
Containers containers;
JavaPlugin plugin;
BossAbilities bossAbilities;

public CreateBoss(Containers containers, BossAbilities bossAbilities) {
this.containers = containers;
this.bossAbilities = bossAbilities;
plugin = Main.getPlugin();

config = Main.getPlugin().getConfig();
bossmessagespawn = StringUtils.format(config.getString("boss-messages-spawn"));
}

public void createBoss(String bossName) {
ConfigurationSection bossConfig = config.getConfigurationSection("bosses." + bossName);
if (bossConfig != null) {
String bossDisplayName = bossConfig.getString("name");
int health = bossConfig.getInt("health");
String bossType = bossConfig.getString("boss_type").toUpperCase();

try {
Location spawnLocation = foundLocation();
Entity bossEntity = Objects.requireNonNull(spawnLocation.getWorld()).spawnEntity(spawnLocation, EntityType.valueOf(bossType));


if (bossEntity instanceof LivingEntity) {
LivingEntity livingBossEntity = (LivingEntity) bossEntity;
livingBossEntity.setCustomName(bossDisplayName);
livingBossEntity.setCustomNameVisible(true);
livingBossEntity.setMaxHealth(health);
livingBossEntity.setHealth(health);

NamespacedKey key = new NamespacedKey(plugin, "boss-key");
bossEntity.getPersistentDataContainer().set(key, PersistentDataType.STRING, "This is boss entity");

String editedBossMessageSpawn = bossmessagespawn;
editedBossMessageSpawn = editedBossMessageSpawn.replace("%coordX%", spawnLocation.getX() + "");
editedBossMessageSpawn = editedBossMessageSpawn.replace("%coordY%", spawnLocation.getY() + "");
editedBossMessageSpawn = editedBossMessageSpawn.replace("%coordZ%", spawnLocation.getZ() + "");
editedBossMessageSpawn = editedBossMessageSpawn.replace("%boss-type%", bossDisplayName);
Bukkit.broadcastMessage(editedBossMessageSpawn);
}
} catch (IllegalArgumentException e) {
Bukkit.getLogger().severe("Invalid boss type: " + bossType);
} catch (Exception e) {
Bukkit.getLogger().severe("Error spawning boss: " + e.getMessage());
}
} else {
Bukkit.getLogger().severe("Boss configuration not found for boss: " + bossName);
}
}


private Location foundLocation() {
World world = Bukkit.getWorld("world");

int randomXLoc = ThreadLocalRandom.current().nextInt(-2000, 2000);
int randomYLoc = 0;
int randomZLoc = ThreadLocalRandom.current().nextInt(-2000, 2000);

Location foundLocation = new Location(world, randomXLoc, randomYLoc, randomZLoc);
int highestY = foundLocation.getWorld().getHighestBlockAt(foundLocation).getY();

return new Location(world, randomXLoc, highestY, randomZLoc);
}
}
 
Назад
Сверху Снизу