Bug Reports (snapshot builds)
Post MTG Forge Related Programming Questions Here
Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins
Re: Bug Reports (snapshot builds)
by moomarc » 15 Jan 2014, 07:02
No scripts have set info any more. They're read from edition files (/res/editions). If a card isn't listed in one of those then you can repro this. So simply copy an existing card. Give it a bogus name. Start a game and dev mode the card into play. Haven't tested, but that should work.Agetian wrote:P.S. Also, how can I reproduce this crash [easily enough] without having to switch over to the BNG branch so that I can test some things and see if they help?
P.P.S. Looked at the BNG scripts and it seems like they don't contain any set info inside them, so I guess the code should probably detect the absence of set information (which will indicate the lack of edition file) and work around cases like that gracefully. If my idea is right, I can try tweaking the code, but I'd still need a reliable way to reproduce the crash in order to be able to test effectively.
-Marc
-
moomarc - Pixel Commander
- Posts: 2091
- Joined: 04 Jun 2010, 15:22
- Location: Johannesburg, South Africa
- Has thanked: 371 times
- Been thanked: 372 times
Re: Bug Reports (snapshot builds)
by Max mtg » 15 Jan 2014, 07:18
Cards not listed under any edition are to be auto-assigned to special set defined in code - forge.card.CardEdition.UNKNOWN
Single class for single responsibility.
- Max mtg
- Programmer
- Posts: 1997
- Joined: 02 Jul 2011, 14:26
- Has thanked: 173 times
- Been thanked: 334 times
Re: Bug Reports (snapshot builds)
by Agetian » 15 Jan 2014, 07:37
Thanks for the info, guys! Will look into it!
EDIT: Ok, I reproduced the crash and attempted to fix it in r24277. I can't reproduce it the way I reproduced it before anymore. Please let me know if that fixes it on your end.
- Agetian
EDIT: Ok, I reproduced the crash and attempted to fix it in r24277. I can't reproduce it the way I reproduced it before anymore. Please let me know if that fixes it on your end.

