@Override protected Optional<BlockTypeData> buildContent(DataView container) throws InvalidDataException { BlockTypeData blockTypeData = new BlockTypeData(); blockTypeData.onBlock = container.getSerializable(DataQuery.of("OnBlock"), BlockState.class).orElse(null); blockTypeData.offBlock = container.getSerializable(DataQuery.of("OffBlock"), BlockState.class).orElse(null); if (blockTypeData.onBlock == null || blockTypeData.offBlock == null) { return Optional.empty(); } return Optional.of(blockTypeData); }
@Override protected Optional<KeyLockData> buildContent(DataView container) throws InvalidDataException { 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 protected Optional<EmbeddedBlockBagData> buildContent(DataView container) throws InvalidDataException { 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 protected Optional<ICData> buildContent(DataView container) throws InvalidDataException { 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<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); }
@Override protected Optional<HomeData> buildContent(DataView container) throws InvalidDataException { if (!container.contains(MyHomes.HOMES)) return Optional.empty(); HomeData data = new HomeDataImpl(); container.getView(MyHomes.HOMES.getQuery()) .get().getKeys(false).forEach(name -> data.homes().put(name.toString(), container.getSerializable(name, Home.class) .orElseThrow(InvalidDataException::new))); container.getSerializable(MyHomes.DEFAULT_HOME.getQuery(), Home.class).ifPresent(home -> { data.set(MyHomes.DEFAULT_HOME, home); }); return Optional.of(data); }