Roll20 / Roll20/roll20-api-scripts
PCGenPFImport export doesn't work properly
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 407
- Forks
- 602
- Avg merge
- 7d 55m
- Merged PRs (30d)
- 18
Description
I suspect that this is due to the new version of PCGen since the original creation of the script, but when I try to export my character from PCGen using the csheet_pathfinder_roll20.txt.ftl script, I get the following error:
14:12:12.387 INFO main Main:140 Starting PCGen v6.07.05
14:12:12.500 INFO main LanguageBundle:133 Initialising language bundle with locale en_US.
14:12:19.432 WARNING Plugin-loading-thread PluginClassLoader:153 Plugin not found in Function-GETFACT.jar
14:12:49.149 INFO Thread-6 SourceFileLoader:555 Loading game Pathfinder_RPG and sources [Advanced Player's Guide, Ultimate Equipment, Ultimate Combat, Ultimate Magic, Advanced Class Guide, Advanced Race Guide, Inner Sea World Guide, Pathfinder RPG for Players, Ultimate Campaign, Weapon Master's Handbook, Inner Sea Primer, Adventurer's Armory, Inner Sea Gods, Inner Sea Magic, Inner Sea Combat, Blood of Angels].
14:13:16.204 INFO AWT-EventQueue-0 CharacterManager:200 Loaded character Lucien - C:\Users\eplossl\Documents\Pathfinder\Lucien (fixed).pcg
14:14:03.490 SEVERE AWT-EventQueue-0 ExportHandler:344 Error exporting character using template C:\Users\eplossl\AppData\Local\PCGen\6.07.05\outputsheets\d20\fantasy\htmlxml\csheet_pathfinder_roll20.txt.ftl
freemarker.core.ParseException: Syntax error in template "csheet_pathfinder_roll20.txt.ftl" in line 742, column 116:
Encountered "<", but was expecting one of:
<STRING_LITERAL>
<RAW_STRING>
"false"
"true"
"."
"+"
"-"
"!"
"["
"("
")"
"{"
at freemarker.core.FMParser.generateParseException(FMParser.java:6358)
at freemarker.core.FMParser.jj_consume_token(FMParser.java:6217)
at freemarker.core.FMParser.MethodArgs(FMParser.java:1339)
at freemarker.core.FMParser.AddSubExpression(FMParser.java:1092)
at freemarker.core.FMParser.PrimaryExpression(FMParser.java:588)
at freemarker.core.FMParser.UnaryExpression(FMParser.java:634)
at freemarker.core.FMParser.MultiplicativeExpression(FMParser.java:749)
at freemarker.core.FMParser.AdditiveExpression(FMParser.java:701)
at freemarker.core.FMParser.RangeExpression(FMParser.java:881)
at freemarker.core.FMParser.RelationalExpression(FMParser.java:829)
at freemarker.core.FMParser.EqualityExpression(FMParser.java:792)
at freemarker.core.FMParser.AndExpression(FMParser.java:948)
at freemarker.core.FMParser.OrExpression(FMParser.java:970)
at freemarker.core.FMParser.Expression(FMParser.java:529)
at freemarker.core.FMParser.StringOutput(FMParser.java:1503)
at freemarker.core.FMParser.MixedContentElements(FMParser.java:3642)
at freemarker.core.FMParser.Root(FMParser.java:4275)
at freemarker.template.Template.(Template.java:248)
at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:549)
at freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:439)
at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:292)
at freemarker.template.Configuration.getTemplate(Configuration.java:2518)
at freemarker.template.Configuration.getTemplate(Configuration.java:2367)
at pcgen.io.ExportHandler.exportCharacterUsingFreemarker(ExportHandler.java:318)
at pcgen.io.ExportHandler.write(ExportHandler.java:222)
at pcgen.gui2.facade.CharacterFacadeImpl.export(CharacterFacadeImpl.java:2656)
at pcgen.system.BatchExporter.exportCharacterToNonPDF(BatchExporter.java:287)
at pcgen.gui2.dialog.ExportDialog.printToFile(ExportDialog.java:514)
at pcgen.gui2.dialog.ExportDialog.export(ExportDialog.java:414)
at pcgen.gui2.dialog.ExportDialog.doExport(ExportDialog.java:269)
at pcgen.gui2.dialog.ExportDialog.actionPerformed(ExportDialog.java:259)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:184)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:229)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:227)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:227)
at java.awt.Dialog.show(Dialog.java:1084)
at java.awt.Component.show(Component.java:1671)
at java.awt.Component.setVisible(Component.java:1623)
at java.awt.Window.setVisible(Window.java:1014)
at java.awt.Dialog.setVisible(Dialog.java:1005)
at pcgen.gui2.dialog.ExportDialog.showExportDialog(ExportDialog.java:102)
at pcgen.gui2.PCGenActionMap$ExportAction.actionPerformed(PCGenActionMap.java:842)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
I'm currently running PCGen version 6.07.05. I have not yet updated to 6.07.08, but that's on my list of things to do.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with csheet_pathfinder_roll20.txt.ftl and inspect the FreeMarker expression at line 742, where PCGen 6.07.05 reports a parse error during character export. Reproduce the export with the reported PCGen setup, then verify that the Pathfinder Roll20 character sheet exports successfully without a template parse error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100