Search in sources :

Example 6 with PlayerInteractManager

use of net.minecraft.server.v1_12_R1.PlayerInteractManager in project Citizens2 by CitizensDev.

the class HumanController method createEntity.

@Override
protected Entity createEntity(final Location at, final NPC npc) {
    final WorldServer nmsWorld = ((CraftWorld) at.getWorld()).getHandle();
    String coloredName = Colorizer.parseColors(npc.getFullName());
    String name = coloredName, prefix = null, suffix = null;
    if (coloredName.length() > 16) {
        prefix = coloredName.substring(0, 16);
        if (coloredName.length() > 30) {
            int len = 30;
            name = coloredName.substring(16, 30);
            if (NON_ALPHABET_MATCHER.matcher(name).matches()) {
                if (coloredName.length() >= 32) {
                    len = 32;
                    name = coloredName.substring(16, 32);
                } else if (coloredName.length() == 31) {
                    len = 31;
                    name = coloredName.substring(16, 31);
                }
            } else {
                name = ChatColor.RESET + name;
            }
            suffix = coloredName.substring(len);
        } else {
            name = coloredName.substring(16);
            if (!NON_ALPHABET_MATCHER.matcher(name).matches()) {
                name = ChatColor.RESET + name;
            }
            if (name.length() > 16) {
                suffix = name.substring(16);
                name = name.substring(0, 16);
            }
        }
        coloredName = coloredName.substring(0, 16);
    }
    final String prefixCapture = prefix, suffixCapture = suffix;
    UUID uuid = npc.getUniqueId();
    if (uuid.version() == 4) {
        // clear version
        long msb = uuid.getMostSignificantBits();
        msb &= ~0x0000000000004000L;
        msb |= 0x0000000000002000L;
        uuid = new UUID(msb, uuid.getLeastSignificantBits());
    }
    final GameProfile profile = new GameProfile(uuid, name);
    final EntityHumanNPC handle = new EntityHumanNPC(nmsWorld.getServer().getServer(), nmsWorld, profile, new PlayerInteractManager(nmsWorld), npc);
    Skin skin = handle.getSkinTracker().getSkin();
    if (skin != null) {
        skin.apply(handle);
    }
    Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), new Runnable() {

        @Override
        public void run() {
            if (getBukkitEntity() == null || !getBukkitEntity().isValid())
                return;
            boolean removeFromPlayerList = npc.data().get("removefromplayerlist", Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
            NMS.addOrRemoveFromPlayerList(getBukkitEntity(), npc.data().get("removefromplayerlist", removeFromPlayerList));
            if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
                Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
                String teamName = profile.getId().toString().substring(0, 16);
                Team team = scoreboard.getTeam(teamName);
                if (team == null) {
                    team = scoreboard.registerNewTeam(teamName);
                    if (prefixCapture != null) {
                        team.setPrefix(prefixCapture);
                    }
                    if (suffixCapture != null) {
                        team.setSuffix(suffixCapture);
                    }
                }
                team.addPlayer(handle.getBukkitEntity());
                handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
            }
        }
    }, 20);
    handle.getBukkitEntity().setSleepingIgnored(true);
    return handle.getBukkitEntity();
}
Also used : WorldServer(net.minecraft.server.v1_8_R3.WorldServer) GameProfile(com.mojang.authlib.GameProfile) Scoreboard(org.bukkit.scoreboard.Scoreboard) PlayerInteractManager(net.minecraft.server.v1_8_R3.PlayerInteractManager) Skin(net.citizensnpcs.npc.skin.Skin) Team(org.bukkit.scoreboard.Team) UUID(java.util.UUID) CraftWorld(org.bukkit.craftbukkit.v1_8_R3.CraftWorld)

Example 7 with PlayerInteractManager

use of net.minecraft.server.v1_12_R1.PlayerInteractManager in project Citizens2 by CitizensDev.

the class HumanController method createEntity.