- Agetian
- Agetian
- Programmer
- Posts: 3488
- Joined: 14 Mar 2011, 05:58
- Has thanked: 683 times
- Been thanked: 570 times
Re: Bug Reports (snapshot builds)
by Agetian » 17 Jan 2014, 13:43
r24318: (Assuming Play for Ante is enabled) it's impossible to use Amulet of Quoz. Clicking it does not activate its ability (it doesn't tap either).
P.S. While I'm speaking about ante - the ante display is still broken (as of right now, the ante tab does not display anything at all). Does anyone have an idea why?
A different, non-ante related bug: adding the "Power Range" filter in the deck editor causes this crash (CMC range and Toughness range cause similar crashes too):
- Agetian
P.S. While I'm speaking about ante - the ante display is still broken (as of right now, the ante tab does not display anything at all). Does anyone have an idea why?
A different, non-ante related bug: adding the "Power Range" filter in the deck editor causes this crash (CMC range and Toughness range cause similar crashes too):
- NullPointerException | Open
- Code: Select all
Forge Version: 1.5.11-SNAPSHOT-r${forge.revision}${forge.specialStatus} (mixed revisions detected; please update from the root directory)
Operating System: Linux 3.8.0-26-generic amd64
Java Version: 1.7.0_25 Oracle Corporation
java.lang.NullPointerException
at forge.gui.toolbox.FSkin$SkinnedSpinner.setFont(FSkin.java:2783)
at javax.swing.LookAndFeel.installColorsAndFont(LookAndFeel.java:208)
at javax.swing.plaf.basic.BasicSpinnerUI.installDefaults(BasicSpinnerUI.java:211)
at javax.swing.plaf.basic.BasicSpinnerUI.installUI(BasicSpinnerUI.java:118)
at javax.swing.JComponent.setUI(JComponent.java:655)
at javax.swing.JSpinner.setUI(JSpinner.java:187)
at javax.swing.JSpinner.updateUI(JSpinner.java:211)
at javax.swing.JSpinner.<init>(JSpinner.java:157)
at javax.swing.JSpinner.<init>(JSpinner.java:166)
at forge.gui.toolbox.FSkin$SkinnedSpinner.<init>(FSkin.java:2772)
at forge.gui.toolbox.FSpinner.<init>(FSpinner.java:35)
at forge.gui.toolbox.FSpinner.<init>(FSpinner.java:18)
at forge.gui.toolbox.FSpinner$Builder.build(FSpinner.java:26)
at forge.gui.toolbox.itemmanager.filters.ValueRangeFilter.addSpinner(ValueRangeFilter.java:103)
at forge.gui.toolbox.itemmanager.filters.ValueRangeFilter.buildWidget(ValueRangeFilter.java:62)
at forge.gui.toolbox.itemmanager.filters.ItemFilter.refreshWidget(ItemFilter.java:93)
at forge.gui.toolbox.itemmanager.ItemManager.addFilter(ItemManager.java:729)
at forge.gui.toolbox.itemmanager.CardManager$8.run(CardManager.java:140)
at forge.gui.GuiUtils$1.actionPerformed(GuiUtils.java:131)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
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.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
- Agetian
- Agetian
- Programmer
- Posts: 3488
- Joined: 14 Mar 2011, 05:58
- Has thanked: 683 times
- Been thanked: 570 times
Re: Bug Reports (snapshot builds)
by Agetian » 17 Jan 2014, 14:32
r24318: Got this NPE in showCard after two cards destroyed each other in combat (was playing Momir Basic with a 60-card basic land deck, if that matters):
EDIT: Tried to fix this with r24320 - not sure if the NPE guard in that spot is optimal though.
EDIT: Tried to fix this with r24320 - not sure if the NPE guard in that spot is optimal though.
- NullPointerException | Open
- Code: Select all
Forge Version: 1.5.11-SNAPSHOT-r${forge.revision}${forge.specialStatus} (mixed revisions detected; please update from the root directory)
Operating System: Linux 3.8.0-26-generic amd64
Java Version: 1.7.0_25 Oracle Corporation
java.lang.NullPointerException
at forge.gui.match.controllers.CPicture.showCard(CPicture.java:66)
at forge.gui.match.CMatchUI.setCard(CMatchUI.java:287)
at forge.gui.match.CMatchUI.setCard(CMatchUI.java:282)
at forge.view.arcane.CardPanelContainer$3.mouseMoved(CardPanelContainer.java:239)
at java.awt.Component.processMouseMotionEvent(Component.java:6550)
at javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3330)
at java.awt.Component.processEvent(Component.java:6274)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4505)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Last edited by Agetian on 17 Jan 2014, 14:39, edited 1 time in total.
- Agetian
- Programmer
- Posts: 3488
- Joined: 14 Mar 2011, 05:58
- Has thanked: 683 times
- Been thanked: 570 times
Re: Bug Reports (snapshot builds)
by Diogenes » 17 Jan 2014, 14:38
The user should have access to an unlimited quantity of basic lands in limited formats, but currently only receives twenty (plus any opened in packs.)
Re: Bug Reports (snapshot builds)
by Agetian » 17 Jan 2014, 14:43
Please check out r24321, explanation in the art thread.Diogenes wrote:The user should have access to an unlimited quantity of basic lands in limited formats, but currently only receives twenty (plus any opened in packs.)

