It is currently 13 Jul 2025, 00:32
   
Text Size

Bug Reports (snapshot builds)

Post MTG Forge Related Programming Questions Here

Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins

Re: Bug Reports (snapshot builds)

Postby moomarc » 15 Jan 2014, 07:02

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.
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.
-Marc
User avatar
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)

Postby 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)

Postby 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
Agetian
Programmer
 
Posts: 3488
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 570 times

Re: Bug Reports (snapshot builds)

Postby 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):
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)
And one more bug related to the Layout save/load feature: loading a match layout from the menu (Layout -> File -> Open...) causes the main part of the match screen (the battlefield, the hand, etc.) to disappear forever until you quit the game and reset/recreate the preferences. Trying to keep playing and loading another layout after the battlefield has disappeared may eventually cause the game to crash.

- Agetian
Agetian
Programmer
 
Posts: 3488
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 570 times

Re: Bug Reports (snapshot builds)

Postby 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.

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)

Postby 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.)
Diogenes
 
Posts: 201
Joined: 12 Jul 2012, 00:54
Has thanked: 39 times
Been thanked: 23 times

Re: Bug Reports (snapshot builds)

Postby Agetian » 17 Jan 2014, 14:43

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.)
Please check out r24321, explanation in the art thread. ;) Also, r24323 updates the art index numbering scheme in deck files.

- Agetian
Agetian
Programmer
 
Posts: 3488
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 570 times

Re: Bug Reports (snapshot builds)

Postby 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
Programmer
 
Posts: 3488
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 570 times

Re: Bug Reports (snapshot builds)

Postby Sloth » 18 Jan 2014, 19:07

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
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?
User avatar
Sloth
Programmer
 
Posts: 3498
Joined: 23 Jun 2009, 19:40
Has thanked: 125 times
Been thanked: 507 times

Re: Bug Reports (snapshot builds)

Postby Agetian » 18 Jan 2014, 19:32

Sloth wrote:
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
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?
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?...

- Agetian
Agetian
Programmer
 
Posts: 3488
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 570 times

Re: Bug Reports (snapshot builds)

Postby Sloth » 18 Jan 2014, 20:02

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?...
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.

EDIT: Fixed! The wrong sa was passed to AiCostDecision.

EDIT2: The source for infinite loops here is now also fixed.
User avatar
Sloth
Programmer
 
Posts: 3498
Joined: 23 Jun 2009, 19:40
Has thanked: 125 times
Been thanked: 507 times

Re: Bug Reports (snapshot builds)

Postby 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)

Postby 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
Agetian
Programmer
 
Posts: 3488
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 570 times

Re: Bug Reports (snapshot builds)

Postby 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.
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Bug Reports (snapshot builds)

Postby 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.
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

PreviousNext

Return to Developer's Corner

Who is online

Users browsing this forum: No registered users and 18 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 18 users online :: 0 registered, 0 hidden and 18 guests (based on users active over the past 10 minutes)
Most users ever online was 5050 on 26 Jun 2025, 06:02

Users browsing this forum: No registered users and 18 guests

Login Form