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 friarsol » 17 Feb 2014, 14:51
Thanks. Yea it was using devmode. It's much easier to test new cards this way, so I'm glad it works as I expect when going through this route.
- 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 » 17 Feb 2014, 23:16
r24884
Quest Mode Matches seem to be broken currently. As soon as the game starts (after mulliganing) the game ends and I'm told I won (Actually looking at the log, we both win and lose simultaneously). Then when the next game starts, I'm told I lost the last game and asked if I want to play/draw. Then when that game starts I get this crash:
java.lang.NullPointerException
at forge.gui.match.QuestWinLose.awardEventCredits(QuestWinLose.java:328)
at forge.gui.match.QuestWinLose.populateCustomPanel(QuestWinLose.java:157)
at forge.gui.match.ViewWinLose.<init>(ViewWinLose.java:116)
at forge.control.FControlGameEventHandler$6.run(FControlGameEventHandler.java:145)
I guess because the loss states are all messed up.
Quest Mode Matches seem to be broken currently. As soon as the game starts (after mulliganing) the game ends and I'm told I won (Actually looking at the log, we both win and lose simultaneously). Then when the next game starts, I'm told I lost the last game and asked if I want to play/draw. Then when that game starts I get this crash:
java.lang.NullPointerException
at forge.gui.match.QuestWinLose.awardEventCredits(QuestWinLose.java:328)
at forge.gui.match.QuestWinLose.populateCustomPanel(QuestWinLose.java:157)
at forge.gui.match.ViewWinLose.<init>(ViewWinLose.java:116)
at forge.control.FControlGameEventHandler$6.run(FControlGameEventHandler.java:145)
I guess because the loss states are all messed up.
- 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 VIESCA » 17 Feb 2014, 23:39
Description: I WAS USSING THE DECK EDITOR
- UncheckedExecutionException | Open
- Code: Select all
Forge Version: 1.5.12-r${forge.revision}${forge.specialStatus} (mixed revisions detected; please update from the root directory)
Operating System: Windows XP 5.1 x86
Java Version: 1.7.0_51 Oracle Corporation
com.google.common.util.concurrent.UncheckedExecutionException: java.lang.ArrayIndexOutOfBoundsException: -1
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2199)
at com.google.common.cache.LocalCache.get(LocalCache.java:3932)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3936)
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4806)
at forge.ImageCache.getImage(ImageCache.java:231)
at forge.ImageCache.getOriginalImage(ImageCache.java:152)
at forge.ImageCache.scaleImage(ImageCache.java:192)
at forge.ImageCache.getImage(ImageCache.java:110)
at forge.gui.toolbox.itemmanager.views.ImageView$CardViewDisplay.drawItemImage(ImageView.java:976)
at forge.gui.toolbox.itemmanager.views.ImageView$CardViewDisplay.paintComponent(ImageView.java:946)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JViewport.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at forge.gui.toolbox.FScrollPane.paint(FScrollPane.java:66)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JViewport.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
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.BufferStrategyPaintManager.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)
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.checkTablesOnly(Unknown Source)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.gotoImage(Unknown Source)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readHeader(Unknown Source)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(Unknown Source)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(Unknown Source)
at javax.imageio.ImageIO.read(Unknown Source)
at javax.imageio.ImageIO.read(Unknown Source)
at forge.ImageLoader._findFile(ImageLoader.java:88)
at forge.ImageLoader.load(ImageLoader.java:66)
at forge.ImageLoader.load(ImageLoader.java:16)
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3522)
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2315)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2278)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2193)
... 69 more
- Attachments
-
2014-02-17-00.txt
- I WAS USSING THE GIFT OR INMORTALITY
- (3.6 KiB) Downloaded 293 times
- VIESCA
- Posts: 1
- Joined: 17 Feb 2014, 22:42
- Has thanked: 0 time
- Been thanked: 0 time
Re: Bug Reports (snapshot builds)
by moomarc » 18 Feb 2014, 01:18
Sorry, that must have been me trying to get team victories working. I won't be on again until Wednesday, but r24881 and r24882 need to be reverted. Alternatively, I think the issue is that I checked the team values against -1, which works great with constructed matches because they assign team numbers, but -1 was the default value for team before.friarsol wrote:r24884
Quest Mode Matches seem to be broken currently. As soon as the game starts (after mulliganing) the game ends and I'm told I won (Actually looking at the log, we both win and lose simultaneously). Then when the next game starts, I'm told I lost the last game and asked if I want to play/draw. Then when that game starts I get this crash:
java.lang.NullPointerException
at forge.gui.match.QuestWinLose.awardEventCredits(QuestWinLose.java:328)
at forge.gui.match.QuestWinLose.populateCustomPanel(QuestWinLose.java:157)
at forge.gui.match.ViewWinLose.<init>(ViewWinLose.java:116)
at forge.control.FControlGameEventHandler$6.run(FControlGameEventHandler.java:145)
I guess because the loss states are all messed up.
So either revert or try change GameOutcome.getWinningTeam to return 0 instead, and in ViewWinLose compare winningTeam != 0. Or if anyone can implement team victories better, that would be awesome.
-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 friarsol » 18 Feb 2014, 01:47
I'll take a look marc. It should be simpler to just make sure all Players end up on different teams even if they don't go through the Constructed match UI.
- 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 » 18 Feb 2014, 02:27
r24886
Rite of Passage doesn't seem to interact with Persist creatures dying due to damage, when they return to the battlefield the Rite trigger still affects them even though they are a different game object. This pretty apparent playing against the Apu Quest deck.
Rite of Passage doesn't seem to interact with Persist creatures dying due to damage, when they return to the battlefield the Rite trigger still affects them even though they are a different game object. This pretty apparent playing against the Apu Quest deck.
- 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 » 18 Feb 2014, 02:55
Hey Max, what's the deal with checkin 24886? That's kind of a cryptic description, and now I'm playing against Treebard Quest deck, and he has a Bosk Banneret in play and 3 lands and is tapping out during M2, but not casting any cards. I looked at the AIs hand and he has two 5 CMC cards in hand. Was this intentionally put in to test some code?
It looks like cards are being just.. removed from his hand and not going anywhere in these circumstances?
It looks like cards are being just.. removed from his hand and not going anywhere in these circumstances?
- 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 Max mtg » 18 Feb 2014, 09:09
The objective of this change is to have AI tests use a separate list of mana. (not the one returned by sa.getPayingMana())
That what you've seen is a rare situation when AI though it would be able to pay the mana cost but apparently could not.
That what you've seen is a rare situation when AI though it would be able to pay the mana cost but apparently could not.
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 swordshine » 18 Feb 2014, 11:55
Prompt string "Multikicker for" didn't show up for multikicker cards.
- swordshine
- Posts: 682
- Joined: 11 Jul 2010, 02:37
- Has thanked: 116 times
- Been thanked: 87 times
Re: Bug Reports (snapshot builds)
by friarsol » 18 Feb 2014, 13:03
Well, it seemed to be happening everytime the AI tried to cast something that match when he had a cost reducing permanent in play, where the cost reduction was being used to cast the spell (3 mana available from lands, cost reduced by 1, cmc 4), which isn't the most common scenario, but I also wouldn't necessarily call it rare.Max mtg wrote:That what you've seen is a rare situation when AI though it would be able to pay the mana cost but apparently could not.
- 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 swordshine » 18 Feb 2014, 13:21
AI Commander doesn't suffer the cost raise effect. It's very unfairMax mtg wrote:The objective of this change is to have AI tests use a separate list of mana. (not the one returned by sa.getPayingMana())
That what you've seen is a rare situation when AI though it would be able to pay the mana cost but apparently could not.