@Override
protected Entity createEntity(final Location at, final NPC npc) {
    final WorldServer nmsWorld = ((CraftWorld) at.getWorld()).getHandle();
    String coloredName = Colorizer.parseColors(npc.getFullName());
    String name = coloredName, prefix = null, suffix = null;
    if (coloredName.length() > 16) {
        prefix = coloredName.substring(0, 16);
        if (coloredName.length() > 30) {
            int len = 30;
            name = coloredName.substring(16, 30);
            if (NON_ALPHABET_MATCHER.matcher(name).matches()) {
                if (coloredName.length() >= 32) {
                    len = 32;
                    name = coloredName.substring(16, 32);
                } else if (coloredName.length() == 31) {
                    len = 31;
                    name = coloredName.substring(16, 31);
                }
            } else {
                name = ChatColor.RESET + name;
            }
            suffix = coloredName.substring(len);
        } else {
            name = coloredName.substring(16);
            if (!NON_ALPHABET_MATCHER.matcher(name).matches()) {
                name = ChatColor.RESET + name;
            }
            if (name.length() > 16) {
                suffix = name.substring(16);
                name = name.substring(0, 16);
            }
        }
        coloredName = coloredName.substring(0, 16);
    }
    final String prefixCapture = prefix, suffixCapture = suffix;
    UUID uuid = npc.getUniqueId();
    if (uuid.version() == 4) {
        // clear version
        long msb = uuid.getMostSignificantBits();
        msb &= ~0x0000000000004000L;
        msb |= 0x0000000000002000L;
        uuid = new UUID(msb, uuid.getLeastSignificantBits());
    }
    final GameProfile profile = new GameProfile(uuid, name);
    final EntityHumanNPC handle = new EntityHumanNPC(nmsWorld.getServer().getServer(), nmsWorld, profile, new PlayerInteractManager(nmsWorld), npc);
    Skin skin = handle.getSkinTracker().getSkin();
    if (skin != null) {
        skin.apply(handle);
    }
    Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), new Runnable() {

        @Override
        public void run() {
            if (getBukkitEntity() == null || !getBukkitEntity().isValid())
                return;
            boolean removeFromPlayerList = npc.data().get("removefromplayerlist", Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
            NMS.addOrRemoveFromPlayerList(getBukkitEntity(), npc.data().get("removefromplayerlist", removeFromPlayerList));
            if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
                Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
                String teamName = profile.getId().toString().substring(0, 16);
                Team team = scoreboard.getTeam(teamName);
                if (team == null) {
                    team = scoreboard.registerNewTeam(teamName);
                    if (prefixCapture != null) {
                        team.setPrefix(prefixCapture);
                    }
                    if (suffixCapture != null) {
                        team.setSuffix(suffixCapture);
                    }
                }
                team.addPlayer(handle.getBukkitEntity());
                handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
            }
        }
    }, 20);
    handle.getBukkitEntity().setSleepingIgnored(true);
    return handle.getBukkitEntity();
}
Also used : WorldServer(net.minecraft.server.v1_10_R1.WorldServer) GameProfile(com.mojang.authlib.GameProfile) Scoreboard(org.bukkit.scoreboard.Scoreboard) PlayerInteractManager(net.minecraft.server.v1_10_R1.PlayerInteractManager) Skin(net.citizensnpcs.npc.skin.Skin) Team(org.bukkit.scoreboard.Team) UUID(java.util.UUID) CraftWorld(org.bukkit.craftbukkit.v1_10_R1.CraftWorld)

Example 8 with PlayerInteractManager

use of net.minecraft.server.v1_12_R1.PlayerInteractManager in project Citizens2 by CitizensDev.

the class HumanController method createEntity.

