Search in sources :

Example 36 with TypeToken

use of com.google.gson.reflect.TypeToken in project CloudNet by Dytanic.

the class PacketInMobSelector method handleInput.

@Override
public void handleInput(Document data, PacketSender packetSender) {
    Map<UUID, ServerMob> mobMap = data.getObject("mobs", new TypeToken<Map<UUID, ServerMob>>() {
    }.getType());
    MobConfig mobConfig = data.getObject("mobConfig", new TypeToken<MobConfig>() {
    }.getType());
    Map<UUID, ServerMob> filteredMobs = MapWrapper.filter(mobMap, new Acceptable<ServerMob>() {

        @Override
        public boolean isAccepted(ServerMob value) {
            return value.getPosition().getGroup().equalsIgnoreCase(CloudAPI.getInstance().getGroup());
        }
    });
    if (MobSelector.getInstance() != null) {
        Bukkit.getScheduler().runTask(CloudServer.getInstance().getPlugin(), new Runnable() {

            @Override
            public void run() {
                MobSelector.getInstance().shutdown();
                MobSelector.getInstance().setMobConfig(mobConfig);
                MobSelector.getInstance().setMobs(new HashMap<>());
                MobSelector.getInstance().setMobs(MapWrapper.transform(filteredMobs, new Catcher<UUID, UUID>() {

                    @Override
                    public UUID doCatch(UUID key) {
                        return key;
                    }
                }, new Catcher<MobSelector.MobImpl, ServerMob>() {

                    @Override
                    public MobSelector.MobImpl doCatch(ServerMob key) {
                        MobSelector.getInstance().toLocation(key.getPosition()).getChunk().load();
                        Entity entity = MobSelector.getInstance().toLocation(key.getPosition()).getWorld().spawnEntity(MobSelector.getInstance().toLocation(key.getPosition()), EntityType.valueOf(key.getType()));
                        entity.setFireTicks(0);
                        Object armorStand = ReflectionUtil.armorstandCreation(MobSelector.getInstance().toLocation(key.getPosition()), entity, key);
                        if (armorStand != null) {
                            MobSelector.getInstance().updateCustom(key, armorStand);
                            Entity armor = (Entity) armorStand;
                            if (armor.getPassenger() == null && key.getItemId() != null) {
                                Item item = Bukkit.getWorld(key.getPosition().getWorld()).dropItem(armor.getLocation(), new ItemStack(key.getItemId()));
                                item.setTicksLived(Integer.MAX_VALUE);
                                item.setPickupDelay(Integer.MAX_VALUE);
                                armor.setPassenger(item);
                            }
                        }
                        if (entity instanceof Villager) {
                            ((Villager) entity).setProfession(Villager.Profession.FARMER);
                        }
                        MobSelector.getInstance().unstableEntity(entity);
                        entity.setCustomNameVisible(true);
                        entity.setCustomName(ChatColor.translateAlternateColorCodes('&', key.getDisplay()));
                        MobSelector.MobImpl mob = new MobSelector.MobImpl(key.getUniqueId(), key, entity, MobSelector.getInstance().create(mobConfig, key), new HashMap<>(), armorStand);
                        Bukkit.getPluginManager().callEvent(new BukkitMobInitEvent(mob));
                        return mob;
                    }
                }));
                Bukkit.getScheduler().runTaskAsynchronously(CloudServer.getInstance().getPlugin(), new Runnable() {

                    @Override
                    public void run() {
                        for (ServerInfo serverInfo : MobSelector.getInstance().getServers().values()) {
                            MobSelector.getInstance().handleUpdate(serverInfo);
                        }
                    }
                });
            }
        });
    } else {
        MobSelector mobSelector = new MobSelector(mobConfig);
        MobSelector.getInstance().setMobs(new HashMap<>());
        Bukkit.getScheduler().runTask(CloudServer.getInstance().getPlugin(), new Runnable() {

            @Override
            public void run() {
                MobSelector.getInstance().setMobs(MapWrapper.transform(filteredMobs, new Catcher<UUID, UUID>() {

                    @Override
                    public UUID doCatch(UUID key) {
                        return key;
                    }
                }, new Catcher<MobSelector.MobImpl, ServerMob>() {

                    @Override
                    public MobSelector.MobImpl doCatch(ServerMob key) {
                        MobSelector.getInstance().toLocation(key.getPosition()).getChunk().load();
                        Entity entity = MobSelector.getInstance().toLocation(key.getPosition()).getWorld().spawnEntity(MobSelector.getInstance().toLocation(key.getPosition()), EntityType.valueOf(key.getType()));
                        Object armorStand = ReflectionUtil.armorstandCreation(MobSelector.getInstance().toLocation(key.getPosition()), entity, key);
                        if (armorStand != null) {
                            MobSelector.getInstance().updateCustom(key, armorStand);
                            Entity armor = (Entity) armorStand;
                            if (armor.getPassenger() == null && key.getItemId() != null) {
                                Item item = Bukkit.getWorld(key.getPosition().getWorld()).dropItem(armor.getLocation(), new ItemStack(key.getItemId()));
                                item.setTicksLived(Integer.MAX_VALUE);
                                item.setPickupDelay(Integer.MAX_VALUE);
                                armor.setPassenger(item);
                            }
                        }
                        if (entity instanceof Villager) {
                            ((Villager) entity).setProfession(Villager.Profession.FARMER);
                        }
                        MobSelector.getInstance().unstableEntity(entity);
                        entity.setCustomNameVisible(true);
                        entity.setCustomName(ChatColor.translateAlternateColorCodes('&', key.getDisplay()));
                        MobSelector.MobImpl mob = new MobSelector.MobImpl(key.getUniqueId(), key, entity, MobSelector.getInstance().create(mobConfig, key), new HashMap<>(), armorStand);
                        Bukkit.getPluginManager().callEvent(new BukkitMobInitEvent(mob));
                        return mob;
                    }
                }));
            }
        });
        mobSelector.init();
    }
}
Also used : HashMap(java.util.HashMap) ServerInfo(de.dytanic.cloudnet.lib.server.info.ServerInfo) BukkitMobInitEvent(de.dytanic.cloudnet.bridge.event.bukkit.BukkitMobInitEvent) MobSelector(de.dytanic.cloudnet.bridge.internal.serverselectors.MobSelector) ServerMob(de.dytanic.cloudnet.lib.serverselectors.mob.ServerMob) TypeToken(com.google.gson.reflect.TypeToken) UUID(java.util.UUID) MobConfig(de.dytanic.cloudnet.lib.serverselectors.mob.MobConfig) ItemStack(org.bukkit.inventory.ItemStack)