- swordshine
- Posts: 682
- Joined: 11 Jul 2010, 02:37
- Has thanked: 116 times
- Been thanked: 87 times
Re: Bug Reports (snapshot builds)
by Max mtg » 18 Feb 2014, 23:35
Yes, AI had some incorrect cost calculation code. I believe I've fixed it (24901)
There's another bug, that is quite puzzling for me:
Give AI Goblin Electromancer, put an Island into play for AI, add Mana Leak to its hand. The cast some spell so that AI could counter.
The strange point here is that I am asked to pay
- not
as the card rules read. Was the cost of 'unless its contoller pays
' reduced by Goblin Electromancer?
There's another bug, that is quite puzzling for me:
Give AI Goblin Electromancer, put an Island into play for AI, add Mana Leak to its hand. The cast some spell so that AI could counter.
The strange point here is that I am asked to pay



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 friarsol » 19 Feb 2014, 00:02
The Electromancer definitely shouldn't be reducing the unless cost. I just downloaded the last release (1.5.12), and when Mana Leak is played in this scenario I'm prompted to pay 3, so something since the release is causing that issue.Max mtg wrote:Yes, AI had some incorrect cost calculation code. I believe I've fixed it (24901)
There's another bug, that is quite puzzling for me:
Give AI Goblin Electromancer, put an Island into play for AI, add Mana Leak to its hand. The cast some spell so that AI could counter.
The strange point here is that I am asked to pay- not
as the card rules read. Was the cost of 'unless its contoller pays
' reduced by Goblin Electromancer?
- 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 Agetian » 23 Feb 2014, 06:27
r24942: I noticed a UI issue with the deck viewer: the deck viewer changes its size when you look at different cards, so it becomes bigger and smaller all the time, which is quite irritating. I think this is caused by the card detail box shrinking and enlarging depending on the length of the card name (as far as I could tell). A good way to reproduce: load some Mono-Blue Devotion deck, such as the one by Pierre Dagen from Pro Tour Theros, for viewing in the deck viewer (e.g. double-click it in the Constructed deck list). Look at Master of Waves and then at Thassa, God of the Sea.
- Agetian
- Agetian
- Agetian
- Programmer
- Posts: 3486
- Joined: 14 Mar 2011, 05:58
- Has thanked: 683 times
- Been thanked: 569 times
Re: Bug Reports (snapshot builds)
by Max mtg » 23 Feb 2014, 14:13
I hope this is no longer an issue after r24950.friarsol wrote:The Electromancer definitely shouldn't be reducing the unless cost. I just downloaded the last release (1.5.12), and when Mana Leak is played in this scenario I'm prompted to pay 3, so something since the release is causing that issue.Max mtg wrote:Yes, AI had some incorrect cost calculation code. I believe I've fixed it (24901)
There's another bug, that is quite puzzling for me:
Give AI Goblin Electromancer, put an Island into play for AI, add Mana Leak to its hand. The cast some spell so that AI could counter.
The strange point here is that I am asked to pay- not
as the card rules read. Was the cost of 'unless its contoller pays
' reduced by Goblin Electromancer?
Single class for single responsibility.
- Max mtg
- Programmer
- Posts: 1997
- Joined: 02 Jul 2011, 14:26
- Has thanked: 173 times
- Been thanked: 334 times
Who is online
Users browsing this forum: Google [Bot] and 55 guests