- Agetian
- Agetian
- Programmer
- Posts: 3488
- Joined: 14 Mar 2011, 05:58
- Has thanked: 683 times
- Been thanked: 570 times
Re: Bug Reports (snapshot builds)
by Agetian » 18 Jan 2014, 15:47
r24348: The game hung on Before Combat phase after the AI used Proliferate of Volt Charge. It succesfully added a counter to its Sphere of the Suns and it seems like it then tried to add a counter to Inkmoth Nexus, which it couldn't do, and got stuck in some kind of an endless loop. The console output was continuously spammed with "Not enough CHARGE on Inkmoth Nexus" until I terminated the game.
- Agetian
- Agetian
- Agetian
- Programmer
- Posts: 3488
- Joined: 14 Mar 2011, 05:58
- Has thanked: 683 times
- Been thanked: 570 times
Re: Bug Reports (snapshot builds)
by Sloth » 18 Jan 2014, 19:07
The message "Not enough ... on ..." is in the remove counters part of AiCostDecision. So i don't think it's related to Proliferate. What else was on the battlefield?Agetian wrote:r24348: The game hung on Before Combat phase after the AI used Proliferate of Volt Charge. It succesfully added a counter to its Sphere of the Suns and it seems like it then tried to add a counter to Inkmoth Nexus, which it couldn't do, and got stuck in some kind of an endless loop. The console output was continuously spammed with "Not enough CHARGE on Inkmoth Nexus" until I terminated the game.
- Agetian
-
Sloth - Programmer
- Posts: 3498
- Joined: 23 Jun 2009, 19:40
- Has thanked: 125 times
- Been thanked: 507 times
Re: Bug Reports (snapshot builds)
by Agetian » 18 Jan 2014, 19:32
Hmm, the weird part was that there was nothing really special. The AI had two Mountains, an Inkmoth Nexus, and a Sphere of the Suns in play. I was playing a red deck wins deck, so I also had a few (three, I think) Mountains in play, I had a Goblin King in play and nothing else. It was pretty early in the game. Could it be that it was trying to do something from its hand (like cast an Instant of some sort) and got stuck in a loop?...Sloth wrote:The message "Not enough ... on ..." is in the remove counters part of AiCostDecision. So i don't think it's related to Proliferate. What else was on the battlefield?Agetian wrote:r24348: The game hung on Before Combat phase after the AI used Proliferate of Volt Charge. It succesfully added a counter to its Sphere of the Suns and it seems like it then tried to add a counter to Inkmoth Nexus, which it couldn't do, and got stuck in some kind of an endless loop. The console output was continuously spammed with "Not enough CHARGE on Inkmoth Nexus" until I terminated the game.
- Agetian
- Agetian
- Agetian
- Programmer
- Posts: 3488
- Joined: 14 Mar 2011, 05:58
- Has thanked: 683 times
- Been thanked: 570 times
Re: Bug Reports (snapshot builds)
by Sloth » 18 Jan 2014, 20:02
After some testing i'm sure it's Sphere of the Suns. There has to be something mixed up with the source of the mana ability and the source of the spell/ability to activate.Agetian wrote:Hmm, the weird part was that there was nothing really special. The AI had two Mountains, an Inkmoth Nexus, and a Sphere of the Suns in play. I was playing a red deck wins deck, so I also had a few (three, I think) Mountains in play, I had a Goblin King in play and nothing else. It was pretty early in the game. Could it be that it was trying to do something from its hand (like cast an Instant of some sort) and got stuck in a loop?...
EDIT: Fixed! The wrong sa was passed to AiCostDecision.
EDIT2: The source for infinite loops here is now also fixed.
-
Sloth - Programmer
- Posts: 3498
- Joined: 23 Jun 2009, 19:40
- Has thanked: 125 times
- Been thanked: 507 times
Re: Bug Reports (snapshot builds)
by Devilman06 » 19 Jan 2014, 07:08
seems to pop up randomly with various decks in commander mode? not sure if it is something in my setup or what? always fatal crash which is really annoying mid-game
- ConcurrentModificationException | Open
- Code: Select all
Forge Version: 1.5.11-SNAPSHOT-r${forge.revision}${forge.specialStatus} (mixed revisions detected; please update from the root directory)
Operating System: Windows 7 6.1 x86
Java Version: 1.7.0_51 Oracle Corporation
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at com.google.common.collect.AbstractMapBasedMultimap$Itr.next(AbstractMapBasedMultimap.java:1150)
at forge.game.combat.Combat.getAttackers(Combat.java:197)
at forge.gui.match.TargetingOverlay.assembleArcs(TargetingOverlay.java:244)
at forge.gui.match.TargetingOverlay.access$300(TargetingOverlay.java:53)
at forge.gui.match.TargetingOverlay$OverlayPanel.paintComponent(TargetingOverlay.java:351)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JLayeredPane.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JLayeredPane.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager$3.run(Unknown Source)
at javax.swing.RepaintManager$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.access$1100(Unknown Source)
at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
- Devilman06
- Posts: 127
- Joined: 29 Jan 2010, 03:59
- Has thanked: 1 time
- Been thanked: 2 times
Re: Bug Reports (snapshot builds)
by Agetian » 20 Jan 2014, 06:14
r24369: Game log entries for casting spells or activating abilities that have targets are not formed correctly. For some reason, the names of targets are not shown, so, for instance, the log entry will always read something like:
Player cast Lightning Bolt targeting .
(the name of the actual target is omitted).
The relevant code is located at GameLogFormatter.java:71, but I don't really understand which part exactly fails.
- Agetian
Player cast Lightning Bolt targeting .
(the name of the actual target is omitted).
The relevant code is located at GameLogFormatter.java:71, but I don't really understand which part exactly fails.
- Agetian
- Agetian
- Programmer
- Posts: 3488
- Joined: 14 Mar 2011, 05:58
- Has thanked: 683 times
- Been thanked: 570 times
Re: Bug Reports (snapshot builds)
by friarsol » 21 Jan 2014, 00:34
r24386
I have a few issues with Quest Deck Editor/Spell Shop, that I don't know if still is in the plans of getting fixed or what the deal is, but I believe all this stuff worked a few weeks ago, and doesn't seem to anymore.
1) Column order remembering. I prefer my "New" and "Price" columns to be on the right, but right now it resets to the left, no matter how many times I drag it to the right, it always reverts right back next time I open it up.
2) Adding cards to the sideboard when your mainboard is open (rightclicking) doesn't remove the card from your trunk. It seems to properly remove the card from your trunk, because if you save, close, and reopen, the card you added to the sideboard isn't in your trunk anymore, but the lack of updating is very confusing. And can lead to scenarios where it looks like you have two of the same card, but don't.
3) Card Catalog Column preferences are broken. I'd much rather not see lots of these columns, but currently the preference panel is just full of empty checkboxes, and checking/unchecking them doesn't seem to do anything.
I have a few issues with Quest Deck Editor/Spell Shop, that I don't know if still is in the plans of getting fixed or what the deal is, but I believe all this stuff worked a few weeks ago, and doesn't seem to anymore.
1) Column order remembering. I prefer my "New" and "Price" columns to be on the right, but right now it resets to the left, no matter how many times I drag it to the right, it always reverts right back next time I open it up.
2) Adding cards to the sideboard when your mainboard is open (rightclicking) doesn't remove the card from your trunk. It seems to properly remove the card from your trunk, because if you save, close, and reopen, the card you added to the sideboard isn't in your trunk anymore, but the lack of updating is very confusing. And can lead to scenarios where it looks like you have two of the same card, but don't.
3) Card Catalog Column preferences are broken. I'd much rather not see lots of these columns, but currently the preference panel is just full of empty checkboxes, and checking/unchecking them doesn't seem to do anything.
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Bug Reports (snapshot builds)
by friarsol » 21 Jan 2014, 01:37
Another one I just noticed, same revision:
When I only have one card in hand, it tries to full size that card instead of just leaving it in the same size it was. This blows it up past my size limits, adding both horizontal and vertical scrollbars.
http://imgur.com/b4BZiND
But when I draw a second card, it resizes the cards down so no scrollbars are necessary.
When I only have one card in hand, it tries to full size that card instead of just leaving it in the same size it was. This blows it up past my size limits, adding both horizontal and vertical scrollbars.
http://imgur.com/b4BZiND
But when I draw a second card, it resizes the cards down so no scrollbars are necessary.
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Who is online
Users browsing this forum: No registered users and 18 guests