private EntityRef createResultItem(String itemResult) { String resultText = itemResult; int count = 1; int starIndex = resultText.indexOf("*"); if (starIndex > -1) { count = Integer.parseInt(resultText.substring(0, starIndex)); resultText = resultText.substring(starIndex + 1); } EntityManager entityManager = CoreRegistry.get(EntityManager.class); BlockManager blockManager = CoreRegistry.get(BlockManager.class); PrefabManager prefabManager = CoreRegistry.get(PrefabManager.class); Prefab prefab = prefabManager.getPrefab(resultText); EntityRef result; if (prefab != null) { result = entityManager.create(prefab); ItemComponent item = result.getComponent(ItemComponent.class); item.stackCount = (byte) count; result.saveComponent(item); } else { BlockItemFactory blockItemFactory = new BlockItemFactory(entityManager); BlockFamily blockFamily = blockManager.getBlockFamily(resultText); result = blockItemFactory.newInstance(blockFamily, count); } return result; }
@Override public boolean step() { EntityManager entityManager = context.get(EntityManager.class); WorldRenderer worldRenderer = context.get(WorldRenderer.class); Iterator<EntityRef> worldEntityIterator = entityManager.getEntitiesWith(WorldComponent.class).iterator(); // TODO: Move the world renderer bits elsewhere if (worldEntityIterator.hasNext()) { EntityRef worldEntity = worldEntityIterator.next(); worldRenderer.getChunkProvider().setWorldEntity(worldEntity); // get the world generator config from the world entity // replace the world generator values from the components in the world entity WorldGenerator worldGenerator = context.get(WorldGenerator.class); WorldConfigurator worldConfigurator = worldGenerator.getConfigurator(); Map<String, Component> params = worldConfigurator.getProperties(); for (Map.Entry<String, Component> entry : params.entrySet()) { Class<? extends Component> clazz = entry.getValue().getClass(); Component comp = worldEntity.getComponent(clazz); if (comp != null) { worldConfigurator.setProperty(entry.getKey(), comp); } } } else { EntityRef worldEntity = entityManager.create(); worldEntity.addComponent(new WorldComponent()); worldRenderer.getChunkProvider().setWorldEntity(worldEntity); // transfer all world generation parameters from Config to WorldEntity WorldGenerator worldGenerator = context.get(WorldGenerator.class); SimpleUri generatorUri = worldGenerator.getUri(); Config config = context.get(Config.class); // get the map of properties from the world generator. // Replace its values with values from the config set by the UI. // Also set all the components to the world entity. WorldConfigurator worldConfigurator = worldGenerator.getConfigurator(); Map<String, Component> params = worldConfigurator.getProperties(); for (Map.Entry<String, Component> entry : params.entrySet()) { Class<? extends Component> clazz = entry.getValue().getClass(); Component comp = config.getModuleConfig(generatorUri, entry.getKey(), clazz); if (comp != null) { worldEntity.addComponent(comp); worldConfigurator.setProperty(entry.getKey(), comp); } else { worldEntity.addComponent(entry.getValue()); } } } return true; }