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 » 28 May 2013, 11:38
Sloth wrote:This is correct, Dwarven Berserker has trample.moomarc wrote:Thanks for the quick fix Sloth. Just came across another issue while testing further that I can't explain. I attacked the AI with a Dwarven Berserker and Alley Grifters. I then cast a Curtain of Light for the AI on each creature. The Berserker still dealt the combat damage while the Grifters were correctly didn't. I tested further on successive turns attacking with each individually then being blocked by the curtain, and each time the Berserker still dealt damage.

-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 » 28 May 2013, 13:02
Consider revised edition of input system: r21779 "No more concurrency".
My todo: (1) collect used threads when game ends, (2) Karn Liberated ultimate, (3) Game over under mind control, (4) AI vs AI is too fast
My todo: (1) collect used threads when game ends, (2) Karn Liberated ultimate, (3) Game over under mind control, (4) AI vs AI is too fast
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 » 28 May 2013, 13:37
Tried r21780, got this crash when starting a match (probably not connected to the previous issues), I restarted the game and tried another match and the second time it didn't crash:
- IllegalArgumentException | Open
- Code: Select all
Forge Version: 1.3.17-SNAPSHOT-r21780
Operating System: Linux 3.7.0-7-generic amd64
Java Version: 1.7.0_21 Oracle Corporation
java.lang.IllegalArgumentException: No element named EndCombat in enum PhaseType
at forge.game.phase.PhaseType.smartValueOf(PhaseType.java:68)
at forge.game.phase.PhaseType.parseRange(PhaseType.java:91)
at forge.card.spellability.SpellAbilityRestriction.setRestrictions(SpellAbilityRestriction.java:133)
at forge.card.ability.AbilityFactory.makeRestrictions(AbilityFactory.java:294)
at forge.card.ability.AbilityFactory.getAbility(AbilityFactory.java:201)
at forge.card.ability.AbilityFactory.getAbility(AbilityFactory.java:110)
at forge.card.cardfactory.CardFactoryUtil.addAbilityFactoryAbilities(CardFactoryUtil.java:2191)
at forge.card.cardfactory.CardFactory.buildAbilities(CardFactory.java:292)
at forge.card.cardfactory.CardFactory.getCard(CardFactory.java:238)
at forge.item.CardPrinted.toForgeCard(CardPrinted.java:249)
at forge.game.GameNew.preparePlayerLibrary(GameNew.java:137)
at forge.game.GameNew.newGame(GameNew.java:263)
at forge.game.MatchState.startRound(MatchState.java:108)
at forge.gui.home.sanctioned.CSubmenuConstructed$6.run(CSubmenuConstructed.java:134)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
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
- Programmer
- Posts: 3486
- Joined: 14 Mar 2011, 05:58
- Has thanked: 683 times
- Been thanked: 569 times
Re: Bug Reports (snapshot builds)
by Agetian » 28 May 2013, 13:44
By the way, the new input seems good so far, just played a couple matches, no threading-related issues yet, and overall the input seems a tad bit faster somehow. Good job, thanks, Max!
- 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 » 28 May 2013, 13:46
it's unrelated to previous issues, use a different deck or r21781
Yes, it is faster, because AI no longer uses inputs, and phases when players have no priority are skipped without updating UI.
Great, then the next beta will be "the best Forge ever"... again
There won't be any more threading issues - there remains only one thread that can manage inputs.Agetian wrote:By the way, the new input seems good so far, just played a couple matches, no threading-related issues yet, and overall the input seems a tad bit faster somehow. Good job, thanks, Max!
Yes, it is faster, because AI no longer uses inputs, and phases when players have no priority are skipped without updating UI.
Great, then the next beta will be "the best Forge ever"... again

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 lzy » 28 May 2013, 15:02
Description: Crash when copy the spell ture/burn using Melek, Izzet Paragon's ability, I cast just the burn part without fuse
by the way the fuse option should not appear when you cast a spell from a library
java. lang. RuntimeException: Not found which part to choose for ability Burn deals 2 damage to target creature or player. from card Burn (794)
at forge. Card. setSplitStateToPlayAbility(Card. java:8233)
at forge. game. player. HumanPlay. playSaWithoutPayingManaCost(HumanPlay. java:199)
at forge. game. player. PlayerControllerHuman. playSpellAbilityForFree(PlayerControllerHuman. java:111)
at forge. card. cardfactory. CardFactory. copySpellontoStack(CardFactory. java:214)
at forge. card. ability. effects. CopySpellAbilityEffect. resolve(CopySpellAbilityEffect. java:147)
at forge. card. ability. AbilityApiBased. resolve(AbilityApiBased. java:62)
at forge. card. ability. AbilityUtils. resolveApiAbility(AbilityUtils. java:1057)
at forge. card. ability. AbilityUtils. resolve(AbilityUtils. java:1034)
at forge. card. spellability. HumanPlaySpellAbility. fillRequirements(HumanPlaySpellAbility. java:108)
at forge. game. player. HumanPlay. playSpellAbilityNoStack(HumanPlay. java:241)
at forge. card. trigger. WrappedAbility. resolve(WrappedAbility. java:367)
at forge. card. ability. AbilityUtils. resolveApiAbility(AbilityUtils. java:1057)
at forge. card. ability. AbilityUtils. resolve(AbilityUtils. java:1034)
at forge. game. zone. MagicStack. resolveStack(MagicStack. java:618)
at forge. game. phase. PhaseHandler. startFirstTurn(PhaseHandler. java:747)
at forge. game. GameAction. mulligan(GameAction. java:1496)
at forge. game. MatchState$1. run(MatchState. java:128)
at java. util. concurrent. ThreadPoolExecutor. runWorker(Unknown Source)
at java. util. concurrent. ThreadPoolExecutor$Worker. run(Unknown Source)
at java. lang. Thread. run(Unknown Source)
by the way the fuse option should not appear when you cast a spell from a library
java. lang. RuntimeException: Not found which part to choose for ability Burn deals 2 damage to target creature or player. from card Burn (794)
at forge. Card. setSplitStateToPlayAbility(Card. java:8233)
at forge. game. player. HumanPlay. playSaWithoutPayingManaCost(HumanPlay. java:199)
at forge. game. player. PlayerControllerHuman. playSpellAbilityForFree(PlayerControllerHuman. java:111)
at forge. card. cardfactory. CardFactory. copySpellontoStack(CardFactory. java:214)
at forge. card. ability. effects. CopySpellAbilityEffect. resolve(CopySpellAbilityEffect. java:147)
at forge. card. ability. AbilityApiBased. resolve(AbilityApiBased. java:62)
at forge. card. ability. AbilityUtils. resolveApiAbility(AbilityUtils. java:1057)
at forge. card. ability. AbilityUtils. resolve(AbilityUtils. java:1034)
at forge. card. spellability. HumanPlaySpellAbility. fillRequirements(HumanPlaySpellAbility. java:108)
at forge. game. player. HumanPlay. playSpellAbilityNoStack(HumanPlay. java:241)
at forge. card. trigger. WrappedAbility. resolve(WrappedAbility. java:367)
at forge. card. ability. AbilityUtils. resolveApiAbility(AbilityUtils. java:1057)
at forge. card. ability. AbilityUtils. resolve(AbilityUtils. java:1034)
at forge. game. zone. MagicStack. resolveStack(MagicStack. java:618)
at forge. game. phase. PhaseHandler. startFirstTurn(PhaseHandler. java:747)
at forge. game. GameAction. mulligan(GameAction. java:1496)
at forge. game. MatchState$1. run(MatchState. java:128)
at java. util. concurrent. ThreadPoolExecutor. runWorker(Unknown Source)
at java. util. concurrent. ThreadPoolExecutor$Worker. run(Unknown Source)
at java. lang. Thread. run(Unknown Source)
- lzy
- Posts: 3
- Joined: 06 Feb 2013, 15:21
- Has thanked: 0 time
- Been thanked: 0 time
Re: Bug Reports (snapshot builds)
by mark » 28 May 2013, 19:44
I used Griselbrand to draw 2x7 cards in the AI's turn and in the AI's cleanup phase I am forced to discard my cards.
Re: Bug Reports (snapshot builds)
by tojammot » 28 May 2013, 22:59
Description: [describe what you were doing when the crash occurred]
-I was dueling and just killed the opponents creature. This error happens all the time but only on my 2nd quest, not my 1st
-I was dueling and just killed the opponents creature. This error happens all the time but only on my 2nd quest, not my 1st
- NullPointerException | Open
- Code: Select all
Forge Version: 1.3.16-r21506
Operating System: Windows 7 6.1 amd64
Java Version: 1.7.0_13 Oracle Corporation
java.lang.NullPointerException
at java.util.TreeMap.getEntry(Unknown Source)
at java.util.TreeMap.containsKey(Unknown Source)
at java.util.TreeMap$KeySet.contains(Unknown Source)
at forge.Card.hasProperty(Card.java:6026)
at forge.Card.isValid(Card.java:5162)
at forge.GameEntity.isValid(GameEntity.java:295)
at forge.card.trigger.TriggerChangesZone.performTest(TriggerChangesZone.java:78)
at forge.card.trigger.TriggerHandler.runSingleTrigger(TriggerHandler.java:328)
at forge.card.trigger.TriggerHandler.runWaitingTrigger(TriggerHandler.java:252)
at forge.card.trigger.TriggerHandler.runWaitingTriggers(TriggerHandler.java:193)
at forge.game.GameAction.checkStateEffects(GameAction.java:1059)
at forge.game.phase.PhaseHandler.handleBeginPhase(PhaseHandler.java:351)
at forge.gui.InputProxy$1.run(InputProxy.java:69)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Re: Bug Reports (snapshot builds)
by Agetian » 29 May 2013, 06:46
r21787: got this NPE:
Description: entered the Declare Attackers phase, might have already clicked on the first attacker (or not - I played fast so I'm not sure which came first, the exception or me declaring the attacker).
Description: entered the Declare Attackers phase, might have already clicked on the first attacker (or not - I played fast so I'm not sure which came first, the exception or me declaring the attacker).
- NullPointerException | Open
- Code: Select all
Forge Version: 1.3.17-SNAPSHOT-r21787
Operating System: Linux 3.7.0-7-generic amd64
Java Version: 1.7.0_21 Oracle Corporation
java.lang.NullPointerException
at forge.game.phase.CombatUtil.canAttackNextTurn(CombatUtil.java:910)
at forge.game.phase.CombatUtil.canAttack(CombatUtil.java:821)
at forge.game.phase.CombatUtil.canAttack(CombatUtil.java:807)
at forge.control.input.InputAttack.onCardSelected(InputAttack.java:134)
at forge.control.input.InputBase.selectCard(InputBase.java:70)
at forge.gui.InputProxy.selectCard(InputProxy.java:121)
at forge.gui.match.nonsingleton.CField.cardclickAction(CField.java:193)
at forge.gui.match.nonsingleton.CField.access$7(CField.java:182)
at forge.gui.match.nonsingleton.CField$8.mousePressed(CField.java:87)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280)
at java.awt.Component.processMouseEvent(Component.java:6502)
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:4489)
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:729)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
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:702)
at java.awt.EventQueue$4.run(EventQueue.java:700)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
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
- Programmer
- Posts: 3486
- Joined: 14 Mar 2011, 05:58
- Has thanked: 683 times
- Been thanked: 569 times
Re: Bug Reports (snapshot builds)
by moomarc » 29 May 2013, 09:44
Trying to concede in any multiplayer variant does nothing on the first few clicks then crashes with this NPE. Works fine in regular constructed matches.
- NullPointerException | Open
- Code: Select all
Forge Version: SVN
Operating System: Windows 7 6.1 x86
Java Version: 1.6.0_35 Sun Microsystems Inc.
java.lang.NullPointerException
at forge.gui.match.controllers.CDock.concede(CDock.java:91)
at forge.control.FControl$2.windowClosing(FControl.java:144)
at java.awt.Window.processWindowEvent(Unknown Source)
at javax.swing.JFrame.processWindowEvent(Unknown Source)
at java.awt.Window.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$400(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(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.AccessControlContext$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)
-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 » 29 May 2013, 10:02
Incorrect cleanup request and Howling Mine hanging the game - both fixed
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 » 30 May 2013, 03:10
r21828
AI cast Anoint on his Jolrael's Centaur. Since the Centaur has Shroud this is an illegal target and he shouldn't be allowed to do that. (The Anoint fizzled upon resolution.)
AI cast Anoint on his Jolrael's Centaur. Since the Centaur has Shroud this is an illegal target and he shouldn't be allowed to do that. (The Anoint fizzled upon resolution.)
- 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 Chris H. » 30 May 2013, 12:08
Description: I doubled clicked on the "Merrow Riverways" deck in the constructed mode deck editor after selecting the "Decks from quest shop" button.
- NoSuchElementException | Open
- Code: Select all
Forge Version: SVN
Operating System: Mac OS X 10.7.5 x86_64
Java Version: 1.6.0_45 Apple Inc.
java.util.NoSuchElementException
at com.google.common.collect.AbstractIterator.next(AbstractIterator.java:154)
at com.google.common.collect.Iterators.find(Iterators.java:775)
at com.google.common.collect.Iterables.find(Iterables.java:646)
at forge.deck.DeckgenUtil.getQuestEvent(DeckgenUtil.java:123)
at forge.deck.DeckgenUtil.showDecklist(DeckgenUtil.java:227)
at forge.gui.toolbox.FDeckChooser$1.mouseClicked(FDeckChooser.java:67)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
at java.awt.Component.processMouseEvent(Component.java:6385)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
at java.awt.Component.processEvent(Component.java:6147)
at java.awt.Container.processEvent(Container.java:2083)
at java.awt.Component.dispatchEventImpl(Component.java:4744)
at java.awt.Container.dispatchEventImpl(Container.java:2141)
at java.awt.Component.dispatchEvent(Component.java:4572)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4289)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210)
at java.awt.Container.dispatchEventImpl(Container.java:2127)
at java.awt.Window.dispatchEventImpl(Window.java:2489)
at java.awt.Component.dispatchEvent(Component.java:4572)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:710)
at java.awt.EventQueue.access$400(EventQueue.java:82)
at java.awt.EventQueue$2.run(EventQueue.java:669)
at java.awt.EventQueue$2.run(EventQueue.java:667)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:683)
at java.awt.EventQueue$3.run(EventQueue.java:681)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:680)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
-
Chris H. - Forge Moderator
- Posts: 6320
- Joined: 04 Nov 2008, 12:11
- Location: Mac OS X Yosemite
- Has thanked: 644 times
- Been thanked: 643 times
Re: Bug Reports (snapshot builds)
by Diogenes » 31 May 2013, 01:19
Last Rites generates a prompt to "discard 1 card" on resolution. There does not seem to be a way to discard more than one card. Mouse-over friendly - Last Rites.
If you select a card to discard, you may force the opponent to discard one (and only one) non-land card of your choice. If you click the "OK" button on the prompt, you will not discard any cards from your own hand and are able to force the opponent to discard any or all of the non-land cards in their hand.
If you select a card to discard, you may force the opponent to discard one (and only one) non-land card of your choice. If you click the "OK" button on the prompt, you will not discard any cards from your own hand and are able to force the opponent to discard any or all of the non-land cards in their hand.
Re: Bug Reports (snapshot builds)
by friarsol » 31 May 2013, 02:12
AI vs AI ends after game 2 (Can't press continue) even if both players have won one game. This wasn't the case yesterday or the day before perhaps.
Edit: Ok I just ran another one and it didn't happen. I don't know what was going on.
Edit: Ok I just ran another one and it didn't happen. I don't know what was going on.
- 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 27 guests