Hey I'm trying to spawn nms mobs. They spawn fine on a new world made in 1.15.1 But when I try to spawn them in a world made in 1.12.2 and then updated to 1.15.1 it says they spawn but they don't, or at least I can't see or hear them. I tried relogging to see if they would appear but no luck. Any help?
Code (Text): package me.kepling.mobs.main; import java.lang.reflect.Field; import java.text.DecimalFormat; import java.util.Iterator; import java.util.Random; import java.util.UUID; import org.bukkit.craftbukkit.v1_15_R1.CraftWorld; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Creeper; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Skeleton; import org.bukkit.entity.Spider; import org.bukkit.entity.Zombie; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.SkullMeta; import org.bukkit.plugin.java.JavaPlugin; import com.mojang.authlib.GameProfile; import com.mojang.authlib.properties.Property; import me.kepling.mobs.mobs.CreeperFast; import me.kepling.mobs.mobs.CreeperStrong; import me.kepling.mobs.mobs.CreeperWeak; import me.kepling.mobs.mobs.SkeletonArmoured; import me.kepling.mobs.mobs.SkeletonFast; import me.kepling.mobs.mobs.SkeletonStrong; import me.kepling.mobs.mobs.SkeletonWeak; import me.kepling.mobs.mobs.SpiderFast; import me.kepling.mobs.mobs.SpiderStrong; import me.kepling.mobs.mobs.SpiderWeak; import me.kepling.mobs.mobs.ZombieArmoured; import me.kepling.mobs.mobs.ZombieFast; import me.kepling.mobs.mobs.ZombieStrong; import me.kepling.mobs.mobs.ZombieWeak; import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; import net.minecraft.server.v1_15_R1.EntityCreeper; import net.minecraft.server.v1_15_R1.EntitySkeleton; import net.minecraft.server.v1_15_R1.EntitySpider; import net.minecraft.server.v1_15_R1.EntityTypes; import net.minecraft.server.v1_15_R1.EntityZombie; import net.minecraft.server.v1_15_R1.World; public class Main extends JavaPlugin implements Listener { private static DecimalFormat df0 = new DecimalFormat(".#"); public void onEnable() { getServer().getPluginManager().registerEvents(this, this); } public void onDisable() { for (Iterator<org.bukkit.World> it = Bukkit.getWorlds().iterator(); it.hasNext();) { org.bukkit.World world = it.next(); removeCustomMobs(world); } } public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (cmd.getName().equalsIgnoreCase("mobs")) { if ((sender instanceof Player)) { Player player = (Player) sender; Location loc = player.getLocation(); if (args.length == 0) { if (sender.hasPermission("mobs.command")) { } else { player.sendMessage( "§cI'm sorry, but you do not have permission to preform this command. Please contact the server administrators if you belive that this is in error."); } } else if (args[0].equalsIgnoreCase("killall")) { if (sender.hasPermission("mobs.killall")) { removeCustomMobs(loc.getWorld()); } else { player.sendMessage( "§cI'm sorry, but you do not have permission to preform this command. Please contact the server administrators if you belive that this is in error."); } } else { if (sender.hasPermission("mobs.spawn")) { EntityTypes<EntityZombie> typeZombie = EntityTypes.ZOMBIE; EntityTypes<EntitySkeleton> typeSkeleton = EntityTypes.SKELETON; EntityTypes<EntityCreeper> typeCreeper = EntityTypes.CREEPER; EntityTypes<EntitySpider> typeSpider = EntityTypes.SPIDER; World world = ((CraftWorld) loc.getWorld()).getHandle(); net.minecraft.server.v1_15_R1.Entity mob; switch (args[0]) { default: mob = new EntityZombie(typeZombie, world); break; case "ZombieFast": mob = new ZombieFast(typeZombie, world); break; case "ZombieStrong": mob = new ZombieStrong(typeZombie, world); break; case "ZombieWeak": mob = new ZombieWeak(typeZombie, world); break; case "ZombieArmoured": mob = new ZombieArmoured(typeZombie, world); break; case "SkeletonFast": mob = new SkeletonFast(typeSkeleton, world); break; case "SkeletonStrong": mob = new SkeletonStrong(typeSkeleton, world); break; case "SkeletonWeak": mob = new SkeletonWeak(typeSkeleton, world); break; case "SkeletonArmoured": mob = new SkeletonArmoured(typeSkeleton, world); break; case "CreeperFast": mob = new CreeperFast(typeCreeper, world); break; case "CreeperStrong": mob = new CreeperStrong(typeCreeper, world); break; case "CreeperWeak": mob = new CreeperWeak(typeCreeper, world); break; case "SpiderFast": mob = new SpiderFast(typeSpider, world); break; case "SpiderStrong": mob = new SpiderStrong(typeSpider, world); break; case "SpiderWeak": mob = new SpiderWeak(typeSpider, world); break; } mob.setPosition(loc.getX(), loc.getY(), loc.getZ()); } else { player.sendMessage( "§cI'm sorry, but you do not have permission to preform this command. Please contact the server administrators if you belive that this is in error."); } } } } return false; } @EventHandler public void onCreatureSpawnEvent(CreatureSpawnEvent event) { LivingEntity entity = event.getEntity(); Location loc = entity.getLocation(); if ((entity instanceof Zombie || entity instanceof Skeleton || entity instanceof Creeper || entity instanceof Spider) && event.getSpawnReason() == SpawnReason.NATURAL) { event.setCancelled(true); if (entity.getNearbyEntities(15, 15, 15).size() < 15) { Random r = new Random(); World world = ((CraftWorld) loc.getWorld()).getHandle(); net.minecraft.server.v1_15_R1.Entity mob = null; if (entity instanceof Zombie) { EntityTypes<EntityZombie> typeZombie = EntityTypes.ZOMBIE; int typeInt = r.nextInt(4); switch (typeInt) { default: mob = new ZombieFast(typeZombie, world); break; case 1: mob = new ZombieStrong(typeZombie, world); break; case 2: mob = new ZombieWeak(typeZombie, world); break; case 3: mob = new ZombieArmoured(typeZombie, world); break; } if (mob != null) { mob.setPosition(loc.getX(), loc.getY(), loc.getZ()); } } if (entity instanceof Skeleton) { EntityTypes<EntitySkeleton> typeSkeleton = EntityTypes.SKELETON; int typeInt = r.nextInt(4); switch (typeInt) { default: mob = new SkeletonFast(typeSkeleton, world); break; case 1: mob = new SkeletonStrong(typeSkeleton, world); break; case 2: mob = new SkeletonWeak(typeSkeleton, world); break; case 3: mob = new SkeletonArmoured(typeSkeleton, world); break; } } if (entity instanceof Creeper) { EntityTypes<EntityCreeper> typeCreeper = EntityTypes.CREEPER; int typeInt = r.nextInt(3); switch (typeInt) { default: mob = new CreeperFast(typeCreeper, world); break; case 1: mob = new CreeperStrong(typeCreeper, world); break; case 2: mob = new CreeperWeak(typeCreeper, world); break; } } if (entity instanceof Spider) { EntityTypes<EntitySpider> typeSpider = EntityTypes.SPIDER; int typeInt = r.nextInt(3); switch (typeInt) { default: mob = new SpiderFast(typeSpider, world); break; case 1: mob = new SpiderStrong(typeSpider, world); break; case 2: mob = new SpiderWeak(typeSpider, world); break; } } } } } public void removeCustomMobs(org.bukkit.World world) { for (Iterator<LivingEntity> it = world.getLivingEntities().iterator(); it.hasNext();) { LivingEntity entity = it.next(); if (entity.getScoreboardTags().contains("CustomMob")) { entity.remove(); } } } public static ItemStack getHead(String name) { for (Heads head : Heads.values()) { if (head.getName().equalsIgnoreCase(name)) { return head.getItemStack(); } } return null; } public static ItemStack createHead(String url, String name, UUID uuid) { ItemStack head = new ItemStack(Material.PLAYER_HEAD, 1, (short) 3); if (url.isEmpty()) return head; SkullMeta headMeta = (SkullMeta) head.getItemMeta(); GameProfile profile = new GameProfile(uuid, null); profile.getProperties().put("textures", new Property("textures", url)); try { Field profileField = headMeta.getClass().getDeclaredField("profile"); profileField.setAccessible(true); profileField.set(headMeta, profile); } catch (IllegalArgumentException | NoSuchFieldException | SecurityException | IllegalAccessException error) { error.printStackTrace(); } headMeta.setDisplayName(name); head.setItemMeta(headMeta); return head; } public static boolean isNumber(String string) { if (string == null || string.isEmpty()) { return false; } int i = 0; if (string.charAt(0) == '-') { if (string.length() > 1) { i++; } else { return false; } } for (; i < string.length(); i++) { if (!Character.isDigit(string.charAt(i))) { return false; } } return true; } } I tried making a new 1.15.1 world and then replacing the chunks using MCA Selector. Mobs still didn't spawn in the area I copied from the other world but they did spawn outside that area (in the 1.15.1 generated chunks)