@Override
protected Entity createEntity(final Location at, final NPC npc) {
    final WorldServer nmsWorld = ((CraftWorld) at.getWorld()).getHandle();
    String coloredName = Colorizer.parseColors(npc.getFullName());
    String name = coloredName, prefix = null, suffix = null;
    if (coloredName.length() > 16) {
        prefix = coloredName.substring(0, 16);
        if (coloredName.length() > 30) {
            int len = 30;
            name = coloredName.substring(16, 30);
            if (NON_ALPHABET_MATCHER.matcher(name).matches()) {
                if (coloredName.length() >= 32) {
                    len = 32;
                    name = coloredName.substring(16, 32);
                } else if (coloredName.length() == 31) {
                    len = 31;
                    name = coloredName.substring(16, 31);
                }
            } else {
                name = ChatColor.RESET + name;
            }
            suffix = coloredName.substring(len);
        } else {
            name = coloredName.substring(16);
            if (!NON_ALPHABET_MATCHER.matcher(name).matches()) {
                name = ChatColor.RESET + name;
            }
            if (name.length() > 16) {
                suffix = name.substring(16);
                name = name.substring(0, 16);
            }
        }
        coloredName = coloredName.substring(0, 16);
    }
    final String prefixCapture = prefix, suffixCapture = suffix;
    UUID uuid = npc.getUniqueId();
    if (uuid.version() == 4) {
        // clear version
        long msb = uuid.getMostSignificantBits();
        msb &= ~0x0000000000004000L;
        msb |= 0x0000000000002000L;
        uuid = new UUID(msb, uuid.getLeastSignificantBits());
    }
    final GameProfile profile = new GameProfile(uuid, name);
    final EntityHumanNPC handle = new EntityHumanNPC(nmsWorld.getServer().getServer(), nmsWorld, profile, new PlayerInteractManager(nmsWorld), npc);
    Skin skin = handle.getSkinTracker().getSkin();
    if (skin != null) {
        skin.apply(handle);
    }
    Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), new Runnable() {

        @Override
        public void run() {
            if (getBukkitEntity() == null || !getBukkitEntity().isValid())
                return;
            boolean removeFromPlayerList = npc.data().get("removefromplayerlist", Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
            NMS.addOrRemoveFromPlayerList(getBukkitEntity(), npc.data().get("removefromplayerlist", removeFromPlayerList));
            if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
                Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
                String teamName = profile.getId().toString().substring(0, 16);
                Team team = scoreboard.getTeam(teamName);
                if (team == null) {
                    team = scoreboard.registerNewTeam(teamName);
                    if (prefixCapture != null) {
                        team.setPrefix(prefixCapture);
                    }
                    if (suffixCapture != null) {
                        team.setSuffix(suffixCapture);
                    }
                }
                team.addPlayer(handle.getBukkitEntity());
                handle.getNPC().data().set(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, teamName);
            }
        }
    }, 20);
    handle.getBukkitEntity().setSleepingIgnored(true);
    return handle.getBukkitEntity();
}
Also used : WorldServer(net.minecraft.server.v1_12_R1.WorldServer) GameProfile(com.mojang.authlib.GameProfile) Scoreboard(org.bukkit.scoreboard.Scoreboard) PlayerInteractManager(net.minecraft.server.v1_12_R1.PlayerInteractManager) Skin(net.citizensnpcs.npc.skin.Skin) Team(org.bukkit.scoreboard.Team) UUID(java.util.UUID) CraftWorld(org.bukkit.craftbukkit.v1_12_R1.CraftWorld)

Aggregations

GameProfile (com.mojang.authlib.GameProfile)8 UUID (java.util.UUID)8 Scoreboard (org.bukkit.scoreboard.Scoreboard)8 Team (org.bukkit.scoreboard.Team)8 Property (com.mojang.authlib.properties.Property)4 BigInteger (java.math.BigInteger)4 MessageDigest (java.security.MessageDigest)4 PlayerProfile (net.aufdemrand.denizen.nms.util.PlayerProfile)4 Skin (net.citizensnpcs.npc.skin.Skin)4 PlayerInteractManager (net.minecraft.server.v1_10_R1.PlayerInteractManager)2 WorldServer (net.minecraft.server.v1_10_R1.WorldServer)2 PlayerInteractManager (net.minecraft.server.v1_11_R1.PlayerInteractManager)2 WorldServer (net.minecraft.server.v1_11_R1.WorldServer)2 PlayerInteractManager (net.minecraft.server.v1_8_R3.PlayerInteractManager)2 WorldServer (net.minecraft.server.v1_8_R3.WorldServer)2 CraftWorld (org.bukkit.craftbukkit.v1_10_R1.CraftWorld)2 CraftWorld (org.bukkit.craftbukkit.v1_11_R1.CraftWorld)2 CraftWorld (org.bukkit.craftbukkit.v1_8_R3.CraftWorld)2 CraftFakePlayer_v1_10_R1 (net.aufdemrand.denizen.nms.impl.entities.CraftFakePlayer_v1_10_R1)1 CraftFakePlayer_v1_11_R1 (net.aufdemrand.denizen.nms.impl.entities.CraftFakePlayer_v1_11_R1)1