@Test public void testGetSerializable() throws Exception { initGame(); List<String> myList = ImmutableList.of("foo", "bar", "baz"); SimpleData temp = new SimpleData(1, 2.0, "foo", myList); DataContainer container = temp.toContainer(); Optional<SimpleData> fromContainer = container.getSerializable(of(), SimpleData.class); assertTrue(fromContainer.isPresent()); assertTrue(Objects.equal(fromContainer.get(), temp)); assertTrue(container.contains(of("myStringList"))); assertTrue(container.getStringList(of("myStringList")).get().equals(myList)); }
@Override public Optional<KeyLockData> from(DataContainer container) { if (container.contains(CraftBookKeys.KEY_LOCK.getQuery())) { return Optional.of(new KeyLockData(container.getSerializable(CraftBookKeys.KEY_LOCK.getQuery(), ItemStackSnapshot.class).get())); } return Optional.empty(); }
@Override public Optional<ICData> from(DataContainer container) { if (container.contains(CraftBookKeys.IC_DATA.getQuery())) { try { Class<SerializedICData> clazz = (Class<SerializedICData>) Class.forName(container.getString(DataQuery.of("ICDataClass")).orElse(SerializedICData.class.getName())); return Optional.of(new ICData(container.getSerializable(CraftBookKeys.IC_DATA.getQuery(), clazz).get())); } catch (ClassNotFoundException e) { e.printStackTrace(); } } return Optional.empty(); }
@Override public Optional<EmbeddedBlockBagData> from(DataContainer container) { if (container.contains(CraftBookKeys.EMBEDDED_BLOCK_BAG.getQuery())) { return Optional.of(new EmbeddedBlockBagData(container.getSerializable(CraftBookKeys.EMBEDDED_BLOCK_BAG.getQuery(), EmbeddedBlockBag.class).get())); } return Optional.empty(); }
@Override public Optional<HomeData> from(DataContainer container) { if (!container.contains(MyHomes.DEFAULT_HOME, MyHomes.HOMES)) { return Optional.empty(); } // Loads the structure defined in toContainer this.defaultHome = container.getSerializable(MyHomes.DEFAULT_HOME.getQuery(), Home.class).get(); // Loads the map of homes this.homes = Maps.newHashMap(); DataView homes = container.getView(MyHomes.HOMES.getQuery()).get(); for (DataQuery homeQuery : homes.getKeys(false)) { homes.getSerializable(homeQuery, Home.class) .ifPresent(home -> this.homes.put(homeQuery.toString(), home)); } return Optional.of(this); }