Example 37 with TypeToken

use of com.google.gson.reflect.TypeToken in project CloudNet by Dytanic.

the class CloudAPI method getOnlinePlayers.

/**
 * Returns all OnlinePlayers on Network
 */
public Collection<CloudPlayer> getOnlinePlayers() {
    Result result = networkConnection.getPacketManager().sendQuery(new PacketAPIOutGetPlayers(), networkConnection);
    Collection<CloudPlayer> cloudPlayers = result.getResult().getObject("players", new TypeToken<Collection<CloudPlayer>>() {
    }.getType());
    if (cloudPlayers == null)
        return new ArrayList<>();
    for (CloudPlayer cloudPlayer : cloudPlayers) cloudPlayer.setPlayerExecutor(PlayerExecutorBridge.INSTANCE);
    return cloudPlayers;
}
Also used : TypeToken(com.google.gson.reflect.TypeToken) CloudPlayer(de.dytanic.cloudnet.lib.player.CloudPlayer) Result(de.dytanic.cloudnet.lib.network.protocol.packet.result.Result)

Example 38 with TypeToken

use of com.google.gson.reflect.TypeToken in project CloudNet by Dytanic.

the class CloudAPI method getOfflinePlayer.

/**
 * Returns a offline player which registerd or null
 *
 * @param name
 */
public OfflinePlayer getOfflinePlayer(String name) {
    CloudPlayer cloudPlayer = checkAndGet(name);
    if (cloudPlayer != null)
        return cloudPlayer;
    Result result = networkConnection.getPacketManager().sendQuery(new PacketAPIOutGetOfflinePlayer(name), networkConnection);
    return result.getResult().getObject("player", new TypeToken<OfflinePlayer>() {
    }.getType());
}
Also used : TypeToken(com.google.gson.reflect.TypeToken) CloudPlayer(de.dytanic.cloudnet.lib.player.CloudPlayer) Result(de.dytanic.cloudnet.lib.network.protocol.packet.result.Result)

Example 39 with TypeToken

use of com.google.gson.reflect.TypeToken in project CloudNet by Dytanic.

the class CloudFlareDatabase method add.

public void add(PostResponse postResponse) {
    if (postResponse == null)
        return;
    Document document = database.getDocument("cloudflare_cache_dnsrequests");
    if (document.contains("requests")) {
        Collection<String> responses = document.getObject("requests", new TypeToken<Collection<String>>() {
        }.getType());
        responses.add(postResponse.getId());
        document.append("requests", responses);
    } else {
        document.append("requests", new String[] { postResponse.getId() });
    }
    database.insert(document);
}
Also used : TypeToken(com.google.gson.reflect.TypeToken) Document(de.dytanic.cloudnet.lib.utility.document.Document) DatabaseDocument(de.dytanic.cloudnet.lib.database.DatabaseDocument)

Example 40 with TypeToken

use of com.google.gson.reflect.TypeToken in project CloudNet by Dytanic.

the class CloudFlareDatabase method remove.

public void remove(PostResponse postResponse) {
    Document document = database.getDocument("cloudflare_cache_dnsrequests");
    if (document.contains("requests")) {
        Collection<String> responses = document.getObject("requests", new TypeToken<Collection<String>>() {
        }.getType());
        responses.remove(postResponse.getId());
        document.append("requests", responses);
    } else {
        document.append("requests", new String[0]);
    }
    database.insert(document);
}
Also used : TypeToken(com.google.gson.reflect.TypeToken) Document(de.dytanic.cloudnet.lib.utility.document.Document) DatabaseDocument(de.dytanic.cloudnet.lib.database.DatabaseDocument)

Aggregations

TypeToken (com.google.gson.reflect.TypeToken)419 Gson (com.google.gson.Gson)178 Test (org.junit.Test)100 IOException (java.io.IOException)83 Map (java.util.Map)71 List (java.util.List)56 CloseableHttpResponse (org.apache.http.client.methods.CloseableHttpResponse)54 ArrayList (java.util.ArrayList)53 HashMap (java.util.HashMap)53 GsonBuilder (com.google.gson.GsonBuilder)45 File (java.io.File)34 Notebook (org.apache.zeppelin.notebook.Notebook)32 Type (java.lang.reflect.Type)31 FileNotFoundException (java.io.FileNotFoundException)29 Paragraph (org.apache.zeppelin.notebook.Paragraph)27 RestResponse (com.google.gerrit.acceptance.RestResponse)24 JsonElement (com.google.gson.JsonElement)24 JsonObject (com.google.gson.JsonObject)24 OutputStreamWriter (java.io.OutputStreamWriter)22 AbstractDaemonTest (com.google.gerrit.acceptance.AbstractDaemonTest)21